logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Rendering & Lighting a Photorealistic Abandoned Scene in Unreal Engine 5

Subash Chander has told us more about the Abandoned Staircase project, spoke at length about modeling and texturing the assets, and showed how Unreal Engine 5 was used to create a realistic atmosphere.

In case you missed it

You may find this article interesting

Introduction

Hello! My name is Subash Chander, I am a 3D Environment/Prop Artist from Sheffield, UK. I enjoy creating photorealistic 3D environments and telling stories through visuals.

My journey began with photography, photo editing, and post-processing, which grew into learning Adobe Premiere Pro, Adobe After Effects, and Cinema 4D. Then, I came to know about Unreal Engine and Unity. I started to explore and enjoyed creating landscapes and importing 3D assets from marketplaces into game engines. Later on, I shifted my focus towards 3D art creation. I taught myself how to use most software, including Maya, Substance 3D Painter and Substance 3D Designer, Unreal Engine, and I watched a lot of online tutorials and videos on YouTube. I was particularly interested in game environments, so I decided to pursue a Master's degree in Game Art at Sheffield Hallam University.

For my university final project, I decided to do an interior part of an abandoned Pripyat apartment, which is a baked lighting environment in Unreal Engine 4.27.

After I completed that project, I wanted to do a high-quality real-time photorealistic 3D environment in Unreal Engine 5.1, as well as to learn real-time lighting. So, I started to push myself to develop my skills.

The Abandoned Staircase Project

Before starting this Abandoned Staircase project, I started to explore Lumen in Unreal Engine 5.1. I did a fair share of experimenting, as well as different kinds of lighting setups, with the scene. All this practice strengthened my understanding of Lumen. It really made me feel comfortable with real-time lighting.

Here is the tutorial that helps to understand Unreal Engine's HDRI Backdrop, I found this video very useful:

Once I was ready to start my project, I felt it would be best to have someone to guide me in a proper way to complete it. I joined Jeremy Estrellado's mentorship program to get myself familiar with an industry-standard workflow and receive professional feedback.

Reference Gathering

I'm always fascinated by abandoned places because you have a lot of story options to add. In addition, I enjoy making a mess, including dirt, dust, drips, and items that others once left behind. So, I started gathering real-world reference images from online sources, such as Pexels, Pinterest, 500px, Flickr, Adobe Stock Photo, and others.

I approach any work by asking myself questions about my artwork: What kind of theme do I want to create? How was this location before? What kind of people live or have lived there? What type of architecture is present? How damaged is the building? Is the ceiling or floor collapsed? If it's abandoned, how long has it been abandoned?

Simply ask yourself questions and get comfortable with your artwork. I would also like to add that being aware of your surroundings may help clear up some false notions about reality. I was really careful in gathering references that aligned with the abandoned theme in terms of design and scale. To save time, I utilized this website to obtain accurate dimensions for the props. Subsequently, I began to drag and drop these references into my PureRef board, which would help address my queries regarding what I intended to construct. Therefore, always remember, "Reference is the key".

The Blockout Infrastructure

After I finished gathering the references, it was a good time to start with my initial blockout. I only highlighted the general infrastructure components required. I decided to model my work in Maya since it has always been one of my preferred and strongest modeling programs. It was a good idea to consider breaking complex shapes down into simpler ones so that they can be placed and scaled accurately. Personally, I bring an image into Photoshop and start differentiating it with random colors, although, it doesn't have to be perfect. It is up to the artist's discretion if they wish to do so.

Using Game Exporter to shorten my exporting time, I also adhered to an asset naming scheme. For example, if the asset is (Block/static) _meshname_Version, it will appear as (SM/BO_Wall_01a). This naming convention makes it convenient to reimport and proceed with the workflow without having to adjust the pivot point. This has tremendously aided in maintaining a steady pace of productivity by enabling uninterrupted work. 

Below, you can find my core production pipeline. Additionally, I maintained a folder structure within my drive to effectively organize my source files.

Firstly, I started with the grey box layout, continuously iterating back and forth to establish an initial composition. Here, I combined my photographic skills to keep that angle and make it much more interesting. To assist in constructing the desired visual style, color scheme, lighting, props, and more, I utilized a mood board along with additional references. This aided in setting up the camera based on the envisioned aesthetic.

At this point, it was a good time for me to identify all the props needed. I listed them out based on priority, and for this, I used Notion and Miro. This really helped me to keep track of my assets.

The Modeling Workflow

I always begin with a primitive shape to simplify my process and gain an overall idea of the mesh. So, I began to fine-tune the shape until I was satisfied. Before exporting everything to ZBrush, I detected and highlighted my hard edges in Maya, then unfolded them using hard edges and later, laid them out. I learned this process through Military Radio by Simon Fuchs.

For the high poly, I used all the standard brushes as well as Mallet, and Trim brushes, which I used for the damage purpose.

You can see that above I wanted to demonstrate how I approached cracked walls using Clay build-up Brush and Morph. Although, there are other ways to accomplish this as well. I believe this way was the most straightforward. Throughout this project, I often used these brushes to add detail to my meshes.

To add a touch of realism, I incorporated additional geometry to the steps, allowing for subtle variations and enhancing their overall appearance.

I didn't undergo a sculpting process for these steps. Instead, I focused on highlighting the hard edges and softening the edges to create the illusion of a high-poly mesh. This approach also facilitated a smoother UV unfolding process. Additionally, I added some extra mesh on the laser lines to get rid of the harsh cuts on the corners and achieve a more natural blend.

Low poly was created by decimating the model in ZBrush and then, cleaning it up in Maya to remove any unnecessary triangles. Rather than doing manual retopology, this technique is a bit easier to complete an asset.

Speaking of the UV process, the first UV Map was based on the Texel density of 5.12 and was followed by, the second UV Map, which was packed in 0-1 spacing. I wanted to pack my UV much more efficiently, so I used RizomUV, which allowed me to control the UV orientation and fix it if needed. Even if you layout them, they still maintain the same orientation as you set them initially. RizomUV was a huge help throughout the project.

I used RizomUV to Maya Bridge, which made my production pipeline incredibly simple and effective. This tool is particularly useful for managing large-scale assets. However, for smaller assets, I keep them within the 0 to 1 UV space.

Here you can see the first UV and the second UV packings:

Texturing

Before beginning the texturing process, I sketched a rough idea for my Unreal Engine's Shader function. I figured out how I was going to texture my asset.

To provide a visual representation of my material approach, I modify the color of the asset. This helps me refine my ideas through an iterative process.

When it comes to texturing, I always consider the layers of materials present on the object and try to replicate them using real-world references. So, I spend time understanding the material and applying the same principle as it should. For example, if the item has been exposed to direct sunlight for an extended period of time, there may be dust and dirt on top of those layers, and paint may fade, so all these things should be considered before texturing the environment. All these elements bring visual fidelity to the environment. The more references you gather, the more ideas emerge.

The Texture Breakdown

Procedural – Floor Tiles Creation:

I first created a simple model in Maya and added subdivisions to a high-poly mesh using ZBrush. In Substance 3D Designer, I employed a simple plane to bake Normal, Occlusion, and Material ID information. Then I brought it into Substance 3D Painter, where I felt more comfortable and confident in my advanced texturing techniques. This allowed me to enhance and refine the texturing process.

All of my materials were created in Substance 3D Painter, but I still relied on Substance 3D Designer to create unique cracks, grunges, and color variations for this tile.

Here you can see the cracks:

Achor points:

On the technical side, I was wondering if all of my textures were in the correct PBR validation. So, I found the default PBR validate filter on the filter shelf in Substance 3D Painter and dragged it to the top of my layer stack to activate the PBR validator.

If the texture is green, it is in the correct PBR value. If you find a red value, make sure you're below or higher in the PBR value. As a result, everything must be taken into account. If you look hard enough, you can right value in it. If you're new to the PBR workflow, Ben Cloward has a free tutorial which is a very informative resource. His tutorials have taught me many things. Here you can have a look at it:

While I was working, I used to check this chart to verify that my materials were all under PBR value. It gave me an insight to work confidently.

Here you can see my glass texture:

All of my graphic textures for the window glass were created using Photoshop. The process was straightforward, resembling traditional painting methods.

The Alpha Creation

In my scene, I incorporated real-world references for some of my alphas. To achieve this, I utilized Photoshop along with additional adjustment layers. This allowed me to take a procedural approach to generating alphas rather than creating them manually. Despite this method, it still retained a natural appearance. This technique has proven to be immensely valuable in creating stencils for use in Substance 3D Painter, enabling the creation of complex RGBA masks.

You can simply drag and drop your desired texture into the texture section. It can be procedurally created based on the Greyscale value. You may also have control over it by adding levels.

Using the same method, I created an alpha from my real-world reference. There are still many ways to do it, but I find this method to be more convenient for my workflow.

The Master Material Workflow

While crafting this master material, I took into consideration how the material would be constructed in the real world. This served as my initial inspiration before diving into the development process. To ensure accuracy and avoid potential errors, I decided to break down the material into separate functions for different controls like Dirt, Damage, and Color variation. Additionally, since most of my textures were procedural, I adopted an RGBA texturing approach to effectively handle larger-scale assets. Keeping all these aspects in mind, I diligently continued developing my master material.

To demonstrate it, I brainstormed a complex blend material on my Miro board for clarification. From that, I started to work on smaller Material functions.

Standard Base – Material function:

Color variation – Material Function:

This will be very useful when importing the assets and adjusting the value to achieve the desired texture tone.

Blend material alpha control – Material function:

Dirt and Dust: World position offset – Material Function:

Dirt's mask is based on the world Y-axis position, I wanted to change the appearance of each asset simply by changing the value of the parameter.

Main master material – Material:

This makes it much easier for me to understand proper naming conventions while working with my material instance and getting different variations to the assets.

The Scene Setup

In my scene, I incorporated two types of lighting: Skylight and Directional light. For the majority of my light setup, I relied on Skylight to provide overall illumination in the scene. Additionally, I introduced Directional light to enhance the scene's luminosity by increasing the indirect lighting samples. I iterated back and forth to fine-tune these settings until I achieved a clear understanding of their impact.

To explore various lighting conditions, I downloaded HDRI images from Poly Haven. This resource proved to be highly beneficial in evaluating different lighting scenarios and optimizing the visual presentation of my scene.

Only Skylight:

Skylight and Direction light:

The Conclusion

The goal of this project was to improve my skills in various areas, such as creating a photorealistic real-time 3D environment in Unreal Engine. Additionally, I aimed to improve my abilities in modeling, texturing, vertex painting, material shader creation in Unreal Engine 5, optimizations, reusability, procedural texture creation, and lighting. Throughout the project, I also refined my planning and critical thinking skills and deepened my understanding of managing scale and complexity within a scene.

From this project, I have learned the significance of seeking feedback from fellow artists to improve my scene. Patience is a crucial attribute when acquiring new skills, and exploring different methods is essential for enhancing my understanding as an Environment Artist. I encountered areas where I needed time to learn and refine my workflow according to the project's requirements. Throughout this journey, I have grown and developed from my mistakes. I am grateful for the wonderful guidance and support provided by my mentor, Jeremy. Additionally, I extend my gratitude to the people at DiNusty and my friends for their assistance and feedback on this project. Their contributions have shaped the scene and enabled me to acquire new techniques, ultimately leading to the completion of the project.

Finally, I'd like to thank Theodore McKenzie for the wonderful opportunity to write an article for the 80 Level and to share my experience with others. I hope you find this article useful.

Subash Chander Marappan, 3D Environment/Prop 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