Mateo Linares did a breakdown of his Urban Survival Unit made in UE4 and gave advice on how to set up atmospheric scenes.
My name is Mateo Linares and I live in Winnipeg, Canada. I originally studied architecture, receiving a Bachelor of Environmental Design before working as an architectural designer at a local firm. A year later, I decided to pursue my passion for film and video games and enrolled in an intensive eight-month 3D graphics program at a local college. Before entering the program, the only 3D experience I had was with NURBS based modeling programs like Rhino, which I would often use for blocking out scenes before doing the bulk of the lighting and surfacing in Photoshop.
Within a few short weeks, I was introduced to the typical asset production workflows for both games and films, learning how to bake down high poly meshes using Maya and ZBrush, creating PBR materials using V-Ray and Substance Painter, and setting up lighting and atmospheres to create dramatic scenes in Unreal Engine. I immediately fell in love with the speed and immediate feedback of game engines and decided to focus on real-time environment creation for the remainder of the course, culminating in my year-end portfolio project which was done over the final 8 weeks.
The original idea was inspired by the work of the architect Mas Yendo who designed a series of theoretical projects that were never intended to be built, exploring themes like environmental decay, consumerism, and social isolation. I was first introduced to his work by an architecture professor who noticed my fascination with dystopian and science fiction elements in my work and lent me a book containing about 10 years of Mas Yendo’s drawings, writings, and physical models titled Ironic Diversion.
I was specifically interested in his “Urban Living Unit” projects, which are portable houses that are completely self-sustaining through solar panels and water collection systems, designed to isolate inhabitants from a harsh environment. Since these buildings were never going to be built in real life, I thought the next best thing would be to imagine them in a game engine. As I fleshed out the concept further, I started to ask questions about the imaginary inhabitant of the house and the world they lived in, leading me to bring in references from other forms of media like Blade Runner 2049, which depicts a very similar situation in its opening scene.
Developing the Scene: First Steps
After doing an initial blockout in Unreal Engine, I photobashed a couple of rough concept pieces to nail the tone and atmosphere I wanted to aim for. I think this is one of the most important stages in the process and I often see people overlook it because they are too eager to begin modeling. I’ve come to realize that spending more time developing a strong initial concept can save you a ton of time in the later stages once lighting and composition become important. It only takes a few minutes to paint over some shadows or adjust color tones in Photoshop, while it can take hours to achieve the same look in Unreal by fiddling around with lighting and post process settings, especially if you keep changing your mind.
A productive way of thinking that I learned in architecture school is to “vomit” your ideas out onto a page (or screen) rather than waiting for an idea to be perfect in your head before doing anything. Having a half-baked idea sketched out in front of you can be immensely valuable, because it allows you to start asking concrete questions about what aspects work and what areas need improvement, allowing you to make further iterations and get peer feedback.
Setting Up the Interior
After developing the concept art, I broke my scene down into modular sections and began modeling the entire scene in Maya starting with the architectural assets like floors, ceiling panels, and walls. In order to make sure that the interior and exterior assets fit together on a grid properly, I blocked out the assets as simple cubes first before adding too much detail. Since this was a personal portfolio project, I didn’t worry too much about performance and ended up creating mostly mid-poly assets rather than the typical high to low poly baking workflow. I kept the total number of wall panel types fairly low in order to save on time and created slots in these wall panels at a couple of standard sizes. This allowed me to create variation between panels by inserting different modules like pipes, cable sockets, and screens.
The computers were the hero asset I spent the most time on. The design of the computers themselves was heavily inspired by the work of Nikola Dimitrijevic, a CG artist whose work I came across while looking for references, as well as other retro sci-fi computers from movies like Alien. I wanted to go for an exaggerated, slightly stylized design by adding multiple monitors along with an unnecessarily complicated mounting system that was based on old medical equipment. The most time-consuming part was setting up the shader in Unreal to allow blinking lights and scrolling text. Once I figured out the initial method however, it was surprisingly easy.
Because I wasn’t too worried about performance with this scene, I was able to do unique materials for most of my assets. To save time and maintain a consistent look across all my assets, I created a few base smart materials in Substance Painter. Using Painter allowed me to create procedural masks that were based on the unique curvature and ambient occlusion maps of each asset. I was then able to use these masks with a rust material that I applied at the top of the layer stacks to create a sense of wear and usage across all the architectural assets.
The most complex shader setups in Unreal were probably for the computer screens and the nixie tube clock. The screens were all based on a single master material, which I instanced to each monitor with parameters to adjust the emissive intensity and scrolling speed. For texturing, any areas of the screen that were to remain static were done in Substance Painter which involved creating some custom alphas in Photoshop. I stumbled across an excellent CRT monitor filter developed by Cem Tezcan which comes with many parameters that can be adjusted in Substance Painter to achieve the right look. For the scrolling text, I multiplied a panning computer text image with a waveform pattern that was scrolling at a different speed. To isolate these scrolling areas while maintaining the static areas, I created custom masks in Painter and multiplied these masks with the panning text.
The nixie tube clock was an interesting challenge. Since I only needed to get about 15 seconds of clock footage for the cinematic, I came up with a fairly simple workaround to get the seconds digits animated. Each digit of the clock has a separate material slot. These digits have the UV shells for the numbers 0 – 9 spaced out evenly across the UV sheet. The emissive channel texture is a strip that lights up a single number at a time, which pans horizontally lighting up each number in a sequence. I set the panning speed as a parameter which I could then adjust manually in each material instance. I found that setting a speed of .1 for the seconds digit and a speed of .01 for the ten seconds digit did the trick. The problem with this method is it stops working after 60 seconds since the timer will continue up to 99 seconds, although it wasn’t an issue for this scene.
With this scene, I wanted to show the dwelling of a lonely scavenger in a bleak, polluted environment. I chose to go with a blueish green color palette to emphasize the artificial lighting and the lack of organic life. I imagined the inhabitant would isolate himself indoors and tried to create a contrast between the bright, overcast exterior, and the harsh lights and shadows of the interior. A term from fine arts I love to reference is chiaroscuro, a lighting technique that uses these extreme contrasts to create a dramatic, focused composition. There is a temptation to light everything evenly and avoid putting any of your precious work in shadow, but I think it is important to understand where the focus of the scene needs to be and become comfortable pushing the rest into the background.
In my experience, lighting in real-time engines often requires a lot of faking to achieve a specific cinematic or stylized look. I like to set up cameras for my cinematics fairly early on so I can get a sense of where the best shots will be and build the lighting set up around them. To achieve this in Unreal, all my lights and models were set to static unless they were supposed to move. Baked lighting allowed me to get some nice light bounces and increased the overall performance of my scene, allowing me to go higher on my polycounts. I had my Indirect Lighting Intensity set to 4.0 as well as setting my number of light bounces to 10 in the World Settings. Many of these settings I discovered through this amazing presentation by a lead artist from Epic Games.
After I had some assets in the scene I placed point lights or rectangular lights by every physical light source, like the computer screens and ceiling lights, so I could get a sense of the base level lighting in my scene. I found that this initial setup felt very flat and boring as everything was too bright and lacked focus. In order to bring the viewer’s focus to the computers, the main hero asset in the scene, I turned off all the ceiling lights on the back half of the interior and added a green spotlight on the desk that contrasted with the blueish white lights surrounding it. I also increased the lightmap resolutions on the desk and the back walls of the area so that I could get some sharper shadows.
Advice on Setting Up Atmosphere
Setting up an atmosphere can quickly become very complicated because Unreal provides you with several different ways to achieve the same effects – either through World Settings, the Post Process Volume, Camera Settings, fog color and density, or tweaking individual lights. When I begin a scene, I usually reset the scene to a neutral lighting setup by deleting existing light sources, except for a single directional light and skylight. I also set up a lightmass importance volume around my scene and a post-process volume where I disable the camera auto exposure so that I have a consistent baseline for my lighting.
At this point, I should stress again the importance of having some strong concept art or references. For this hazy scene, it was important to start using volumetric fog and atmospheric fog early in the process so I could start dialing in the colors and density settings to match my concept. I found this very helpful GDC talk by Epic Games that explained the basics of Exponential Height Fog. The different options can seem overwhelming at first, but a lot of my settings were figured out by just dragging each slider to the max and seeing what it did, and then moving it back to something I thought looked good.
Finally, once my scene is at a place I’m happy with, I start adjusting the settings of individual cameras that will be used in my cinematics or screenshots. The main thing I took away from this process was that it is important to move slowly with setting up the atmosphere and lighting. You should be mindful of every new element you add to the scene and have a clear understanding of how it affects the environment. It is very useful to have at least one camera set up from the beginning that you can take screenshots from as you progress, allowing you to compare your scene to previous versions (something I wish I had set up sooner).
I hope that readers were able to find something useful from this! I had a lot of fun making this scene and I definitely plan to dive deeper into the many features of UE4 moving forward.