Brandon Tieh talks about the challenges of setting up an environment full of both incredibly tiny and astoundingly huge details and explains how cold, wintery props were created in Unreal Engine, ZBrush, Substance Painter and Quixel Mixer.
In case you missed it
You may find these articles interesting
My name is Brandon Tieh and I am a self-taught 3D Environment Artist. I will soon be graduating with a Bachelor’s degree in Exercise Science from the University of Texas, Austin. I started learning environment art in the second half of 2020 and made the decision to pursue a career in the game industry rather than one in physical therapy, which was my original plan. Since then, I have been building my portfolio so that I can soon break into the industry as a Junior Environment Artist.
I have always been a fan of the fantasy genre – creating worlds that reside outside of reality is something I find really fascinating which is why I chose an artwork done by Ilmari Kumpunen as the main reference for my Snow Hunt scene. I think creating environments that really interest you should always be a priority when making a portfolio piece. At the end of the day, a portfolio is your own and you can express as much creative freedom in it as you want!
Before gathering my references, I try to pick out the essential components of the scene and focus on those things when searching for photos. Snow was a heavy hitter in this project, so I made sure to include that in my references. I also decided to make rocks for this project, as I thought they would go nicely with the snow.
Next, I will head down the Google images rabbit hole and start adding stuff to a PureRef board. Not all references were gathered at the very beginning of the project because I usually end up adding more as I go. I try to gather real-life references as well as references from actual video games to give me a rough idea of how things would look in 3D. For the rocks especially, I looked at a lot of God of War sculpts. I had essentially no prior experience with sculpting rocks before this, so these were very helpful.
For the production of this scene, I worked under my mentor, Aaron Winnenberg. The goal of this project was to create a game-ready environment. I was given assignments through a task board called Trello, which were tackled in order from start to finish as would be in a production setting. The tasks would start off as “To do” and when ready to be evaluated they would make their way to “Review”. If a task was shippable, it would change into “Done”, but if it needed more work it would go into “In Progress”. Overall, working using a task board and regularly communicating with Aaron allowed for this project to progress really smoothly.
Blockout and Composition
One of the first steps in making any environment is the blockout phase. I had initially used Unreal Engine's default landscape editor to create the landscape for my blockout but ended up trying World Machine for the first time. It gave me lots of natural hills and formations to work with and is definitely worth trying for anyone who is interested (they have a free version). I roughly sculpted out the area for the main camera shot and left a lot of space both in front and behind the camera. This would give me the option to expand the scene if I so chose which I actually ended up doing later in the project.
After that, I modeled out some really simple shapes and started placing them throughout the scene. Selling the scale for this scene was quite the challenge. I ended up having to make changes mid-way into the production due to issues with the scale. This definitely slowed things down but taught me that I should put more time into my blockouts for future projects.
I followed the main reference concept for the composition of the scene. When it comes to composing a scene from a 2D image, the toughest part is knowing what to include and what to leave out. A lot of this comes down to trial and error and just testing out what looks good. Some changes I made were to add some rocks to the left side in the foreground and remove the ribcage seen in the middle path of the main concept. The rocks added a natural vignette to the scene and I removed the ribcage because it felt a bit obstructive for the main gameplay path.
When deciding on which assets I plan to make for any project, I always start from big to small. An environment is much more about the big picture than it is about pouring tons of detail into every little thing, so getting your assets into the environment as soon as you can is really important. Working from big to small gets the ball rolling a lot faster and your assets do not always have to be perfect since you will end up doing multiple passes on them anyways. The snow wall formations stood out as the top priority for me, so I started working on those first.
Referring to what I just said, working on the snow walls was the first step I took in making my assets. I sculpted up some rocks in ZBrush and re-sculpted some ice walls I found off of Megascans. When it came to sculpting the rocks, the way they read in the game was really important. Sometimes a sculpt can look really good in ZBrush, but none of the details end up coming through in the game engine. Because of this, I made sure to regularly take my sculpts into UE4 to see how they would read from afar. Once sculpted, I decimated and UV’d them in ZBrush and got them ready to be baked in Substance Painter.
I took some ice walls off of Megascans and made some changes to them so that they would fit the scene better. I ended up cutting half the wall out and trimming out the bottom portion. I also sculpted down some of the noise which gave me the re-sculpted version seen below. Making a Megascan asset into something of your own is always a great option.
The walls themselves were just a mix of rocks and ice walls being kitbashed together. A simple Dither Temporal AA was used to get a smoother blend between the two. With enough iteration, I managed to get a lot of really nice detail out of these assets.
The main concept did not offer too much detail in terms of the gate, and I could not find any great references for what I wanted so I just got creative with it. I broke the gate up into modular pieces in case I wanted to use separate parts of it around the scene. I also took it into ZBrush to chip up the edges and add some cracks, and for some extra detail, I made a trim sheet to decorate the gate. Trim sheets are great because you can pretty much always find a place in your scene for them to be used. Tim Simpson has a really great trim sheet tutorial on YouTube so anyone who is interested should definitely check it out.
I made 5 tillable textures for this scene – snow, ice, bone, and two rock textures. I pretty much used tileables throughout the entire scene because anything within the 1-to-1 UV space simply did not give me enough texel density with the assets being so large. I used Substance Painter to create these tileables, aside from the two rock textures for which I used Substance Alchemist and Quixel Mixer. I also took a gravel texture off Quixel Mixer that is not shown below. No displacement or tessellation was really needed for the rock textures since the rock sculpts themselves had enough detail.
Materials and Shaders
Three main master materials were made for this scene. This included one for the rocks, one for the landscape (which included the snow and the ice), and one for props and hero assets. Materials and shaders were something that I tended to shy away from since I always found nodes to be somewhat intimidating. My mentor, Aaron, really encouraged me to learn more complex shader work which really opened my mind up to how useful they can be. It is just one of those things that you really have to get your hands dirty with to understand. It was super frustrating at first, but overall worth it.
Rock RGB Mask and Z-up Shader
I used the RGB mask workflow for the rocks in this scene. Using the RGB mask workflow allows for a higher texel density whilst reducing any repetition you would see when just using a single tiling texture. Casper Wermuth has a great tutorial on ArtStation explaining this process. It essentially works by masking out different parts of the rock by color (Red, Blue, and Green) and assigning different tiling textures to each color accordingly. The mask was made in Substance Painter and was taken into Unreal Engine where it was lerped together with the tileable rock textures. You can use up to 3 tiling textures in the RGB mask workflow, but I decided that 2 were enough.
I made it where snow would only generate on areas of the rock where its faces were pointing upwards. Unreal has a node called “World Aligned Blend” that really simplifies this process. It saved me a lot of time from having to manually vertex paint snow on the rocks.
I also had the option to paint out areas of the snow if I so chose.
For the landscape material, I used Unreal Engine’s Landscape Layer Blend node which allowed me to paint multiple textures on the landscape through a single material instance. I used 3 different tiling textures (snow, ice, and gravel) in the landscape layer blend which I will get more in-depth about below.
The snow texture was something I made in Substance Painter. Snow can be tricky because it looks pretty simple on the surface yet can be easy to mess up. Having good amounts of roughness variation in the snow makes a huge difference and prevents it from looking flat. I also applied some sub-surface scattering to create the appearance of light penetrating through deeper areas of the snow.
Creating the Ice
The ice was another texture that was also made in Substance Painter. I used the Bump Offset node to create a depth illusion beneath the surface of the ice as well as a low roughness value for a reflective look. Another alternative to this would be to use parallax occlusion mapping. I opted to use the Bump Offset because it was a bit cheaper and achieved essentially the same look. The ice was more of an experimental thing that I added mid-way through the project which was really fun because I got to try out some new methods on my own.
Storytelling and Set Dressing
Storytelling and set dressing go hand in hand a lot of the time because you can tell a story based on where certain props and assets were placed. Paying attention to where things like rocks and debris fall is important for storytelling and set dressing. You want to try and have it make sense. For example, in the screenshot below, I placed a lot of the smaller rocks at the very bottom of the snow walls because they had probably rolled and bounced off some of the larger rock structures.
I needed to add some more shots to the scene, so my mentor and I came up with the idea to add a cave in the back where the character would emerge from. This added a nice storytelling element to the scene and made it feel like the character was embarking on more of an adventure.
Lighting and Fog
I kept the lighting 100% dynamic for this scene. This was something that my mentor recommended I gave a try, and I thought this would be fun for a change. I used a basic Directional Light, Sky Light, and Exponential Height Fog for the base lighting and added spotlights and point lights with cast shadows off to fake areas of bounce light and GI around the scene.
I also made some fog emitters that would cover the ground of the environment. It involved a simple translucent material setup with a fog and Depth Fade node attached. I used this same setup for the falling snow and just changed the mask in a new material instance.
The biggest challenge I encountered with this scene was the sheer size of it. It was pretty tough to sell the sense of scale with the main structural elements being so large and yet far away from the camera.
In order to help sell the scale, I ended up making some smaller rock variations that I would place at the bottom of the snow walls. Since the scale is mostly relative, some smaller elements were required so that the bigger ones could stand out more.
I really try to emphasize that you just need to learn from people who are better than you. As a self-taught artist, not being afraid to reach out to others is really important since you do not really have that base of connections that you would get through school or university. There is nothing wrong with asking someone you do not know whether it be on ArtStation, Polycount, or Discord servers like DiNusty and Experience Points for advice and feedback. I credit this as a major contributor to my improvement and will be sure to always pay it forward when I can.