In case you missed it
For fans of Stålenhag's art
Hey there, I’m Pat Dunal and I have been working as a 3D Environment Artist for over 10 years.
After graduation from the university with a fine arts degree, I taught myself 3D and eventually got my first job in architectural visualization. After several years, I was looking for something a bit more creative and started working with game engines and real-time art production techniques.
I got my first game in the industry job 8 years ago and have never looked back. During this time, I have worked on around a dozen titles for mobile, PC, and consoles as Environment Artist, Lead Environment Artist, and Art Lead. I am currently working as a freelance 3D Artist and preparing to move back to Canada in search of my next opportunity.
Long Weekend: Goals
My main goal with this scene was to explore texture creation using Quixel Mixer to support advanced custom materials in Unreal Engine. I wanted to achieve a high-quality cinematic real-time rendering of surfaces.
I also wanted to create a well-composed scene that visually told an ambiguous story. I was heavily inspired by the illustrative work of Simon Stålenhag and his vision of a dystopian future not dissimilar to our current trajectory. Bleak, dull, yet familiar places are strikingly contrasted with strange unknown objects and scenarios.
Strat of the Scene
Based on my initial mood and theme references, I knew I wanted to use a midground car to give scale to the scene, as well as including a “Dystopian” element in the background.
I modeled the car first as I wanted to have a clear idea of the precise look of the main focal point.
Generally, I would do a blockout for the scene to determine the various assets needed before going into production, but in this case, the scene was quite simple with the main focus being on mood and materials. As such, I went straight into asset production, testing as I went to ensure that the scale was accurate.
I did not have a concept for this piece which made things a bit slow at times, however, the main reason why I love working in real-time is the ability to quickly test out multiple compositions and ideas using kit pieces. I’m not even sure that I’d call it a kit as most objects had a very specific purpose, however, the limited selection of pieces made assembling and iterating very fast.
Modeling Car & Robots
For the car, I went for a low to high poly workflow in Maya. I decided to mash a few different car references together, as I couldn’t find any side/front blueprints for what I was initially going for. I found some that looked similar and referenced many photos that showed off specific details in high resolution. the rest was done by frequently checking the model from different angles, ensuring the silhouette held up.
Many vehicle modelers use curves and then loft them to create geometry. This method would have been more precise and possibly easier, but as I’m not super familiar with it, it would have taken much longer.
I didn’t go super detailed with the modeling as I knew that it would mainly be viewed from a distance.
The floating robots were one of the most fun parts of the project. Rather than come up with a concept and model it, I assembled a selection of low poly kit pieces and kitbashed them together. Starting out with a limited selection of pieces, I bashed these together to create “mid-level” kit pieces and continued building until I had a pretty big range of assets to use. The final step was creating the wires by extruding a circle along a curve. I generally keep these wires “live” as long as possible so that I can continue to move control points around before finally converting them to polygons.
Use of Megascans
I used Megascans within Quixel Mixer to create all the ground textures for my scene, particularly the road and the snow along the side.
Working with Megascans was incredibly fast and easy, as the online library is built right into the program. I found a few roads that were exactly what I was looking for, then grabbed a bunch of additional scans from each of the surface categories I would be using: Snow, Dirt, Ground as well as a wide range of decals. Having them ready-to-go in my local library saved a lot of time. While I was putting the Mix together, if I was missing something, it was super easy to jump to the online library tab and quickly search for what I needed.
I also used several Megascans rock and grass meshes. These were small elements in the scene but brought in some great higher frequency detail.
I added displaced snow with Subsurface scattering to the tops of the rocks to help tie them in better with the environment. If you’re interested in more information on the material setup for this, there’s a great tutorial/breakdown by Mind Games Interactive that covers this:
Texturing in Substance Painter
I didn’t spend that much time texturing the car in Substance Painter and went with a simple approach with relatively few layers. In this case, I didn’t want to go too overboard with wear as most functional cars in the real world don’t have crazy post-apocalyptic damage.
Dirt, Curvature and Metal Edges and mask builder are the most common generators I use. In the case of the car, I just used ambient occlusion to drive general dirt over everything. I like using the leaks and rain particle brushes to give some subtle roughness variation. Finally, I’ll add some custom roughness and dirt to add some unique visual interest.
Setting Up Ground Textures in Mixer
Once I had my initial Megascans selected, I started adding them to the layer stack working from the ground up. It’s incredibly intuitive to mix scans using just a few sliders, taking full advantage of their heightmaps for a convincing transition. I used decals quite extensively to build up the sides of the road and add some directional cracks. Mixer automatically tiles everything, so there’s no need to worry about seams.
Once I was happy with the road, I moved on to the snow at the sides, mixing numerous types of snow and dirt. During this phase, I took advantage of Mixer’s masking tools, loading in my own custom alphas to get a more natural blend.
The road came together quickly. Total time including sourcing Megascans is under 2 hours. I went back to make some minor tweaks on it after getting it set up in Unreal, but I was super impressed with the speed and ease of use.
For those interested in a short, but amazing crash course in Mixer, I’d strongly recommend this Quixel Mixer primer video by Wiktor Öhman:
The textures from Mixer gave good results in Unreal, but I wanted to push the material a bit further. I added tessellation and displacement to the road to give it more dimensionality as well as vertex blending. As displacement can get expensive, I would not recommend using this approach on most in-game assets. There are ways to mitigate the cost, using distance-based tessellation as well as applying a different material to higher LODs with displacement disabled.
For lighting, I started with a skylight as this would provide a lot of the mood for the scene. I found an appropriate HDRI map from HDRI Haven. This is an excellent website that I would highly recommend, as it offers a huge selection of free HDRI maps for personal and commercial work at up to 16k resolution.
I added sunlight for some directionality, although this was quite subtle due to the brightness coming from the sky as well as the subsurface scattering on the snow.
Both lights were set to stationary, which allows for baked lighting, yet also gives the ability to adjust the intensity of the lights post-bake. In hindsight, I don’t think I gained much from baked lighting due to the nature of the scene and would use a fully real-time approach for my next project like this one.
I added a point and spotlight to each of the headlights to help draw additional focus to the car and road. The car was feeling too dark in the scene, so I added several area lights underneath the road, shining upwards. As I did not want these to affect anything but the car, I disabled their lighting channel 0, enabled channel 1, and enabled the car’s lighting channel 1. This method is quite useful when you need very specific control over the lighting of particular objects.
The main thing I learned from this project was how to create textures using Quixel Mixer and streamline the workflow to set up materials in Unreal.
My main challenge was self-concepting as I went. I have never used pre-existing concept art for my personal work as I like to have a hand in the ideation stage as well as production. However, I did reference existing concept art and photos and relied on these heavily for ideas and inspiration.
There’s lots of stuff I would have improved, having looked at the project. I would have spent more time on the trees, creating them in SpeedTree instead of assembling them from planes. I also would have spent more time on the background elements. They are greatly obscured by the fog; however, I think that taking the time to give them a more unique texturing pass would have added a final layer of subtle detail.
All in all, I’m happy with the scene and was excited to learn more about Quixel Mixer and brush up on my material creation in Unreal.