Mersad Fazeli shared the work process behind the Wood Cutter's Hut project, talked about how the grass and water shaders were made, and explained why Unreal Engine 5 was chosen for the work.
My name is Mersad Fazeli, I’m a 3D Environment Artist. In 2019, I joined two of my friends, and we started our indie game studio. At first, we started with 2D games and pixel art style in Unity, we even published a pixel art mobile game in Iran’s android local market, but after many trials and errors in vector art, raster art, etc., we decided we want a different challenge, so we moved on to Unreal and 3D art in 2020.
I took many courses at that time, but the most valuable one was Gnomon Workshop's Stylized Castle course. After that, I started an environment inspired by the Golden Temple from Ghost of Tsushima but unfortunately, I misjudged the scope of the project. However, I managed to finish that project at the cost of quality.
After that, I met Ehsan Ebrahimzadeh, Senior Environment Artist at Arkane Studios, and I participated in his mentorship class. I worked on “Church” during the mentorship and I learned so many things. I believe that was a crucial turning point in my carrier, after that, I put all of my experience and knowledge from previous projects into Wood Cutter’s Hut.
I chose Unreal Engine for this project because I have a fair amount of experience with it. The reason that I chose it in the first place for my personal projects is that it’s more commonly used by environment artists and there are more resources and courses for Unreal Engine, for example “Building a Stylized Environment” by Gnomon Workshop combined with Unreal learning library is a great kick-starter for Unreal Engine.
The Wood Cutter's Hut Project
For my latest project, I had a clear picture of what I wanted to do. The goal was to make a fairly small-scale environment with a focus on sculpting, trims, texturing, lighting, and color, so the concept by Kong Wenjie was perfect. It is clear in terms of shapes, textures, and style, so I didn’t have to use too many references. I had a PureRef file for every section containing the main concept and a few other shots; the key point was to avoid extra shots so I could remain focused on the main concept style. Here are some of my Pure Ref files.
In this scene, almost every model needed to be sculpted and baked using trims, and working non-destructively was important. I made two different trim sets containing tilling and non-tilling and some unique meshes because I wanted to have some close-up shots, so avoiding stretching and repetitive look was necessary.
Another key factor for achieving this goal is low poly modeling, by which I mean small twists, bends, and displacements that change the silhouette of the mesh. This technique is very effective and it can change your repetitive and boring trims into interesting and unique meshes. Here are some shots before and after the low poly modeling pass.
Other models were created in standard low poly, high poly, and baking workflows. I either created low poly myself or used ZBrush's Decimation tool. I use Blender as my modeling package, which is not the best modeling package for UVing but with Texel Density, ZenUV, UV Toolkit, and UVPackmaster, Blender is as good as any other modeling software. These plug-ins saved me a ton of time during this project.
I kept my sculpting simple to avoid surface noise because having flat surfaces helps to make sweet contrast and helps your sculpted details to pop. For this project, I didn’t use anything fancy, just ZBrush's default brushes and Orb brushes.
One thing that helped a lot was separating base meshes for models like stumps and logs to have more control over caps and barks. After exporting the high poly, I used DynaMesh to create a single mesh in order to make the low poly using Decimation Master.
I wanted my environment to look as close as possible to the concept, so the textures were important and I had a very iterative prosses for textures. Except for my hand-painted texture atlas that contains my leaves and flowers, all other textures are procedural.
In the early stages of making each texture, I always import the texture into Unreal, this way I can get a sense of what my texture looks like in the engine. I believe this really helps in every project because sometimes you spend hours making a texture without knowing what it looks like in your environment and you can always reimport your textures, so there are no costs.
At some point, I duplicated my main camera and in post-processing of the duplicated camera, turned the saturation off so I could see values easily. The other tool that helped me to deal with the values and colors was Just Color Picker. JCP is a less-known free software that captures color data of any pixel on the screen and allows you to bookmark colors.
Keeping consistent style in textures is one of the most challenging parts of making stylized art, but making some rules for your texturing prosses will help you to retain your style. For example, I had very simple and smooth Normal maps but detailed Base Colors with some lighting information.
I also tried to use certain patterns and custom Grunge maps and shades of warm and cool colors in every texture.
The water shader in this scene is the first water shader that I had created, so I was kind of worried about that, but with some tutorials on YouTube, I easily made a water shader using Single Layer Water in Unreal Engine 5, which can interact with objects in the scene using Mesh Distance Field.
The grass shader was also very fun to make. I used a mask for the wind pattern and virtual texturing to blend them with the terrain. Here is a tutorial that will let you make a grass shader very similar to mine:
The lighting in this scene was quite simple as I only had one light source and one fake light to exaggerate global illumination. I used ray tracing for the lighting method because I had some problems with the shadows of small objects with Lumen. Here are the settings that I chose for my directional light and post-processing.
The roof tiles were adding too much noise at some point, the issue was the ambient occlusion between tiles, so I had to get rid of them. One common solution was to use tilling textures instead of the actual mesh and use the meshes on top of the texture wherever I wanted to have more lighting information. The problem with this solution was I wanted close-up shots from the hut and I didn't want the roof to look so flat. I edited the normals of my roof tiles and aligned them in a way that there would be less AO information between them. This way, I had a uniform look from a distance and a nice look from a close range.
In the end, I’m pretty happy with the results and the things that I learned from this project, so I strongly recommend anyone who wants to test a new art style or focus on quality to choose a diorama.
Getting feedback constantly is one of the most important things in art, I was getting it from my family, friends, and most importantly my mentor, Ehsan, whose contribution changed my environment massively.
My main advice for every new artist would be to find a mentor or get feedback in communities like Dynasty Empire, where there are many good artists willing to help.
This content is brought to you by 80 Level in collaboration with Unreal Engine. We strive to highlight the best stories in the gamedev and art industries. You can read more Unreal Engine interviews with developers here.
You may find these articles interesting