Daniel Harris discussed the production his UE4 scene inspired by John Sweeney's old concept for The Last of Us, talked about his texturing approach in Substance tools, and shared his lighting workflow.
My name is Daniel Harris and I'm a 3D artist currently working at Cloud Imperium Games on Star Citizen. My primary focus in work is environment modeling and level art with occasional material/texture work. I’ve been working in the industry for almost 6 years now and, for me, a big part of why I enjoy environment art is because of how it combines different expertise to create a finished scene. Being able to tackle things such as modeling, texturing, shader creation and lighting can be challenging but I think that's what makes it quite rewarding as well.
For my Abandoned Control Room scene, I always had in my mind the goal of creating an interior with strong lighting that was heavily inspired by games such as The Last of Us 1&2. With that in mind, I had a look for some concept as well as real-world reference that would fit the bill. I came across an old concept by John Sweeney in the artbook for The Last of Us which I felt was quite different to projects I'd done in the past. It was very close to the style of environment I wanted to make so I figured it would make a good starting point.
Once I have the main concept for the scene, I like to gather a bunch of real-world references for things such as lighting/mood, props, textures, and interesting assets or ideas that may not be shown in the original concept. As a lot of concept images tend to be quite loose in terms of the finer detail, I definitely think that it's important to invest time into finding good reference before starting. This scene had a few tricky assets to find detailed reference for so I ended up spending a lot of time searching the internet for keywords but it made a big difference to the quality of the environment.
From a modeling standpoint, I made a decision early on that most of the assets in the scene would not be modular due to the small size of the environment and how simple most of the architecture is. With that said, I still like to work on the grid when I'm modeling architectural pieces even if I'm not planning on making reusable modular kits. I find it makes it simpler when building the scene in Unreal as all the assets snap together in a nice clean way. There were a few modular pieces used in the scene mostly around the metal panels on the back wall. This section made sense to have modular due to the way it was built out of separate sections in the reference.
One last point on how the assets were broken up relates mostly to lightmaps. As I was using baked lighting right from the start, it was important to make sure the assets would work well from the early stages of the whitebox. As it was more of a bespoke environment, I made sure that when broken up, the architecture elements were all roughly the same scale and level of complexity so they were close in terms of lightmap resolution. It's possible to check this in Unreal under Optimization Viewmodes and, of course, you could go in and adjust each asset's lightmaps manually to match them up but I prefer to keep it simple at the start.
The majority of the texturing for this project was done using Substance Designer/Painter. I tend to use Substance Designer mostly for the tileables which for this scene there weren't really many that I needed. It was primarily the painted cinder block wall texture and the floor tiles that took up the bulk of my Designer time. I also planned ahead before making these textures to make sure that I had a second set of damaged or worn textures that I could set up vertex blends for in Unreal. By knowing what types of textures will be vertex painted, it means I can set up my substance graph in a way that allows me to extract both the bare cinder block as well as the painted version from the same setup which in turn speeds up the process.
One other interesting texture that I ended up making was a simple trim sheet for the paneled wall sections. This was modeled in 3ds Max based on the types of shapes I thought I would need as well as some reference I found.
For the texturing of the panels, I used Substance Painter as opposed to Designer. The big reason for this was smart materials. When looking at the types of materials in the scene a majority of the props have some form of painted metal. By setting up a smart material for rusty painted metal, I was able to apply a consistent look to not only the props but the trimsheet as well in this instance. Using the smart material as a base allows further detailing on a per asset basis as well as a more unique hand-painted texture detail. A cohesive texture output is important so that everything feels ground and nothing feels out of place.
Throughout the project, I made sure to constantly check albedo values in the base color view to make sure no values were too extreme and they all fell within a good range for a PBR workflow. This is especially important when working with scanned assets as it easily leads to a discrepancy within the scene. Joey Lenz has some great resources for PBR/Lighting related information.
With Megascans integration into Unreal working with the scanned assets is super simple now. Ease of use is important especially for me as I tend to experiment with a bunch of different assets as often what may look good when viewing in Megascans Bridge might now work as well once it's in the scene. In most cases, I made adjustments to assets I brought into Unreal either through the material editor or simply adjusting the textures in the texture panel. In terms of the assets I used, it was mainly foliage, some small debris for scattering, a bunch of textures that I used for decals and some small props such as the cardboard boxes. I personally find the foliage very useful as the quality is much higher than what I would be able to achieve and it really helps to sell the realism in the scene.
Composition & Lighting
The composition for the scene was relatively straightforward as I matched the main composition to the concept. It was important to strengthen the composition by using strong lighting from the windows to help direct the eye around the scene. Shadows were equally important from a composition point of view. By keeping certain elements of the scene shadowed and understated, less attention was drawn to them therefore the focus was in the key areas of the environment. One last point in regards to the composition was visual noise and making sure to keep some area less cluttered so it wasnt distracting to look at. Areas in the center of the floor for instance were purposefully left quite basic with detail focused along the edges.
As I mentioned earlier, the lighting in this environment was baked with just the default lightmass in Unreal. I made this choice as currently baked lighting is still the best option for interiors if your aim is realism. Whenever I start a new scene, I make sure to lock the exposure and so that there's a fixed exposure and it's not changing all the time. The lighting setup is fairly straightforward, a single directional light and a skylight. I chose not to add any other lights to fake the bounce as I was making a lot of changes/ experimenting and wanted to keep it simple. In order to get a soft bounce of lighting in the scene, I set up a simple emissive plane at each window that was set to affect static lighting. This plane was set to hidden ingame but was still calculated with lightmass.
It is also possible to achieve a similar result using lightmass portals but for this scene I liked being able to control the specific amount of light coming through each window. A lot of lightmass settings can be tweaked so it's generally a good idea to try stuff out as what works for one environment may not for another. I generally like to do the colour grading and post right at the end so I can get the lighting and materials right before applying any grade to it. I always look at it like shooting raw in photography, it might not look as exciting but it's a more accurate base to work from and then the grading/post-process can really make it shine. I did 99% of the post-processing in Unreal using the built-in color grading options.
Worth mentioning, I did also use two RTX features for this environment, RT Reflections and RT Ambient Occlusion. While I wouldn't say they made a massive visual difference, they do help push the accuracy of the lighting up a notch. RT Ambient Occlusion was especially useful for achieving nice depth in dark corners as it does a much better job than the standard AO. In terms of reflections, they are mostly subtle other than the puddles on the floor which work quite well with the improved accuracy.
This project definitely had a few challenging moments but I enjoyed it a lot as I've been wanting to do some lighting oriented art for some time now and it's good to see it through to the end. Getting the lighting right was mostly just having the patience to try different ideas and making small tweaks until it felt right. It definitely can be frustrating especially with baked lighting as you’re never quite sure what you're going to get once the lighting finishes baking so it can be a lot of back and forth.
I’d definitely like to make another interior environment to experiment with some different styles of light, maybe something with more man-made lighting as opposed to the natural lighting in this project. It will be interesting to see what changes UE5 brings from an environment point of view, but I think it will be exciting nonetheless.