Karim Yasser on Setting Up Lighting for House in Picturesque Canyon

Karim Yasser has told us about the Gljúfur project made with Unreal Engine, explaining its composition and lighting in detail.

Introduction

Hello, I'm Karim Yasser, a Lighting Artist currently working at People Can Fly. I began my career in 2019 as a Level/Lighting Artist and later specialized in technical lighting. My job involves setting up lighting for levels, creating tools to streamline production workflow, and fixing technical issues.

In July, I became an Unreal Authorized Instructor partner for Epic Games and that helped me to use my skills in lighting, environment creation, shading, and color grading to bring the "Gljúfur" project to life.

In this article, I'll go through my workflow and take a closer look at the "Gljúfur" project.

The Gljúfur Project

Initially, my inspiration for this project stemmed from Sergey Vasnev's work on "Dry Lake." I admired the meticulous attention to detail and the mood he established within his project. This prompted me to explore Icelandic canyons for inspiration, drawn by Iceland's breathtaking natural landscapes. I gathered various images from Pinterest to immerse myself in the mood and essence of Icelandic scenery.

To structure my mood board effectively, I divided it into key elements: background, foreground, house, riverbed, and tone/mood/atmospherics. Among these, creating the background and the house were the most significant challenges, particularly because I aimed to craft them utilizing Megascan assets.

A valuable tip I’ve learned is that while drawing inspiration from 2D/3D concepts is valid, real-world references, especially from nature, enhance artwork significantly. Constructing believable virtual environments requires studying natural references as they add authenticity and realism.

Composition

Recognizing the strength of the triangle as a compelling geometric shape, I aimed to create an engaging composition that would captivate the viewer's attention. You can notice that especially in the background where these large canyons were added together.

The triangle shape is very noticeable in the background

Here's a breakdown of the steps I undertook in the process:

  1. Setting up the Initial Camera: To ensure stability and avoid accidental movement, I established the primary camera position and securely locked it in place.
  2. Integrating a Large Landscape and Sculpting: I incorporated a sizable landscape and utilized Alpha brushes for sculpting. This method allowed for rapid iterations, enabling me to achieve an aesthetically pleasing look within minutes.
  3. Utilizing Basic Geometric Shapes for Scale and Depth: I used simple cubes provided within the editor as a foundational geometry. These cubes served to provide a sense of scale and depth within the scene.
  4. Incorporating Larger Cubes for Background Vista: I introduced larger cubes to define the background vista, contributing to the scene's overall composition and depth.

This video demonstrates the progression from these initial steps towards a more refined and polished appearance, showcasing the evolution of the composition and detailing the iterative process used to construct the scene.

Background Vista

  • I utilized assets from "Nordic Coastal Cliffs" to create the large canyons. These assets were layered to replicate the references in my mood board, resulting in a more realistic and believable vista.

Vista Assets (background)

Constructing the House

  • Referring to my mood board, I carefully positioned the house using the rule of thirds. Placing it on the right side of the frame, intersecting the 3x3 grid focal points, made the scene more engaging and left ample space for the rest of the composition.
  • Constructing the house directly within Unreal Engine presented a challenge. Initially, I used Unreal's modeling tools to start with displaced planes using a brick material from the Quixel library.
  • To enhance the house's structure, I added wooden pillars for support, variation, and increased realism.
  • Adding moss clusters on the roof aimed to emulate the style of Nordic houses commonly covered in moss, aligning with similar architectural aesthetics found in the area.
  • Seeking to elevate the house's quality further, I incorporated "Stone Walls" from Megascans. Although slightly reminiscent of Japanese architecture, these walls were adjusted in terms of their albedo properties to harmonize with the scene's color palette.
  • Lastly, I scattered grass atop the roof to seamlessly blend the house into the surrounding environment.

By following these steps and incorporating various elements and adjustments, the house construction within the scene aimed for a harmonious integration with the overall composition.

Scattering Foliage

Quixel Megascans Trees – European Hornbeam

  • These trees were chosen for their ease of use, adaptability, and included wind interaction settings. Their incorporation into the scene significantly enhances its overall aesthetics, offering simplicity in modification and seamless integration.

Ground Foliage

  • To maintain consistency within the environment, I utilized the same grass that was previously employed on the house roof. The grass was slightly modified in terms of color and mesh variation to suit the surroundings while preserving a cohesive visual theme.

Adding Moss on Assets

  • An efficient technique was employed to swiftly introduce a layer of moss onto various assets within the environment. To achieve this, I customized the material used for Megascan assets by incorporating a material function. This function projects moss along the Z-axis of the world position, ensuring that the moss consistently appears on top irrespective of the static mesh rotation.
  • As a result, the moss projection aligns accurately with the mesh geometry, contributing to a more realistic appearance.
  • Utilizing the "World Aligned Blend" node within Unreal Engine facilitated this technique, allowing for precise and effective moss application across various assets within the scene.
  • It’s a very common technique and can be used in other situations as well such as snow, sand, mud, etc. There are tons of videos and resources that explain this method in detail.

Assets Color Correction

  • Leveraging Quixel Megascan materials, adjustments were made to suit a specific color palette and seamlessly integrate assets with the overall environment. By modifying the albedo controls for each asset, adjustments were made to brightness, saturation, and tint. This step is crucial, especially when using assets from different collections, as their default colors may not harmonize with the environment.
  • This meticulous adjustment of asset properties is essential to maintain consistency within the environment. It allows for the reusability of assets without creating noticeable repetition or patterns across the scene. Additional material functions, like the moss projection technique, might also be employed to provide greater control over asset appearance, streamlining their reuse across projects.

Water Material

  • Crafting a water shader within Unreal Engine can be complex, so a decision was made to utilize an existing water shader. Specifically, the water material from the "Rural Australia" pack, available for free on the Unreal Marketplace, was employed. This pre-made material was adjusted and tweaked to achieve the desired appearance suitable for the environment.
  • The chosen water material offered a wide array of customizable properties, enabling fine-tuning to align with the envisioned look for the environment. Its versatility in terms of available properties allowed for adjustments that complemented the overall scene aesthetics.

Lighting – Lookdev

Now, we will start with the most interesting part of the environment creation, which is lighting!

Lumen is a fully dynamic global illumination and reflection system that is designed for next-generation consoles. Lumen renders diffuse interreflection with infinite bounces and indirect specular reflections in large, detailed environments at scales ranging from millimeters to kilometers.

Here are the required project settings for Lumen:

Why do I use Lumen? Well, it is a new solution for calculating dynamic global illumination, and in my personal projects, I use dynamic lighting and I don’t use any precomputed lighting as I don’t need to save performance for these projects, and I want to see what is going to be in the final render without waiting for hours baking the lights.

So, Lumen is a perfect solution for me to use. Instead of adding many fake bounce lights that simulate indirect light, Lumen will calculate the global illumination much faster and more accurately.

PBR Calibration/Validation

Before starting to add lighting actors, I adjust the base color values of the meshes to the proper PBR values for both metals and non-metals. I do this by using a custom viewmode I created before. Simply, it is a post-process material that has some mathematical operations to calculate whether the material’s base color is in a specific sRGB range.

Calibrating Spheres

  • Black Ball: This should be the darkest albedo value in the scene as this one has an albedo value of 0.04 so anything below this value should be brighter.
  • Grey Ball: This is used to visualize the contrast ratio between light and shadow, I will discuss that in detail right after this topic. A grey (middle grey) ball has an albedo of 0.18 which is the correct value of a grey color as our perception of colors isn’t linear, so we don’t calculate it by getting the average of the Exposure Values, instead, we use “Geometric Mean”. Long story short, 0.18 albedo value is the correct value for grey, not 0.5.

There are many articles and videos that explain that in detail, and why it’s 0.18, you can just search, and a ton of resources will pop up.

  • White Ball: This should be the brightest albedo value in the scene as this one has an albedo value of 0.85 (can be also between 0.8 – 0.9) so anything above this value should be darker.
  • Chrome Ball: This is used to see the reflections of the environment. It’s very helpful to detect any issues related to reflections as well as matching the directional light with an HDRI that has a sun disc.

Setting the Sky

The sky is very important to deliver the mood. I started with an HDR texture from the Skies LA pack but then I used another sky that had more detail and contrast, which made the lighting look more interesting.

With an HDR sky, I add a sky light component to capture the lighting data from the HDR texture. I set it to movable to get soft shadows from Distance Field Ambient Occlusion that uses Mesh Distance Field to be calculated.

Tip: I usually adjust the HDR texture brightness in its material instance to get a brighter sky and thus a brighter indirect light. I do this instead of increasing the sky light intensity to high values to get proper and consistent reflections over the environment. Adjusting the sky light intensity is not bad but sometimes the reflections will look inappropriate.

Sky light properties

Directional Light

It’s used as a sun. I used it mainly in this project as a large fill light that has a very soft shadow because I use many spot lights then as highlights.

Exposure/Contrast Ratio

As I was not working using manual exposure, I turned off the eye adaptation by setting the minimum and maximum Exposure Values to 1 and started initially with an Exposure Compensation value of 1.

At this time, the grey ball will be used, I place it anywhere in the scene, but I make sure it is way too far from the ground just to make sure no indirect light hits the sphere and I can then visualize the numbers correctly.

Using the Eye Adaptation (HDR) visualization mode, the difference between Exposure Value in both light and shadow was around 1.5-2, which represents a contrast ratio of 2:1 that is most likely for overcast mood. I eyeballed this value even before using the grey ball, but I used this grey ball as a calibrator to make sure I was heading to the right track and my light setup was consistent.

Highlights/Fake Lights

I always use these large spot lights in my projects to add more highlights to the environment, make some shadowed areas brighter, and push the overall lighting greyscale values even further.

When I start adding these spot lights, I convert the image into greyscale first by setting the saturation to 0 in the post-process volume settings. This is a faster approach to get better results in less time.

If the greyscale values are good, the final image look will be good as well. In greyscale mode, it is easier to detect if the lighting looks flat or not.

After adding these lights, I go back to the default saturation and then start adjusting these lights' colors to match the tone I need or the color palette of the lighting.

I may need to delete or adjust some lights' location/direction after that, it depends on what I see.

Adding Fog Cards

Using fog cards adds a lot of depth to the scene. I decided to use EasyFog, which was created and designed by William Faucher. It has a lot of texture variations which is perfect for many environments. It is also easy to use to get a specific desired look. Here is the scene before and after adding the fog cards:

Post-Processing – Color Grading

This is the final step in the lighting process in which I start adjusting the overall colors a bit. I didn’t use any LUTs, I tried to boost unreal color grading tools to achieve the desired look. Here are my post-process settings:

Usually, the lighting workflow has these repeated steps all over almost every environment and it may change a bit. This doesn’t necessarily mean that these steps are mandatory, you are free to test what fits your scene to achieve the desired result.

Conclusion

I spent around 2 days to finish this project. It didn’t take a lot of time as I already have the assets ready, and it has been a very long time since I created an environment, so I was so excited to finish it and I enjoyed working on such a project.

At the end of this interview, I would like to recommend some resources for artists who are willing to study and learn more about lighting in depth.

These resources are very helpful and helped me a lot throughout my journey in lighting:

  1. William Faucher
  2. 51Daedalus
  3. Ultimate Lighting Course - In-Depth Tutorial

This article also discusses the lighting workflow in detail as well as the exposure and contrast ratio.

Karim Yasser, Lighting Artist & Unreal Authorized Instructor partner for Epic Games

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