Unreal Engine Graphics
How We Can Help:
Blueprints – link data and build broadcast graphics in UE4
C++ Unreal Programming – working with native unreal code to give the most power and flexibility
Graphics Control and Automation – harness the power of Unreal Engine using our zero training interfaces to get on air
Virtual Studio Control – use Ignition VP to allow producers to search, build and control graphics
Show Support – maybe you just need someone to be there to support a live show?
With the arrival of Epic Games’ Unreal Engine into the broadcast world, the landscape has changed. Productions across the world now have access to the limitless possibilities that virtual sets have to offer, with beautiful photo-realistic quality at an incredibly affordable price point.
But what if you want to present real-time data as 3D elements in your virtual set? Most virtual set builds include time-consuming ‘baking’ processes – meaning anything existing in a set is fixed at the point of baking. One solution to this problem is to use a secondary traditional graphics renderer to composite 3D elements into the scene downstream of the virtual set renderer – this can become more costly as you are now introducing two different rendering technologies that both need to be fed the same camera tracking data (and key and fill if you need foreground elements).
But what if there was a better way, you ask? Well luckily for you, there is! At Idonix, we’ve been part of virtual set projects where we’ve built native Unreal graphic elements, then driven them via Ignition – our data crunching and graphical control interface. One recent project had budgeted for both an Unreal Engine virtual set, and composited foreground 3D graphics from a more traditional renderer – we were able to suggest and provide a complete solution within Unreal Engine, therefore saving a considerable amount of the client’s budget. Happy days!
We’ve been excited by the emergence of Unreal Engine in the broadcast world for some time, and have been diving head-first into the entire ecosystem for the last few years. As Unreal Engine is first and foremost a games engine, there are certain aspects of broadcast workflows that won’t be immediately obvious to those who work purely in that world. As programmers we love to adapt to new technologies and try new things, so we’re able to look objectively at Unreal and find the best solutions to live broadcast problems – or if there aren’t built in solutions, build them!
We’ve got experience of writing C++ projects - working with native unreal code to give the most power and flexibility. This lets us compile and build plugins to be used in Unreal Engine. An example of this in action is our Charting Plugins Bundle – a suite of charts that get you visualising data inside unreal (paired with our Ignition VP solution you can get fully featured virtual production up and running in no time at all)
We’ve also got experience of building graphics directly inside Unreal Engine’s blueprints system – this lets us quickly and effectively hook up complex data and drive animations into bespoke graphics. These blueprints can be developed in parallel with the virtual set build, then simply copied into the project when they’re ready. We’re able to drive these graphics in a number of ways and protocols – our favourite is to use Ignition to take care of everything, giving you a simple operating interface with all the data crunching power under the hood.
How do we do it?
We use our Unreal Engine expertise to build fully functional 3D graphics to spec, complete with animations and transitions. Our Main Controller graphics pattern is used to keep track of all graphic state within the virtual set, with each graphic in the environment implementing ‘Go In’, ‘Update’ and ‘Go Out’ methods.
Depending on the flavour of Unreal Engine being used, we have employed different control mechanisms, here are a few examples:
For older versions of Zero Density, we interface with their Reality Control suite via our ‘ZD Bridge’ application that acts as a communication layer between Ignition and Zero Density. Ignition posts data to the ZD Bridge, which is connected via the ZD SDK to a set of Engines. Our virtual set project then contains ZD Actors and ZD Functions that our ZD Bridge addresses, posts data into, then executes the relevant animation/transition according to our Main Controller’s logic.
Control of Voyager is done through their own interface – UX in previous versions, now Lucid Studio in more recent environments. Both allow the embedding of HTML for custom panels – we’ve written custom web pages for controlling our Unreal graphics, hosted from Ignition and calling into an Ignition API that then sends out JSON to associated graphics, or a Main Controller integration if necessary.
Alternatively Ignition can be used as a Datalinq source to bind data into Voyager graphics – then UX/Lucid can be used to trigger graphics in and out using events panel buttons.
As a plugin on top of native Unreal Engine, we can easily build graphics that work with Disguise – these graphics can either be driven directly from json data coming from Ignition, or via a Main Controller blueprint that manages the state of all graphics in the virtual set.
Similar to Disguise, we can build graphics for Aximmetry as native Unreal Engine blueprints that can be dragged and dropped into a virtual set project, driven by json from Ignition.
All our graphics are built as blueprints in Unreal Engine. This means that they are self-contained and are not tied to a particular Unreal project. This way, a virtual set can be being built in parallel with its graphics. Adding those graphics into a project is as simple as unzipping some files and dragging them in to the project file system (we like to suggest everything graphics related goes into an ‘Idonix’ folder in the project, so each update can simply re-write the entire contents of the Idonix folder and not interfere with anything else in the set).
Once inside a virtual set, the positioning of graphics is important, and something that you often can’t get right until you see them in-studio. As such, we provide a live-tweaking interface in Ignition – so that re-positioning graphics doesn’t require a complete re-bake of the project.
Ignition is the perfect control interface for driving graphics in Unreal Engine – not only is it great at ingesting data from different sources, it has a great TX control interface for ease of use. But that’s not all Ignition can do – there’s also great user management, data monitoring & logging, supplementary information screens for feeding on-set prompt monitors, web-based or windows-based talent interfaces for presenters to TX their own graphics, and even over-arching show control features such as sending midi signals to trigger sound effects, OSC commands to lighting desks and triggering virtual-set lighting changes or set-pieces.