logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Using the Substance 3D+UE5 Combo to Set Up Stray-Like Textures & Lighting

Anja Wagner shared a detailed breakdown of the Transcendence project, explaining her approach to the texturing process and lighting arrangement in Substance 3D software and Unreal Engine 5.

Introduction

Hi, I’m Anja Wagner, a 3D Environment Artist from Germany. I was initially working as a Graphic Designer before I decided to shift my career focus and unite my lifelong passions – art and games.

Games are not just a momentary bliss for me. They are a perfect symbiosis of beautiful art, music, and stories that I can immerse myself in. I realized that I wanted to create those amazing worlds myself and bring this joy to other people. I studied environment and props for games at Think Tank Training Centre, where I recently graduated. 

The Transcendence Project

Since I played Stray by BlueTwelve Studio for the first time, I’ve been a big fan of this artwork. I love this special dystopian atmosphere and the sentimental, cozy feeling when I’m walking through this world. With my fan art project of the scene where you meet Zbaltazar in Antvillage by Kime Honma, I wanted to pay tribute to this magnificent piece.

Besides the heavy focus on texturing, the environment offered everything I wanted to improve my skills in, from organic and hard-surface modeling and sculpting to lighting and diving into new fields like fabric creation or animation. I knew that I could spend hours on the project without getting sick of it, which is a point that I believe is often underrated.

My goal was not simply to recreate the scene, but to create my own interpretation filled with my personal creative input.  

Planning and Reference Gathering

My first step in this process was to create a reference sheet for which I used PureRef. This step is crucial, and I recommend investing much time in it. It helps to get a feel and understanding of every bit and piece of your environment and a roadmap for your project.

I broke down the scene and analyzed it in terms of structure, mood, color palette, repetitive and unique assets, tileable and unique textures, lighting, effects, camera, and software requirements. 

As I wanted a clear structure and a limited framework, I closed the open back of the room. This presented me with the creative task of changing the environment and its look in a logical way so that it would still make sense and be believable. I decided to move the scene into a bunker setting with a dark corridor, which emphasized the dystopian and mystical nature of the scenery. Apart from that, I stuck very close to the original concept in terms of structure and composition, because I didn't want to lose the original flair of the environment. But I wanted to bring my creative input and make the place feel personal. That's why I used my references wherever possible and tried to connect the objects with a personal story, for example, the radio is from my grandfather, books are on topics that I love, and pictures show my favorite places and paintings.

It was of great importance to me to understand how the objects are constructed, what dimensions they have, and how they behave and change, which is why I collected references from different perspectives, environments, and states. I also looked for 3D references to understand how other artists have achieved the look of an item and what details they have emphasized.

Blockout

Once I had planned my scene, I proceeded with a blockout in Maya and Unreal Engine, using simple shapes and rough modeling sketches and creating a first lighting pass. This stage is important to establish the proportions and arrangement of the assets and to have a good basis for your setting.

One trick that helped me to keep track of the proportions was to add an average-sized character to compare the objects with to see if it made sense. It can easily happen that you use the wrong size unit and things suddenly look like they belong in a doll’s house.

During this phase, I also gave thought to how I could simplify the workflow with assets that appeared multiple times, so I didn't have to make an infinite number of individual objects. For example, I needed a lot of screens. I planned four different types and could easily vary their appearance in size, color, and Vertex Paint in Unreal.

I think it would have been better to set up some camera aspects, such as aspect ratio and perspective for the main shot, more firmly from the start. It would have made it easier for me to visualize the later renders during the process and to identify focal points more effectively.

Blockout in Maya:

Blockout in Unreal:

Modeling & UVing

My modeling workflow was mainly split into two pipelines. When creating the reference sheet, I had already sorted the assets according to whether they use tileable materials or a baked texture and, therefore, require a high and low poly mesh.

For the first category, which mainly included architecture, I opted for a mid poly workflow where each mesh is given an appropriate amount of geometry. It ensures a smooth appearance and a good Vertex Paint result.

For the second category, I learned a new working process from my mentor. I usually created all versions (proxy/high poly/low poly) in Maya, whereas I now use ZBrush for the high poly part. I liked this approach as it felt more natural and artistic than in Maya. I imported the proxy model from Maya and added the details and imperfections to achieve a more realistic look. Then I created a low poly version from the proxy model in Maya. I always imported the high poly version to make sure both versions match for baking.   

This new technique allowed me to learn new skills. Also, since I first created a complete asset to learn the workflow, I was automatically given a reference asset, which I used to determine the overall look and level of detail. This way, I could use it as a guide when creating other assets and avoid getting lost in too little or too much detail.

I followed a similar workflow in sculpting and fabric creation, except that the high poly meshes were made either in ZBrush (for sculpts), or in Marvelous Designer (for fabrics). Then, I decimated or retopologized and adjusted them in Maya. One helpful technique I additionally chose for retopologizing fabrics was the Transfer Attributes option in Maya. It allowed me to transfer the shape of the high poly model to a plane to get a perfectly matching low poly version.

For the pipes, I had originally planned to build each tube individually and add connections to distribute them along the line. However, my mentor helped me realize that a modular approach consisting of several pieces with connections would be more advantageous. This way, the components would look better blended with welding seams and the assets could be reused for other scenes due to the modularity. I developed four kits in different sizes that allowed me to customize the pipes to the exact conditions and shapes of the room. The Snap Vertex function in Unreal was helpful for the assembly, as it allowed me to put the parts together quickly and easily.

Alongside modeling each asset, I also created their UVs. For objects that had a tiling texture provided, I distributed the UVs across multiple tiles to preserve the texel density.

The baked assets utilized a 0-1 workflow where I tried to pack multiple props into one tile or stack identical shells. The main focus was to maintain a consistent texel density, but I accepted slight variations to make the best use of space, as I learned that this is important in terms of performance in Unreal because wasted UV space is wasted memory. Another method to avoid this is to opt for a rectangular texture if the tile cannot be filled and to arrange the UVs in a limited part of the tile. The sides must be a power of two (for example, 2048x1024, 2048x512, 2048x256). 

While I’ve tried to learn different approaches, I’ve only scratched the surface and there are so many more methods to learn. I would like to plan UV sets more intensively in the future. It became clear to me that it would have given me a better overview from the outset of which objects make sense together and how they can be grouped best, thus saving me rework. 

Texturing

Texturing was the stage that I enjoyed the most. At this step, you can define the story of your object and bring it to life. I always kept a keen eye on realistic and balanced Color Values. The Roughness Values are even more important. I’ve learned that it’s essential to have a good and balanced range as they have an extreme impact on a good result and prevent the asset from looking dull or unnatural.

The tiling textures were created in Substance 3D Designer. I used to break down my reference and split it into different levels of surface details. Then I translated it into the Height Map to generate the other required maps from there.

I would like to explain the process with an example of creating concrete. When creating the Height Map, I usually started with the general surface features, large shapes, and patterns that characterize the surface, such as large broken-out pieces or the general unevenness of the surface itself. Then I worked my way to medium details that emphasized the bumpiness and created the typical surface texture of the concrete. Finally, I refined the material with micro details, such as small holes and imperfections that illustrate the porosity of the surface more clearly, employed the Slope Blur node to add more corrosion to the broken edges, and added extra details like the small stones to the damaged areas. 

This structure provided me with masks that were also useful when creating other maps, such as Base Color or Roughness. As with the Height Map, the process followed the same pattern of layering different material properties to achieve the desired look.

Substance 3D Designer is a software that offers what feels like an infinite number of possibilities. Truly understanding and mastering the software in its full range will require lots of analyzing graphs, following tutorials, and practicing. 

Props

For the props, I used the traditional approach of texturing in Substance 3D Painter, based on the reference. I always had my reference sheet open to keep an eye on it while texturing. I started by giving each part an initial base color, roughness, and metal value to have a base for further editing and to organize the layers. I found it very handy to use the Color Selection, which allows you to assign materials based on your baked Color Map. This requires a bit of preparation of your high poly mesh by creating color groups for parts having the same material. However, this can save a lot of time as you can add all relevant meshes to a mask selection at once.  

From there, I created the materials with the correct values and introduced noises and patterns to achieve the desired feel and get a realistic look on the surface of the materials. Since I wanted my objects to look worn and old, as if they had been around for a long time, I used masks, generators, and filters to get variations within the color, to give the components imperfections and defects, and to add dirt and dust. 
 
I’ve learned that you have to influence several channels to get a good and natural result. For example, a scratch causes not only a height difference but also a difference in color and roughness. When using noises, it’s beneficial to combine multiple channels to break up the repetition and procedural feel.

There are some tools in Substance 3D Painter that I recommend using. The first one is an ACES LUT by Brian Leleux that helps get a better color match between Painter and Unreal. The second one is the PBR Validate Filter, which uses green and red colors to indicate whether your color values are good, too dark, or too bright.

Workflow in Unreal Engine

Since I imported assets into Unreal instantly after each completion to check textures and composition, I didn’t have to go through a long phase of importing and setting up.

However, setting up materials took a lot of time and was partly challenging. I worked with master materials, which is a performance-friendly way where one material functions as a parent, from where you can create material instances. These children can include many parameters that can be quickly adjusted without changing the master material. For example, this made it possible for me to have one specific material setup that I could use for many assets by simply swapping out the texture map in the instance. It also gave me an easy way to get numerous variations of one object by quickly adjusting a tint node parameter, which is a color that affects the Base Color Map to change its appearance. 

Blend materials came in handy in the process, they allow blending between material layers and defining which vertex shows which material by using Vertex Paint. As you can see, I created a clean and damaged concrete material and a dirt layer, so that I could assign different properties to the floor. I utilized the same method for the walls where I made a metal, rust, and paint material as well as a dirt layer. I used a chipped version of the paint material as a transition layer for better blending. It was the first time I used such complex material. It took me a lot of help and attempts to get behind the individual features and set it up correctly for my needs. 

These procedures were also practical for creating different versions of repeating assets. The blend material gave me control over the worn look of an object. With the Tint node, I changed the color without having another texture map.

When I distributed the books in Unreal, I realized that although I had created the right amount, as the books were arranged so that you only see the front and back covers once each, the spine titles were visible more often. There were now several copies of the same edition lying around. I decided to use masks to project different titles onto the spines, which allowed me to depict an infinite number of diverse books. Color nodes gave me the additional option of controlling the color of the title and the object itself.

In the polishing process, I made final adjustments to the Vertex Paint and created decal atlases with Procedural Decals from Substance 3D Designer and hand-painted decals from Substance 3D Painter. This technique is efficient for making the scene more realistic. It connects and integrates the elements better and introduces more wear and tear. It looks more natural when wax from a candle runs onto the surface. Welding seams give the impression that the wall was built of several panels or leaks or damage occurred around the pipes.

Lighting

Lighting was a very satisfying stage for me as my scene was heavily depending on it to make things seen and to create the right mood. But it was one of the hardest as well, as the line between too dark and over-lit was very thin.

Contrary to the concept, I decided to highlight the center of the environment a bit more. I added Point Lights to the lanterns and bulbs. Also, I generated different light intensities to produce variations leading the eye to the center towards the screens and the robot. In the background, I added a cold green neon light, bringing a contrast from behind to the main focal point and adding reflections to certain objects. Besides, I used general lights to gently illuminate the scene and prevent it from becoming too dark.   
 

As my lights also mainly determined the overall color mood, here was the point when I adapted the final color scheme. When I gathered examples of color moods, I found out that I particularly liked a combination of greenish and yellow-orangy tones, which also fitted the story very well in terms of color psychology. The warm lanterns and the green neon light form a good contrast, which draws additional attention to the focus.

Finally, I introduced a subtle Volumetric Fog that scattered the light and created a soft, mystical glow. The Volumetric Scattering Intensity parameter in the light sources and the settings of the Volumetric Fog gave me the flexibility to fine-tune this effect.

Post-Processing and Effects

From the beginning, I knew I wanted to add effects and movement to make the scene more alive. I started to learn animation, prepared my mesh and animation sequence in Maya, and created Blueprints in Unreal with different speed and time settings.  

I also wanted the candles to look more natural, the flames should move and the lights flicker. I made an animated flame material in Unreal with adjustable parameters, such as Speed, Brightness, and Color for different variations. For the flickering effect, I used the Light function, which consists of a combination of modified sine curves switching back and forth between values 0 and 1. This function is applied to the light source and influences it. A few lanterns and light bulbs were also given this effect, but I was careful not to overdo it.

For the screens, I decided to produce a loop with a simple screensaver sequence as I didn’t want it to distract from the rest of the environment. The Media Texture function in Unreal is a great way to achieve this. It’s a material where you plug in your prepared video file to use it in a blueprint and define the parameters in the event graph. I created the video sequence in Premiere with a file from Pixabay, which I edited and added effects like the glitching and the face. Here, too, I benefited from the Tint node to imitate different screen colors.  

In the final adaption of my scene, I used the Post-Process Volume to slightly adjust brightness, saturation, and color of the overall look. Since I had a lot of lights in my scenery, I wanted to add Bloom to create an even more natural, cozy, and mystical aspect. However, it didn’t bring the desired result, but I finally found the solution in an effect called Halation, which is a red-orange glow around contrast points that happens with film stock. I emulated this effect by using the Bloom settings, changing the colors, and tweaking the cutoff point. I adapted this great technique from this article, which is a wonderful source of information, It gave me good insight into post-processing materials like vignette, grain, and barrel distortion as well. 

Rendering

For rendering, I worked with the Movie Render Queue in Unreal. I highly recommend using this instead of Movie Scene Capture, as you can achieve higher quality and have many more features to adjust. It’s best to watch tutorials and read documentation on this topic to understand the basics. In the end, it was a lot of trial and error to find the settings relevant for my renders to achieve good results in quality and render time. I found great guidance in videos by Jon Jags Nee and William Faucher, which gave me a lot of helpful input. 

Conclusion

The main challenge for me was to find a good balance between staying close to the concept and capturing what I envisioned. Giving free rein to my creative influence while preserving the essence and character of the original scene required a lot of thought and experimentation.
 
It's been a real pleasure working on this project and seeing the environment evolve from phase to phase. Not only have I challenged myself on so many fronts and learned so much, but I've also met a lot of great people who shared their knowledge with me and played a significant role in my development process as an artist. Merci for that!

A few things have become clear to me that I would give as advice to fellow artists. Take your time. Have fun, experiment, make mistakes, and take breaks to acquire additional knowledge, for example, through tutorials (it also helps to get a fresh look at your project).  
 
Don’t skip preparation and planning! It's essential to have a good understanding of your project, your scene, your goals, and your workflow. And, most importantly, find the right references and study them. For me, it was also helpful to make work plans for my days or weeks. They don’t have to be strict, but they keep you on track.
 
Talking to other artists about your and their workflows and approaches is a great source of learning and improvement. It opens your mind to new perspectives and possibilities and gives valuable feedback. 

I appreciate you taking the time to read this article and I hope I was able to give you an interesting insight into my process and thoughts on this project. If you’re interested in more renders, breakdowns, and information, visit me on ArtStation. Finally, I’d like to end with a line from my favorite show that kept coming to mind while working on this project: "Details are what make a story great." 

Anja Wagner, 3D Environment Artist

Interview conducted by Gloria Levine

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