Learn How to Set Up a Dimly-Lit Environment in Unreal Engine 5

Michael Kahn-Rose told us about The Workshop project, shared how the lights were set up, and explained in detail his workflow in Unreal Engine 5.

In case you missed it

You may find this article interesting

Introduction

Hi everyone! My name is Michael Kahn-Rose, and I have been in the video game/movie industry for 16 years. I am currently the Lead Lighting Artist at Bluepoint Games. When I first started college, I was majoring in civil engineering. I always loved working in 3D space, whether it was creating 3D puzzles or designing a house in AutoCAD. After two years of studying, I still wasn't excited about what I was learning. I knew that civil engineering was not for me but I didn't have any alternative. I was always engaged in playing video games. From when I was a little kid and got my first Nintendo system, playing video games was always my favorite thing to do. One day, while driving to school, I heard a commercial on the radio for The Art Institute. It informed me about the availability of a program that led to a degree in Game Art and Design. I was immediately intrigued and knew that I needed to check it out. Later on, in 2008, I graduated with a Bachelor's Degree in Game Art and Design.

At first, I completed an internship at Pandemic Studios, working on The Lord of the Rings: Conquest. Then I worked at Zindagi Games, making most of the Playstation Move games. Later on, I earned the opportunity to work at Digital Domain in the Virtual Art Department, working on Jon Favreau's movie, The Jungle Book. After that project was completed, I got a position at Treyarch as a Lighting Artist where I had the opportunity to work on Call of Duty: Black Ops 3 and Call of Duty: Infinite Warfare. I then decided to take a position at Bluepoint Games, where I collaborated on the Shadow of Colossus remake. After finishing that game, I was promoted to the position of Lead Lighting Artist. I then participated in the Demon's Souls Remake. After finishing Demons Souls, we transitioned to work on God of War: Ragnarök with Santa Monica Studio.

The Workshop Project

I love working in Unreal Engine and enjoy working on my own projects in my free time. Normally, I like to start a scene from scratch and create all of the layouts myself. However, for The Workshop project, I decided to use a previously created scene as my base and then make it my own. I started with the Carpenter's Workshop demo level by Leartes, which is an awesome environment. However, I knew I wanted some close-up shots of the hero pieces, so I found out that I could obtain high-resolution assets from Megascans by exporting them at the highest resolution for most objects. I was inspired by a scene created by Daniel Martinger called The Carpenter's Cellar, which is truly impressive and worth checking out. With these references and resources, I gathered from the internet, I started my work on the project.

Planning the Initial Composition

The nice part about starting from a previously made scene is that most of the blockout is already completed for you. The first thing I like to do is set up my cameras, so I know where to spend most of my time. I knew I wanted to make a movie, so I ended up working on things slightly outside of the camera view, intending to animate them later. Using different techniques, like the rule of thirds, I was able to set up my cameras to look nice compositionally. Unreal Engine has some built-in overlays in the viewport, which help you to set up a strong composition. 

I am constantly going back and turning this on and off to make sure that my piece still fits well within their composition guides. That isn't to say that you can't use your eyes, but this is a good way to make sure your scene flows well for the viewers' eyes.

The Asset Creation Workflow

I am, first and foremost, a Lighting Artist, so creating assets from scratch is not my goal. I mostly concentrate on working on layout and lighting. Using a demo scene like this as a base saves me a ton of time. After setting up my camera shots, I deleted most of the foreground assets in my camera views. Then I would mostly use Megascans assets to replace the things I originally deleted. Dragging and dropping Nanite assets from Quixel Bridge is easier than ever, and I strongly suggest you check it out if you haven't already.

Whenever I make a scene, I am always trying to tell a story, no matter how basic it might be. For this scene, it was about a carpenter who worked with wood to make beautiful pieces of art. I wanted to show the aftermath of all of the finished pieces. I asked myself: "What would be on that table while someone would be working on carving and creating those wood pieces?" There would probably be tools, wood, and things that would indicate that there was just work done. Secondary assets add to the story, like a knocked-over can of nails, or a bottle with a drink in it. I knew that I wanted to have a lot of detail in the different shots. So I took one hero asset for each shot and used it as my focal point. I then built around it, to add in the detail I was looking for. I used certain Megascan assets, for example, the S_Forest_Ground_wguvfak_high asset, and scaled it way down. This was a great piece for adding in wood dust/buildup from cutting and shaving the different wooden pieces. I also added in wood shavings, to add to the realism of the shot. I utilized Unreal Engine 5's modeling tools, which allowed me to add more detail and realism to the piece. I took all of the walls and changed them to a different brick material. I then went into modeling mode, grabbed the wall with the brick material, and selected the "Remesh" button. I set the triangle count anywhere from 500,000 tri's to a million tris, depending on the size of the wall. Once the wall was a higher resolution, I selected the "Displace" button and I switched the displacement type to "texture2D Map". The texture you want to use to displace the geometry cannot be virtual, so you would need to turn that off first by double-clicking on the texture in the content browser and checking off that option.


If you are using a material from Megascans, which usually packs their textures, you will need to change the color channel to blue, red, or green in the options to use your desired map. To control the intensity of the displacement, use the "Displace Intensity" slider. Once you have made these adjustments, you are all set. In case the mesh is too heavy for your scene, you can always use the "Simplify" tool within the modeling mode window. This tool allows you to reduce the triangle count while retaining the detail you just added. This can help ensure optimal performance in your scene. Here is a shot of the brick wall using this feature.

 

It looks so much better than just a Normal Map, and it can catch the light and obtain nice shadows from it. I learned this from a tutorial on YouTube by Wiktor Ohman called "Displacing Geometry: Creating 'Ninety Days' in Unreal Engine 5".

I also used the modeling tool to create wood shavings. First, I switched to the modeling mode and created a rectangle. Then, I adjusted its scale to the correct shape and added subdivisions to both the width and depth. Since we will be deforming this mesh, it's important to have a good amount of resolution to avoid any harsh edges. Once you are happy with your base mesh, hit "Accept" and then add a "Warp" to the mesh. Mess with the transforms to get a nice curl and click "Accept" when you are done. Now we just need to hit the "Simplify" option to lower the resolution back to an accepted tri count. Add a wood material to the mesh and now you have wood shavings. Later, add the mesh to the foliage tool and start painting it into your scene. 

Lighting

It's time for the fun part: lighting! While looking up references for this project, I came across many scenes that were set during the day, using the sun and sky as the primary light sources to illuminate the interior of the room. However, I wanted to do something different, so I chose to create my scene at night. To achieve a more realistic lighting setup, I aimed to use as few fill lights as possible, relying mostly on global illumination (GI) to do the work. 

I usually switch the GI from Lumen to Ray Tracing. I get really nice results from UE5's ray traced GI, ray traced shadows, and ray traced reflections. Lumen is awesome and works extremely well, but if you are creating a personal scene and not working on a game, then ray tracing can go a long way. The problem with this is twofold. First, it is much more expensive to switch to ray tracing and can easily slow down your computer, depending on how big your scene is and how many different assets you have loaded. The second reason is that Nanite does not work well with ray traced shadows (at least not in version 5.2 of Unreal Engine), and you get shadow artifacts on your Nanite objects. Turning off Nanite on your assets will fix this, but it will only further slow down your scene. So, like I said, if you have a small scene and a good computer, then you may be able to take advantage of ray tracing. If not, then Lumen and Nanite are still awesome and great options to use.

Rather than going for a more monotone look, I decided to use two different colors in my lighting. A warm color and a cooler color.  I saved the warmer ones primarily for the middle of the scene, while the cooler colors were used along the edges.

I didn't want there to be any completely black areas, and I didn't want to fake it with extra fill lights. Instead, I added as many light sources as needed to achieve the desired look without making the lights excessively bright or large, which could break the realism of the scene. In a daytime shot, you can often rely on the sun and sky to get a lot of the GI. However, for this nighttime shot, I had to rely solely on actual light sources such as lamps, bulbs, and fire. At the same time, I didn't want the scene to appear flat with light everywhere. So I layered the lights with some distance between them to create variations in light and shadows, resulting in more depth. Shadows play an important role in lighting. They are just as important as light as they help define shapes and depth, and can contribute to the storytelling aspect. Hence, when lighting your scene, keep shadows in mind and don't just focus on adding light everywhere.

If you feel the need to include fill lights, ensure that they make sense and are directional. In other words, avoid simply placing a point light in the middle of an area to illuminate it without considering its impact on the realism and overall appearance of the scene. If there is a light source in your scene, add some fill light coming from the same direction as that light source. This approach will enhance the visual appeal and realism of your scenes.

When it comes to rendering, I try to get the highest quality image possible from Unreal Engine. Firstly, I start by rendering 2K images as they are quicker to render and handle. I render everything in a 16-bit .exr file format, allowing me to import it into Davinci Resolve for color grading afterward. It's important to render it as a 16-bit .exr file because it provides a wider range to work with during color grading. Here are the console variables I use to achieve a cleaner render output from Unreal Engine.

I got most of these from reading Unreal Engine 5 documentation, as well as watching the tutorial "Unreal to Davinci Resolve Workflow – ACES & sRGB" by William Faucher.

When I have my sequence rendered out and imported into Davinci Resolve, I can finally begin the process of color grading. I won't go into detail about how to color grade in Davinci Resolve, as there are already numerous tutorials out there. However, I will say that Davinci Resolve is very robust and offers many tools to achieve the look you are going for. It also allows you to add any sound or music to your movie. Once you are satisfied with the visual and auditory aspects of your piece, you can proceed to render the final movie.

Working in Unreal Engine 5.2

Although I didn't utilize anything from version 5.2 that wasn't in 5.1, you can easily tell that stability has improved in this update. As for the atmosphere, I wanted to achieve a more relaxed and realistic look. I added a subtle amount of volumetric fog to allow the lights to interact with it, along with some floating particles to create the impression that specks of dust are present throughout the woodman's workshop. This scene was meant to create a feeling of warmth and familiarity, so I mostly utilized warm colors in my lights with a small touch of cooler colors to compliment them. 

Final Words and Pieces of Advice

During my free time, it took a week to finish this piece. The biggest challenge for me was achieving smooth and authentic camera work. I got a lot of information from a friend of mine, Arvin Villapando, who is a brilliant Tech Artist and has a lot of experience working with cameras and editing. With his advice, I was able to make the camera movements feel much smoother and less jarring than it originally was. Getting to know and learn Unreal Engine's modeling tools was also a huge plus. Creating wood shavings and smoothing out lower-resolution props straight in the software without having to move to another application saved me so much time. Although there is still much more to learn, the tools I did utilize were easy to understand.

I am sure that everyone hears this a lot, but I always recommend watching anything by William Faucher. He has such extensive knowledge of Unreal Engine, particularly in lighting, that it would be a huge disadvantage not to watch his tutorials. I also highly recommend watching all of Tilmann Milde's Lighting Academy tutorials. While they are for Unreal Engine 4, the principles of lighting remain the same. Additionally, I love watching speedruns of people creating environments. Although I don't have a specific recommendation in mind, watching these speedruns always sparks new ideas on how to approach environment creation.

Michael Kahn-Rose, Lead Lighting Artist

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more