Jack Rawson shared an in-depth breakdown of the latest SCIFI Corridor - Unreal Engine 5 - "D-35" project, talked about the modeling process in 3ds Max, and thoroughly explained how to work with UE5's Lumen.
Hello, my name is Jack and I’m a University Graduate. I studied at Sheffield Hallam University for 3 years studying Game Design. I’ve only just graduated this year and achieved a 1st class honors degree in the subject.
I’m an Environment Artist and work primarily in Unreal Engine, I’m constantly trying to improve and learn more about environments, testing new workflows & techniques. I hope this will be of some interest to some out there.
SCIFI Corridor - Unreal Engine 5 - "D-35"
Initially, with this project, I was playing around with Unreal Engine, strictly practicing with modular parts, and making my own little set. I wanted to test out a 2 UV workflow that I’d previously tried a year ago, now with more experience with environments. After about a week I was starting to like the set, and how they fit together and wanted to add more parts. Fast forward a bit and I had quite a lot of parts and wanted to make something out of it, a portfolio piece. The environment went through many iterations, I learned a lot and would like to share what I’ve learned, and techniques used in the scene.
Ideas and Reference
All these assets were just ideas I thought of, didn’t use any reference, which isn’t recommended. I simply model in 3ds Max, test some ideas out, and settle on an idea. I generally block them out, then add detail in the form of passes, utilizing 3ds Max modifier stacks to revert changes. For reference, I referred to SCI-FI Films for colors, commonly used blue was the chosen color for my project. I’m also using PureRef for reference gathering.
Working with 2 UVs, the premise is 1 UV channel displays the base material, and the 2nd UV channel displays the extra Normal details, like panel lines, edges, these can also be decals like screws or generic Normal detail – I’ll go more into detail later.
The idea is to add tons of detail in a small time frame, making detailed assets quickly, no-bake, just Face Weighted Normals and a tiling material. You’re skipping the baking process entirely. Also, Texel Density shouldn’t be a problem for tiling materials and this workflow.
A drawback of this workflow is you won’t get the quality of hand-placed dirt/edge wear as you would in Substance Painter for some assets.
I’ve used 3DS Max for modeling for around 3-4 years and this project was no different. Essentially, I set my project up with the 2UV Material set up so I could preview the asset before exporting it. Using a Multi-Sub Object material for exporting material IDs.
Asset Creation “2 UV Workflow & FWN”
Firstly, I made a trim sheet for these decals/trims. Baked onto a plane as usual. With a basic understanding of how this works, I’d like to outline the importance of good edge flow/topology. With this method, I’m cutting in detail and using topology to add detail, and I need a nice clean strip of UVs for the edge details. The same process you’d use when using trim sheets for assets, laying straight strips of UVs on the details, but on a separate UV channel dedicated to the Normal.
In the example, you can see how the details are mapped, the long strips on channel 1, and what they look like in Unreal Engine. This was how every asset was made in my Environment.
Once I’m happy with the trim, detail, and the asset itself, I’ll use the FWN (Face-Weighted Normal) technique to add roundness to edges, so they can be picked up by lights to create nice reflections.
This is the trim/decal Normal I used for this workflow.
Here are a few example assets created with this workflow as well. The assets look similar in style, which was a bonus, it helped my style stay consistent and made things click into place. A consistent art style is very important.
Snapping to Grid
All my assets in this environment snap to grid, this means that before exporting my assets, I’ve aligned the pivot to where I want it, I then set its transform values to 0,0,0 in 3ds Max.
Now, all my wall pieces share that common pivot location; at the left corner of the wall parts; this means that if I were to place this in Unreal Engine with a 50cm snap, they’d all align perfectly and make this process of building a level easy and fast. The wall pieces are 2M x 2M. To add, if they all share that common pivot position, I can very easily replace the asset in Unreal Engine, and it’ll place a different piece in the same position.
Notice how when I replace the asset, the pivot doesn’t change? Snapping to grid with modularity was very useful in my environment, and I highly recommend it to other game developers and artists, it can save a lot of time, and allow other artists to easily create their own areas of the level.
On the topic of snapping to grid, here is a collection of my modular parts used throughout the scene. To assemble the scene, I used a 50cm snap for most objects with occasional offsetting without snaps to break it up.
I like to create multiple variations of each piece, depending on how many times I think I’ll use the asset. The floor for example has 3 variations. And the walls have many variations as they’re the most used asset.
The most important material is the one that controls the whole 2 UV workflow. Here is the Unreal Engine Blueprint for the Shader. It’s not the most elaborate material with only a few parameters to change.
Hopefully, the annotations make this material clear enough. Channel 1 = Normal Details and Channel 2 = Base Material (For example rubber, metal, wood, etc.) which will contain my RMA texture and Base Color.
I created 2 other materials – the grippy floor and metal texture.
The decals in the GIF are floating planes, with a decal shader to project them onto the surface.
Here are my 2 Trim Sheets (Bottom 2), decals (Top Left), and the trim/decal normals (Top Right).
Lighting, Atmosphere, and Color
Lighting is a lot of fun, and Unreal Engine is fantastic in the way artists can create atmosphere and mood.
To create atmosphere, I used Exponential Height Fog as is typical, and used fog cards to create noise/mist in the air as well as light shaft cards for the lights, to add more energy to them. I’ll show the light shaft cards in use later.
The fog has a slight tint of blue/green, and I used my skylight to show the fog, fog can be exaggerated if you change the fog density option in the settings for Exponential Height Fog.
For this project I used Lumen. So, all my lights are dynamic for the purpose of testing them. This isn’t optimal of course but I think concept artists could use this nicely and is much cheaper than regular hardware ray tracing and provides quick results.
The most used light source used was Rectangle Lights, these are great for lights with large surface area and can help provide a lot of specular for your PBR materials which is important because without specular, your materials and scene may look flat.
Spotlights were used as well, but not a lot, mostly used for creating a spotlight effect on the floor beneath the ceiling lights, adding energy to them.
Point lights were not used, usually, I’d use them to brighten up shadows, but Lumen GI solved that for me. Point lights are very performance intensive compared to the other light types.
Here’s the scene’s lighting-only view. Notice how Lumen is illuminating the ceiling – it’s not completely black thanks to its Global Illumination, this can be boosted by changing the Indirect Lighting Intensity in the light’s properties.
This shows the use of Lumen’s GI.
Use of Color
To direct the viewer in areas of my scene, I used basic color theory. My scene is quite blue/green and so I used red /orange hues for certain areas to guide the eye. I wanted to emphasize areas to provide subtle guidance. I also wanted to add narrative, that’s up to the interpretation of the viewer, why is it red? Dangerous? Broken? Etc… I learned it is important to not overdo the use of color, it’ll create a lot of noise and confuse the viewer, ideally, I want the eyes to glide through and lock onto areas of interest.
Notice how the ceiling lights are different in color slightly? I did this to break up the composition, separate the background from the foreground slightly.
My lights have a tint of green to them, I’m doing this to mimic a fluorescent light, which, while exaggerated; adds a nice artificial lighting effect. What I found myself doing in previous projects, was not tinting my lights, using pure white lights instead; this immediately made my scenes duller, removed any mood from the scene and ultimately limited the color and options I had.
Color is one of the best tools an artist has, takes a lot of practice and I’m constantly working on it to improve.
Here are my settings for the ceiling lights, featuring a green tint, with boosted Volumetric Scattering for more atmosphere, and boosted Indirect Lighting Intensity, so Lumen can fill out the room more with this light.
Fog Cards/Light Shaft Cards
I used these cards quite frequently to build the atmosphere, it’s very easy to overdo these and wash out the scene, so tweaking the settings of these is very important.
Here is an example use of light shaft cards to boost the energy of the lights.
Post-Process Volumes are the first thing I add to my scene, setting it unbound and immediately removing the auto exposure. To do this you set Min Brightness and Max Brightness to 1 in the Exposure section.
I leave my post-processing alone until I really need it (usually later in the project) when I’m trying to tweak the mood and colors.
I use the Color Grading tab the most, tweaking shadows, maybe adding some blue into them, brightening them up if needed. Making use of Tint and Temperature as well. I was going for a SCI-FI color scheme, so blue-green was the main colour for the scene.
I always avoid using gamma on these settings, and I don’t use the ‘Film’ section either.
Lumen & UE5
This project was my first dive into Unreal Engine 5, and it proves to be exciting, now I didn’t get to test out Nanite as that doesn’t support 2 UV’s currently, but from Lumen alone, I’m very impressed.
Lumen provides its own Global Illumination which will fill out your scene as Hardware Raytracing does. It’s much faster than baking and not too bad on performance either, Nanite would make the performance even better.
I’m also a fan of the Lumen Reflections, no more reflection captures, and headaches of miss-matched reflections. Using Lumen Reflections is a step up from screen-space in my opinion, especially for this project, it sped things up drastically.
Lumen Emissive Materials
Emissive materials contributing to light is also a bonus. UE5’s new UI is quite nice; I’m using the classic look, but the sleek black/grey UI elements are brilliant for my eyes.
Here are my Lumen settings, using Hardware Raytracing for more accurate results and Detail Tracing for even better results. Note these are more intensive and I believe you may need a 20 series card or better to use hardware raytracing. Check Unreal’s Documentation on Lumen, which goes in-depth into all this.
Note: you can also increase the samples of reflections and GI in Post Process Volume as shown in the screenshot, this can help renders from my experience.
Advice & Challenges
The project overall took a bit over a month, the focus was to learn and find tricks to help my modular understanding, as well as to play with new tools and add to my portfolio ultimately. Now the project has concluded, I’ve learned a lot from this experience, and would like to share some of the things I’ve learned that may help people.
I found myself a lot of the time underexposing my environment and having to tweak it later. Why this is important is because you’re trying to show off what you’ve created, and people cannot see what you’ve created if it’s too dark; materials won’t be on show, assets you’ve sunk time into won’t be on show. Learn about histograms and try to show off your worlds. Sometimes your scenes will be darker than normal for artistic reasons; make sure it's intentional and has light to complement it.
Visual Noise & Color
Another thing I learned was visual noise, especially in color, try to use colur strategically, point people in the direction, or create a mood around an area or complement the colors in the scene. A color wheel is a great tool for this.
In the example: that’s too much color that lacks intention, I’ve also over sharpened the image and added too much grain.
Overuse of Post-Processing
Some small things I’ve learned were over-sharpening renders, adding too much grain to renders as touched on before. These are both good to use to enhance an image, but of course, overdoing anything will have negative effects.
Lastly, naming conventions, having order when it comes to development is very important, especially when projects get big. My naming conventions are standard and look like this:
- SM_ (Name of Static Mesh) _01 – 02 – 03 etc
- MI_Material Instance
These helped me search for said material, instance, or asset. I make sure I prefix every type of asset, T_ for texture or BP_ for blueprints, etc, there are sources online for help with naming conventions, definitely look into it if you haven’t already.
The main challenge, as always, is creating an entire environment on my own, I create my own decals, assets, trim sheets, materials, and everything. It takes a long time and a lot of work to complete, I took some breaks during this project, which is highly recommended, fresh eyes on your piece can also help you spot things your brain has blanked out, so ask a friend – or anyone for a bit of feedback, maybe they can spot it before you realize.
Of course, other challenges like trying a new workflow, learning new major features in the engine, and troubleshooting these new features when problems arise; I encountered quite a lot of oddities, which is to be expected with a beta release of the engine.
Big thanks to 80 Level for the interview, the project was a lot of fun and I enjoyed writing this up, hopefully, it was of some interest or help to people out there.
You may find these articles interesting