Unreal Filmmaking: Building a Virtual Set

Anthony Koithra
Locodrome
Published in
6 min readNov 14, 2022

This is the second diary entry on pre-production for Project Rogue (you can read the first here, and about production here and here.) and will focus on virtual set-building, kitbashing and preparing assets for production in Unreal Engine 5.

One of the reasons I liked the concept of recreating the Top Gun opening with X-Wings as an exercise was the limited scope of it: A single location, no dialogue and minimal close-up shots of faces. Not getting into detailed facial animation, acting and building multiple virtual locations meant I could focus on the basics of animated filmmaking — which I am still learning.

Building a virtual set is a lot like building a real set — except its a LOT easier. Apart from never having to hire a crane or a truck driver, you have almost unlimited access to millions of models and other assets that talented 3d creators have put up on the Unreal Marketplace, and other asset repositories. The core concept is commonly referred to as ‘kitbashing’ which takes its name from the old-school practice of combining existing plastic model kits of airplanes and trains to build new designs — commonly used by concept artists in older productions.

Some of the components from the amazing Mech Squad kit from BigMediumSmall designed by Min Guen (image property of BigMediumSmall)

Modern kitbashing lets you collect highly detailed asset kits from places like BigMediumSmall and Kitbash3D, built by the same artists and designed to work with other components from the same kit and then combine them to make whatever you want. With the right set of complex machine parts, hoses, ladders, gantries and floor plates, you can even build an X-Wing hangar inside an asteroid.

Interior view of the Project Rogue hangar set

The shell of the station and the asteroids came from a mining station asset that I found while trawling through the Unreal Marketplace. The big red planet is a customizable Blueprint asset (more on these later), also from the marketplace. And the background starfield is actually a very large spherical object called a SkySphere with a customizable layer of stars and colored nebulae. Selecting the assets, putting them together, customizing their looks, scaling them to approximately realistic distances and sizes (100k+ kilometres apart), and then lighting them so they make sense together is the magic of kitbashing.

Exterior rotation of the Project Rogue set (dithering is due to GIF compression)

The interior of the hangar is a combination of several different kits and assets from the Marketplace, BigMediumSmall and Kitbash3D. Some are as easy as drag and drop — others require a little work and fiddling before they are ready for use. But its always better than trying to build it all from scratch, obviously.

I built out the main layout with floor plates, and then built a single X-Wing landing bay, with lights and a maintenance frame behind it. After making sure it worked with my X-Wing model, I duplicated it several times for the other bays. Then when I placed one of my human models in the set for the first time, I found that the holes in the floor plates were so large that the human model’s feet would fall through them — and so had to significantly scale down the floor plates and put a lot more of them in. Reference really is everything in this stage of building a virtual set.

While there isn’t a control tower shot in the original, I’ve always thought there should be — and I couldn’t resist having a shot or two with glowing digital screens reflected in glass space helmets. So I also built out a “control room” area in the rear center of the hangar — screens on screens on screens, with lots of cables and big honking computer equipment.

The nerve center of Rogue Squadron operations

Reality is messy and asymmetrical, so wherever possible I introduced irregularity and variation — randomly placed red boxes (I mean, photon torpedo storage), differently rotated cranes, irregular cables and piping — anything that makes the scene feel less copy-and-pasted.

The final touches include VFX like steam, and decals like the Rogue Squadron logo — sometimes you only realize the need for things like this partway through production. The nice thing about real-time environments like Unreal is being able to quickly drop in a new asset and instantly re-render your shot, versus pushing a shot back through a long and painful pipeline.

Blueprints are your friend: repeat-use units with customizable components and functions

While you can always assemble parts in the main scene Outliner, it’s a lot easier to build a custom component once, and then re-use it several times — like I did with the crew member above. This is a Blueprint, which is an Unreal asset that combines geometry and code. Mine is a very simple Blueprint — there are a couple of meshes (the male character model from Mech Squad and a helmet mesh from a different kit that I customized) in a pre-aligned and pre-scaled configuration that I can re-use. More advanced Blueprints can have parameters that you can animate over time and lots of other fancy special features. It’s like writing a reusable function in code.

I did the same thing with the X-Wings. I found one beautiful high-poly model by Charles Woods on Sketchfab, but the textures were made to look a little too damaged for what I was looking for. The cockpit however, was beautifully detailed, so I ended up pulling that out and placing it in a different X-Wing model by Steve Dowdy, on CGTrader. This other model also had a moveable undercarriage assembly, which I definitely wanted for shots inside the hangar. I made separate Blueprints for X-Wings sitting in the bay (no undercarriage movement, no pilot), X-Wings taxiing in for landing (moveable undercarriage, pilot), and X-Wings in flight outside the hangar (no undercarriage at all, pilot).

Separate Blueprints for no pilot, female pilot, male pilot

This sort of preparation in pre-production speeds up production significantly, but it is possible to over-prepare — and surprise, surprise, I definitely did this on Project Rogue. For specific types of standardized movement, you can create what is called a Control Rig in Unreal — this is a rigged set of controls that you can grab and move to drive the movement of part of the model — a bit like the strings of a puppet. You can build logical functions in a node graph to define how things move in relation to each other.

Wing Control Rig for X-Wing model in Project Rogue

I was able to easily set up Control Rigs for simple movements like opening the canopy or flaring the wings, but the complex set of piston movements required for the undercarriage is a bad use of the technique. I spent a week trying to figure out how to use a Control Rig to drive the undercarriage animation of my X-Wing models before giving up and just baking the animation into its own asset, which I can re-use easily.

Big takeaway 1: Don’t try to force-fit a tool or technique to an application it wasn’t designed for.

Big takeaway 2: Don’t spend a ton of time in pre-production building complex stuff you think may be useful — do a few test shots with your asset and see if you really need them first.

The next Studio Diary will jump right into production itself, dissecting the anatomy of a single shot in Project Rogue. One of the big objectives of this learning project is figuring out the shot-by-shot workflow that works best in this environment.

As always, if you want to follow my progress more closely, I’m posting dailies pretty regularly to @locodrome on Instagram.

--

--

Anthony Koithra
Locodrome

Filmmaker. Strategic Advisor. Former MD & Partner at BCG Digital Ventures.