For my final project at Vertex, I wanted to create something special by enhancing an environment’s atmosphere through cinematics.
I’ve always loved the post-apocalyptic theme because of how ominous and mysterious the setting is, naturally instilling dynamic storytelling.
It’s a great way to spark wonder and establish an atmosphere. I found Eytan Zana’s incredible concept art, Outpost, which captured the mood I was going for.
I also chose this piece because its composition is structured, but the details are loose, allowing me the creative freedom to take on the challenge of depicting something that wasn’t fully fleshed out.
I had to leverage my art and design fundamentals to implement appropriate changes to make the project uniquely my own while also staying familiar with the original concept.
- Unreal Engine 5
- Substance Painter
- Substance Designer
- DaVinci Resolve
- Marmoset Toolbag
- Adobe Photoshop
References and Inspiration
I always try to work from big to small during all stages of my projects, even when gathering references.
Once I land on a primary concept, I put other environments with similar themes and atmospheres on reference boards.
On “Artists Refs: Environments and Color Palettes,” I’m looking at things like mood, lighting, composition, colors, etc. My references for the medium, “Artists Refs: Trims and Textures,” inform my design decisions, modeling, and texturing.
Then the smaller specific references like doors, rails, nuts and bolts, etc.
I aim to get a mix of artistic and real-life references because good design is grounded in reality!
This helps your audience connect with your project even if it’s a fictional setting.
To start, I kept closely with the concept, then progressively deviated the further I got into the project. I was able to do this comfortably because the concept already has a very strong composition, shapes, and lighting.
The earlier I established those aspects, the easier it was to iterate on the finer details later on.
This is the importance of building your project on a strong foundation.
There are several assets in this project that I wanted to lead the viewer’s eye to:
The main structure/dome, the foreground (FG) antenna, the FG door, the figure, the middle ground (MG) door, and the background (BG) dome.
The original composition does a great job of using the landscape to draw attention to the domes and the antenna because they break the smooth silhouette of the sandy dunes.
I used wayfinding principles to highlight the doors, a common design function seen in various real-world contexts like roads and airports.
By incorporating lights and directional markings to guide attention to the doors, I’ve created a sense that the environmental conditions could become harsh enough to severely reduce visibility.
This helps make the environment feel grounded in reality and tells a story.
Materials and Texturing
As mentioned before, iteration played a significant role in this project. Smart materials, trim sheets, and decals are a great way to quickly texture assets and get them in-engine to see what did and didn’t work.
Here’s a glimpse into one of my smart materials. There’s a texture process I learned at Vertex that has yielded some great results:
- Base Color
- Value Variation
- Color Variation
- Roughness Variation
- Height Variation
At the top of my stack, I always place a fractal sun texture on an overlay fill layer set to 5-20% opacity to create subtle noise and color variation.
Subtlety is key! Let the details reveal themselves through a build-up of many different textures instead of the heavy contrast between a few.
After applying a smart material to a different mesh, it’s important to go into the parameters to randomize some of the textures to create variety among assets.
3D modeling is therapeutic for me, so I went a little overboard on these trim sheets. Thankfully, they’re highly reusable. I was able to keep my colors and textures consistent by applying my smart materials to the trim sheets after baking the maps in Marmoset.
I bake in Marmoset more often than Substance Painter because I’m able to paint my skew, which is handy for details like screws, nuts, and bolts. I also find that getting a proper material ID map is easier in Marmoset.
For my decals, I wanted to create a sort of “generator” that I could input shapes and patterns into and create a worn version with an alpha mask as an output.
It’s a simple setup that has a lot of reusability. Try to reuse your assets whenever and wherever possible so that more time is spent on developing the overall look and feel of your project.
This last decal uses the same sand material as the landscape, but I plugged in a feathered alpha mask I made in Substance Designer.
The feathered edges allowed me to reuse the decal in various sizes and orientations without having a visible border. This was the easiest decal to create, yet yielded great results because it made the assets feel integrated into the environment and created large-scale variance.
The use of smart materials, trim sheets, and decals allowed for efficiency in asset creation and iteration.
Here’s an example of my environment with and without any decals.
This highlights the potential of decals. Notice the significant impact the sand decal has on making the colors and textures cohesive.
I’ll keep this section highlighted in my dome because that’s where I spent most of my time modeling and texturing.
The main challenge with the dome was giving myself enough texture space and topology to have a high-quality result on a large asset without going overboard on resources.
I did this by splitting the dome into two meshes: the frame and the panels. I wanted to do something more complex with the frame by adding hubcaps at the intersection points.
I did this by instancing two hubcap meshes (a six-sided and a five-sided version) to the intersecting faces of the sphere so that I didn’t have to place them manually.
To give myself enough texture space, I first made the frame a flat plane with a solidify modifier. This made unwrapping the mesh easier, and the frame is thin enough that texture stretching on the sides isn’t too noticeable.
Next, I applied a mirror modifier to the frame and the hubcaps to reduce the occupied space in half, then finally repacked the UVs.
I used the same method for the panels. Since the dome is the focal point of this environment, it deserves its own unique materials and texture to draw attention to it.
I used Substance Designer to create two versions of this alternating triangle pattern- one “clean” and one “damaged”.
The damaged version has an alpha mask which was used to create micro damages during vertex painting.
I did not spend too much time on the roughness and color in Substance Designer because I knew I was going to use my smart materials for the texturing.
For my material editor, I had a simple two-material setup in the red channel with my clean and damaged version.
This would become repetitive with how much I was tiling the texture. To solve this, I added my alpha mask variants to the green channel.
This allowed me to create micro damages without having to model it. While the alpha mask does mirror to the opposite side of the panels, it’s too thin to be noticeable.
Finally, I added multiple sand decals to further reduce repetition and push the gradient on the dome. Allocate your time and resources to your most prominent assets!
Real-Time Virtual Texturing and Megascans
As much as I love creating assets from scratch, I don’t have years to spend on one project. Because of this, I used Megascans assets and textures for most of the landscape modeling, rubble, and texturing.
I used the Unreal Engine landscape feature to create the two hills, then applied a Megascans rippled sand texture to it. I wanted to avoid meticulously vertex painting other materials and meshes to create variance, so I utilized Real-Time Virtual Texturing (RVT).
This video tutorial by Game Dev Academy helped in set up the material graph correctly. RVT allowed me to drag, drop and move around any Megascans asset into my environment without having to vertex paint it.
This was a big time saver and allowed me to visually develop my landscape quickly.
As awesome as Lumen is, you still need to be conscious of good lighting tricks and fundamentals to really push it to the next level.
Even though the sun is the only lighting source in this environment, I needed to use a multitude of different lights to achieve my final result.
Don’t think of lighting as simply just lighting, but a tool that can be used to assist in composition, flow, rhythm, and mood.
My mentor Salvador made the point that you could have the best textures and models, but bad lighting will ruin the overall quality.
While it appears I simply enabled indirect lighting, this parameter did not always give desirable results as a whole because it changes light behavior on a global scale.
To address this, I opted for a solution that involved replicating the indirect lighting effect through additional lights. This provided precise control and improved the lighting balance in specific areas.
Post Process Volume, Color Grading, and LUTs: It’s imperative to use the Post Process Volume to achieve a cinematic look.
Note that changing color grading values and enabling a LUT will alter the colors and values of the materials, so it’s better to save color grading as a final touch-up.
Here’s an example of how much Post Processing and LUTs can change the look and feel of a project.
Read up on Unreal’s documentation Using Lookup Tables (LUTs) for Color Grading to learn how to implement a LUT into your project.
To bring this environment to life, I wanted to create a short cinematic. My main source of inspiration and reference for this process was Alec Tucker’s Geologist’s Lab and his blog on Cinematic Post Processing Tips and Tricks.
I highly recommend checking out these resources if you want to add a cinematic quality to your work.
For specifics on camera settings, vignettes, camera shake, post-processing, and film grains, check out Alec’s blog for in-depth tutorials. Next, I want to talk about the creation of dust clouds, physics, and render settings.
All dust cloud effects are derived from the same texture which utilizes a custom noise node that comes with UE5 called “GenNoise_01”.
The setup to get these dust clouds can be found on the UnrealityBites series “UE5: Desert Landscape & Effects” specifically “Unreal Engine 5- Creating a Desert Dust Cloud”.
The main addition I made to the graph was adding a Depth Fade node and a Radial Gradient Exponential node.
The Depth Fade node blends the cloud into the environment while the Radial Gradient Exponential node feathers the edges.
This resulted in the boundaries of the texture no longer being visible, allowing for easier integration and reusability.
The simple implementation of these dust clouds, along with audio, really brings the environment to life.
Even if you’re not an animator, like me, simple motion goes a long way to pushing the atmosphere to the next level.
Physics and Rendering
The flowing tarps were created entirely in-engine. I did so by starting out with a flat subdivided plane at the angle and length I needed. I then used the PolyCut operation in the TriModel section to get the triangle shape, then applied a Megascans tarp material.
The rest is all about enabling physics on the plane, pinning the corners and then adjusting the values to your liking.
One very important thing to keep in mind is that UE 5.21 cloth physics does not render properly when using Temporal Sample Count (TSC). I’m unsure if this is true for newer or previous builds.
To solve this, first set TSC to a value of 1, then up Spatial Sample Count to a value of at least 8 (I used 16 for my cinematic), and finally set the resolution to 4k if possible. This should compensate for the quality loss of disabling temporal sampling while keeping physics intact.
As you can see, I’ve set up a Job Settings Preset labeled MRQ_physics_safe for future cinematic renders that use in-engine physics.
In addition to this, be sure to read and watch the extensive documentation on setting up your movie render queue to achieve high-quality results.
Overall, I’m proud of the outcome of this project and the knowledge I gained through this in-depth exploration of cinematic techniques. Integrating sound and motion was instrumental in enhancing the atmosphere to the level I wanted to achieve.
Hopefully, I provided some insight and knowledge that will help with your projects or simply inspire you to create something awesome!
Thank you, Games Artist, for the opportunity to share my project and my process, and thank you for reading!