Virtual Production: The Making of a Moving Train

UMass Global

Our team had the opportunity to work with Aggressive, a renowned creative production duo based in New York to create a virtual production environment for a commercial project.

Our task was to design and build a highly realistic 3D environment for the shoot. Virtual sets had to be realistic and support the post-production process. We were able to realize the client's vision and create the perfect virtual set essential to the shoot's success. The end result was a visually stunning ad that was well received by the client.

Virtual Production case

Aggressive teamed up with the University of Massachusetts Global to produce an inventive marketing campaign. To set this project apart, they decided to use the cutting-edge technology of Virtual Production to create a visually striking scene aboard a moving train.
To bring this virtual environment to life and showcase it on LED screen walls, Aggressive sought out our assistance, leveraging our extensive expertise in visualization solutions. Working closely together, we were able to deliver a highly immersive and photorealistic virtual environment that exceeded the client's expectations.


The goal of the project: Design a dynamic, real-time environment that can be displayed on an LED wall as a background for a moving train, with the ability to easily make adjustments during the production process.

After studying the brief, we knew that we need to create something that we can alter at any stage of the project. So the main challenge was to make a large real-time environment with full creative control of the overall look. To create an early morning atmosphere in the urban train scene, it was decided to incorporate a subtle blurry haze that would contribute to its cinematic appeal.

We started with a tech demo in Unreal Engine to check if our ideas would work as expected.

The client was very enthusiastic about the idea, so we can proceed with the next steps. Afterward, we obtained the necessary files of the train interior, which allowed us to strategically position cameras and integrate them into our moving train blueprint.

With that, we could begin work on our scene. To achieve the desired outcome, we implemented a procedural system for generating city levels in real-time. This approach is highly efficient and allows for full control when creating vast environments.

Scene before level spawn
Scene after level spawn

Furthermore, the train's track is also generated in real-time as it moves.
The Unreal Engine provided us with extensive creative capabilities, such as control over the weather, lighting, train speed, camera angles, and composition in real-time. Additionally, virtual production was the ideal solution for this project as it eliminated the need for being on a real train, waiting for favorable weather conditions, and holding cameras outside of windows.

Full level BP Graph

We utilized Cesium OSM data within the Unreal Engine as a reference for location scouting. Cesium is a JavaScript library for creating 3D globes and maps. OSM data is an open-source dataset containing geographical information such as roads, buildings, and points of interest. By integrating OSM data into Cesium, developers can access this information and use it to create interactive 3D maps and scenes. Through this, we were able to identify an ideal location featuring a straight train track, which was perfect for our needs.

Cesium reference
Cesium reference

To ensure accurate scale, building layout, and terrain, we utilized relevant portions of the Cesium OSM data as a reference.
This allowed us to effectively plan the levels and their dimensions.

Creating Virtual Production

Early blockout after using Cesium as reference

The entire environment was constructed using modular chunks (portions). These chunks were divided into city and track sections. Our system utilizes instancing to position these chunks correctly and renders them as required for the scene.

The use of a procedural approach allowed us to rapidly reorganize the levels, effectively altering the overall appearance of the city. Additionally, the track segments were placed seamlessly in front of the train, without the need for manual placement. This greatly improves the efficiency and flexibility of the production process.

Level instancing nodes

The levels are arranged in rows, with each row potentially featuring a different level size. We have the ability to define the number of levels to be instanced in the X-axis, allowing us to adjust the overall length of the environment.
Additionally, the levels can be instanced in either a random or sequential manner, depending on the specific requirements. We have created four distinct city chunks, which are spawned and positioned accordingly.

Levels placed in sequence: 4 - 3 - 2 - 1 - 4 - 3 - 2 - 1 ...

To optimize performance, we only render levels that are currently visible to the camera. The rendering of levels is managed by setting a render distance, beyond which levels are loaded into memory and displayed. This allows for more efficient use of resources and reduces the overall load on the system.

Nodes responsible for rendering levels.

The spawning of track segments is seamlessly handled by the moving train. As the train progresses, the next segment is dynamically generated and seamlessly integrated into the scene, providing a smooth and uninterrupted experience.

BP_TrainPawn Event begin to play

Our virtual train initiates the spawning of track segments at the start of the scene. The speed of the train is controlled by the Timeline, allowing for easy adjustments to the speed, the creation of different speed sections, and the ability to stop the train as needed. This feature provides greater control and flexibility in the virtual production process.

Spawned track segments
Example of a track segment.

The spawning of the next track segment is triggered when the virtual train overlaps with a designated trigger box. This ensures that the segments are spawned seamlessly in sync with the movement of the train.

Moving train

Assets such as buildings, trees, and signs are generated randomly from a pre-determined set of modules and appear at random intervals while the train is in motion. These assets are then removed from the scene after a short period of time.

Random asset spawn at random intervals blueprint
Train overlapping segment's trigger box
SpawnTrack function

The use of a procedural approach in the creation of the scene allowed for maximum flexibility and ease of modification. Throughout the project, we were able to make changes to various elements such as the sky, lighting, buildings, and even the direction of the train's movement.
However, we did encounter an issue with camera perspective distortion towards the end of the project. We were able to resolve this issue effectively by utilizing the ArchvizTools plugin, which proved to be both simple to implement and highly effective in achieving the desired results.

Before correction
After correction

Finally, we rendered our environment to meet the technical specifications outlined by the client so that it could be displayed on a large LED wall.

Rendered footage displayed on LED wall

The result

The results were outstanding, and thanks to innovative virtual production technology using Unreal Engine, the client could seamlessly adjust the desired result in real time for the entire shoot in one location. Virtual production is a game-changing technology in the film and video production industry. 

Harnessing the power of technology like Unreal Engine, it offers a more efficient and cost-effective approach to filmmaking. It also provides greater creative control, flexibility, and the ability to seamlessly integrate visuals and animations. Virtual production allows filmmakers to bring their ideas to life in a more sustainable and environmentally friendly way. The future of film and video production is here, and virtual production is leading the way.

January 27, 2023
6 min read
Featured Image
Have you ever heard of Unreal Engine? It’s a powerful and versatile game engine used in the development of some of the world’s most …
March 21, 2023
Featured Image
Ever wonder how we create virtual production environments? This case study will give you a behind-the-scenes look at our process!
March 16, 2023
Featured Image
We designed and created a 3D environment in Unreal Engine for the commercial shoot using Cesium and procedural utilities.
January 27, 2023
Featured Image
Learn the story behind our McInnes Studio Challenge winner project made in Unreal Engine.
November 28, 2022

Get a quote
on your project

} // call custom javascript smp_custom_js(); // call it again for every page change window.addEventListener("sempliceAppendContent", function (e) { smp_custom_js(); }, false);