logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Creating Resident Evil-Inspired Attic Scene with Substance 3D & UE5

BaiTong Li showed us the workflow behind the Attic Studio project, discussing creating an atmospheric artist’s workshop inspired by Resident Evil with a library of unique assets using ZBrush, Maya, Substance 3D Painter, and Unreal Engine 5.

Introduction

Hi everyone! My name is Baitong Li, an incoming student at Gnomon. I’m excited to be here and can’t wait to share my work and journey with you. And I hope this interview will bring something helpful or inspiring to everyone!

I was born in a beautiful small city in China, and from an early age, I was fascinated by games. Back then, though, I only saw them as a small pleasure in life. What truly changed everything for me was in middle school, when I played my first AAA game: The Witcher 3. I was completely blown away and deeply captivated. It was incredible to see a game so immersive, rich in storytelling, and realistic. From that moment on, I started dreaming of being part of creating the very best AAA games in the world.

After a few years of exploration at Beijing University of Technology, I discovered that what I was both most skilled at and most passionate about was environment art. I believe environments are the part of a game that most directly create a sense of immersion for players, and they’ve always been the aspect I pay the closest attention to when I play(I’m the type of player who sometimes forgets the main quest because I’m too busy taking “landscape photos” in photo mode.)

So after that, I spent nearly three years focusing on environment art and preparing my portfolio. During this time, I was fortunate to meet some alumni from Gnomon, and with their guidance-along with learning from platforms like 80 Level, Bilibili, and YouTube, I was able to greatly improve my skills. That experience also sparked my desire to study in the best place in the world dedicated to 3D environment art. (I’m happy to say that I’ve now achieved that goal.)

In addition to focusing on improving my personal skills, I’ve also been actively seeking practical opportunities. My first internship was at Bilibili Union Studio, where I worked on the development of the Ys VIII remake. I was responsible for editing several maps, which gave me a deeper understanding of the standards and workflows in game development.

After that, I joined a project at Seasun Games, where I expanded my knowledge of another engine: Unity, and gradually developed a strong interest in creating tools and materials to improve efficiency and visual quality in environments. This experience also helped me secure my third internship, where I worked as a Technical Artist at Unity China on an auto show project as well as another unannounced title.

Although my ultimate goal has always been to become an Environment Artist, the experience as a Technical Artist gave me more confidence in building the kinds of environments and effects I envision. Currently, I’m collaborating with USC alumni on a stylized project called Balloon. Its artistic style presents a completely new challenge for me, but challenges always bring both fun and progress, don’t they?

Attic Studio

Setup & Reference

After winning The Rookies Monthly Challenge in March, I decided to redesign and expand on my winning project, and that’s how Attic Studio was born.

The Attic project was inspired by Pinocchio and the safe rooms from the Resident Evil series. I wanted to create a complex interior environment that is rich in storytelling. When I play games, I often find myself lingering in these kinds of spaces, a place that tells a story is always so captivating. The idea of building a complex, story-driven environment of my own felt very exciting.

Before I start looking for references, I usually spend some time outlining the story background. This helps me keep the project within a reasonable scope and makes the process of gathering references and planning the composition more efficient. The story I built for this project takes place in a near-modern era: the attic belongs to an elder artist who spends nearly all his time there, creating tirelessly, barely leaving except to sleep. The attic is in an old building and is filled with various objects he collected from elsewhere over the years.

Once the background was clear, I moved on to planning the scene in more detail. I usually start by sketching a rough concept, nothing too artistic since I’m not from a traditional art background (though I’m learning drawing now). I only block out the light, color tone, and some outlines to get the atmosphere right.

After that, I divide the attic into different areas: what is this part used for? What kind of story does it tell? Once those questions are answered, the rest becomes much clearer – it’s all about gathering references.

For realistic projects, I’ve found a little trick that works well: I collect references from three directions: real photos, games/films, and scanned assets. Real-world photos ensure credibility, media references bring in artistic interpretation, and scanned assets give me both unusual angles and a benchmark for detail. That way, I know what level my project should aim for.

Composition & Blockout

In this project, my workflow was a bit different from what I usually do. Normally, I like to work with Maya and Unreal Engine side by side, pushing the project forward in both of them at the same time. But for Attic Studio, I decided to stay in Maya longer and handle most of the work there first before moving into UE for the final polish. Since the project involved a large number of props, this approach gave me much more control and helped me manage everything more efficiently.

For me, composition and blockout are inseparable parts of the process. As you can see from my concept sketch, I leaned toward a 21:9 canvas paired with a 35mm camera lens setup. This gave the environment stronger depth ratios and allowed me to showcase more details in a single frame.

Once the camera setup was decided, the real work began. I brought the concept sketch into Maya as an image plane and placed a female asset in the scene (about 1.7m tall) to serve as a reference for scale. From there, I built a rough blockout to establish the perspective and the overall arrangement of different areas. This step required a lot of back and forth: constantly adjusting the camera, the image plane, and the blockout to make sure the proportions felt grounded in reality while the composition remained logical from the main camera view. The core principle was simple: use the character to anchor believability, and use the main camera to anchor the overall look.

Modeling

Now we’re getting to the modeling, the coolest part of this entire project.

For every project I work on, I like to set myself a challenge; it’s my way of constantly pushing my limits. In this project, the biggest highlight and also the toughest part was the sheer number of props. That’s right, this little attic studio ended up with nearly a hundred unique assets, ranging from finely crafted wooden puppets to large boxes stacked with a huge number of items, from rustic wooden tankards to tiny paintbrushes. And honestly, I’m quite proud to say I managed to complete all of this in less than ten weeks. Not only did I hit the quantity, but I also kept the quality of each model at a high level. Let me show you how I made it happen!

First of all, when it comes to modeling, I have to admit something: in order to speed up asset production, I decided to skip the full, traditional PBR pipeline. You know the drill: low-poly, high-poly sculpt, retopo, baking… stop right there. Apart from hero assets, I rarely go through all that. Instead, I stick to the standards of game environments: as long as the silhouette reads well, I let the materials do the heavy lifting. So, my modeling workflow was very straightforward: build the base meshes in Maya, add bevels to the edges, then apply smooth to make a fake high poly. This approach drastically cut down the production time. A quick tip here: I usually set the bevel segments to 2, which makes UV cutting much easier.

UVs

Thanks to the modeling workflow I mentioned, I didn’t need to do any retopology. All I had to do was unwrap the UVs of the models right after beveling and before smoothing. For UV unwrapping, I used RizomUV, which, in my opinion, is much faster and more convenient.

One thing that required special attention in this scene was the large number of wooden assets. Since wood textures are directional, I had to carefully check the UV orientation of every single asset to avoid mistakes. A core principle I always keep in mind is that wood grain grows along the longer side of the object, so when laying out UVs, I make sure the longer side aligns consistently, and the UVs must be straightened.

Materials & Texturing

Once the UVs were properly handled, I moved on to the texturing stage, which turned out to be the most time-consuming and effort-intensive part of the project.

First, let’s talk about the props’ materials. Oh boy, nearly 100 materials! If I hadn’t come up with a strategy, that workload would have completely crushed me. To speed things up, I went back through all my reference images and categorized the materials. For each category, I carefully created a sample in Substance 3D Painter and turned it into a smart material. As the texturing process progressed, the different types of smart materials were gradually refined. By the time I moved on to new props, the texturing workflow was reduced to three simple steps: apply the smart material, tweak it, and then add unique details.

Fortunately, most of the scene was made of wood, so even a single wood smart material was enough to cover a large portion of the work. Here, I’ll use this wooden cabinet as an example to break down some of the material details and workflow.

1. Base material tiling: I have to give a big thanks to the Uscan wood asset pack, which gave me a lot of inspiration when creating wooden textures. I started by applying a tiling material. I captured some high-quality wood textures and processed them into tiling materials in Substance 3D Designer, then imported them into Substance 3D Sampler to generate other channel maps (like a Normal Map.

And then I brought everything into Substance 3D Painter as the base tiling material. To break up the repetition of the tiling, I added another layer of base material using a mask. To save time (and admittedly to be a little lazy), we can also use Megascans textures as a base material.

2. Adding first layer of details: After establishing these base materials, I added a further layer of detail, including highlights, darkness, and general surface features, to make sure the material looked broadly correct. Based on my references, I applied a simple layer of edge wear, dust, and parallel wood cracks to the wood cabinet.

3. Enhancing highlight details: When working on materials, I like to separate the brighter and darker areas and handle them in order; otherwise, it can get messy, and I might end up reworking the same detail multiple times. Guided by my references, I decided to give the wood more of an aged look. I added elements such as scratches, scuff marks, and more pronounced edge wear.

4. Enhancing darkness details: Old wood can never be completely free of stains, so I usually divide the treatment of dirt into three parts: grime near the bottom, leakage from the top, and speckles across the surface. Of course, it’s important to keep the intensity of dirt in check; otherwise, the surface can end up looking overly dirty and visually unappealing.

5. Unique details & Post-processing: Large chips, markings, and weathering are details I add to each piece of wood to make them look “unique” in the environment. At the end, I apply a layer of post-processing to unify the overall color tone and add a sharpening effect to enhance realism.

For the other materials, the workflow was quite similar. I exported them as three texture maps: Base Color, Normal, and a packed ORM map (Ambient Occlusion, Roughness, and Metallic). This approach is very resource-efficient.

After that, I created three Master Materials in Unreal Engine like them, corresponding to different material types: standard surfaces, glass, and masked materials such as fabric. These were then applied to the Static Meshes, which I created.

If a model required more than one material type, like this alarm, I needed an additional step before importing it into UE. After finishing the textures in Substance 3D Painter and exporting them, I assigned multiple material slots in Maya. That way, once inside UE, I could apply different Material Instances of the same texture set to the appropriate parts.

For the roof, floor, walls, and beams, I used different approaches to handle the textures. For the beams, after unwrapping the UVs, I used a simple Wood Trim texture based on the UV layout and applied it to achieve the beam material. 

For areas like the roof that required tiling, I used vertex color texture blending like that.

Final Scene Adjustment

Even though I had already established most of the composition in Maya, I still needed to do some extra work in UE to enrich the details, adjust the overall light–dark balance, and lock the visual focus onto the area I wanted players to notice (for example, the puppet at the center of attention). My first step was to set up a basic lighting preset. I didn’t make it too complex; it was to establish where the light was coming from, which areas would appear brighter or darker, and where the focal point should be. This also gave me a rough guideline for detailing later on.

Detail Scattering

I once came across an article on ArtStation about composition (apologies, I can’t recall the author’s name) that discussed a principle called “large, medium, small, micro.” The idea is that a scene should contain a combination of elements at different scales to achieve balance and interest. You can see that my scene’s props already follow this principle of large, medium, and small, so I focused the extra details on the smallest objects to make the overall composition feel more layered and dynamic.

I chose to add some wood chip-like decals to the scene, placing them on the ground near tables and piles of clutter. This not only makes sense in terms of realism but also adds subtle details that enhance the composition. At the same time, the placement of these wood chips serves a guiding purpose, subtly leading the player’s eye and movement toward the central puppet.

Lighting

Finally! It was time for the lighting stage. Before I start lighting, I usually switch the Buffer Visualization to Base Color mode. I then take a screenshot and import it into Photoshop to check its histogram, which helps me adjust the scene’s colors. My goal is to keep the colors balanced, avoiding areas that are too bright or too dark. This prevents the need for extreme lighting values later on, which can make subsequent adjustments very difficult.

For Attic Studio, I wanted to create a bright, warm atmosphere of midday sunlight. I aimed for a contrast with the indoor displays to better highlight the storytelling. I started with the main light source: the room’s primary light comes from direct midday sunlight through the window. I used two spotlights shining through the window onto the floor, keeping the light source radius small to produce sharp, defined shadows.

Next, I simulated reflections from the main light to further illuminate the room. I added additional lights near reflective surfaces, pointing outward, to enhance the sense of light bouncing. For this scene, I also used some very bright rect lights on the tables to emphasize the feel of strong noon sunlight. Finally, I added subtle cool lights in the foreground, opposite to the main light, to increase contrast without letting the near objects become too dark.

Post-Processing

For post-processing, I didn’t do much in this project, as the interior scene didn’t have a very large depth. I’m very grateful for the LazyGodRay asset from Fab, which allowed me to add beautiful god rays to the main light source. I also used EasyFog cards to introduce fog near the floor, effectively emphasizing the dusty atmosphere inside the room.

(Icon from pngtree.com)

And then, I made minor adjustments to the Color Grading settings, slightly reducing saturation and shifting the overall color toward blue. Since the scene contains a lot of wood and a warm midday light, the overall tone tended to be too yellow. I corrected this to ensure the visuals weren’t overly warm. Additionally, I enhanced some texture details to make the wood surfaces in the room stand out more.

(Icon from pngtree.com)

Final Thoughts

Challenges

All right, that’s everything I wanted to share. Completing a project with this amount of assets in roughly ten weeks was truly a huge challenge. You need to quickly establish a workflow, plan weekly processing, and overcome every obstacle that arises during development.

Gratitude

I want to take this opportunity to thank again the Gnomon alumni at Harshblue who gave me valuable feedback on materials and models. And also huge thanks to José Vega, founder and senior artist at Worldbuilders Workshop, for his insightful critique, which made me realize there’s still much room for improvement.

Advice

It’s been nearly three years since I first got involved in game environment art. Although I’ve taken quite a few detours, I’ve gained a lot of valuable experience along the way. As a new Gnomon student, I’d like to share some advice for young artists who are starting, just like me:

1. Never pass up any opportunity to seek advice: The internet is an incredible bridge; you can find experience and insights on countless platforms and reach out to outstanding artists for guidance. Trust me, most of them are more than happy to help.

2. Set a deadline for every project: At the start of a project, it’s easy to hesitate, unsure where to begin. Near the end, you might also hesitate on performance or details. This often leads to dragging the project out too long and losing interest. The right approach is to set a strict deadline and complete the project by then. This method is especially useful when managing multiple projects. Once a project reaches its deadline, stop and move on to the next one, returning later if time allows or have some free time. Otherwise, you will risk a vicious cycle: delays in the first project push back the second, then the third, and so on. This is an effective way to manage time, especially in a team setting.

3. Start with the big picture before focusing on details: When I was taking a sketching class, my teacher once told me never to get stuck on the details and always start from the overall composition. This advice applies equally to game environments; there’s an endless number of details, and focusing too much on them can make your workflow inefficient.

4. Learn to balance work and life: Nothing is more important than your health. If you’re tempted to stay up late working on a project, my advice is to manage your time wisely. After all, only by staying healthy can you sustain a long and successful career.

5. Diversify your skills: The game industry is constantly evolving, with technology continuously iterating. To achieve high-quality environment results, you’ll inevitably need to touch on VFX, Blueprints, and even some coding. At the same time, creating visually compelling environments also requires understanding composition, lighting, and aesthetic principles. Developing a broad range of skills is essential to work efficiently and confidently.

6. Never give up: There were many times when I felt stuck on a project, and sometimes I even thought about quitting. But if you just grit your teeth and push through, the sense of accomplishment and the progress you gain will be tremendous.

Thank you all once again for reading. See you on the next part of the journey!

If you enjoy my work, feel free to follow me on ArtStation and The Rookies.

BaiTong Li, Environment Artist/Technical 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