3D Environment Artist Jonatan Ersarp has shared the modeling and texturing workflows behind the Azure Hillside Home project, explained how Substance 3D Designer was used to create materials for the scene, and spoke about rendering and lighting the project in Unreal Engine 5.
Hi everyone! I am Jonatan Ersarp, an Environment Artist from Sweden. I have always been interested in games since I was little, but it took me a long time to understand that you can actually work with games. I began my journey in high school where I got introduced to game design and found it to be a lot of fun! After high school, I applied to a bunch of universities and got accepted into Uppsala University Campus Gotland. The program was for game design and graphics, and it was there that I fell in love with 3D art and decided that's what I wanted to pursue as a career.
During my third year of University, I left school to work for Experiment 101 in Stockholm, where I got to work on their first game Biomutant as a 3D Artist. At Experiment 101, I learned a lot about level design and game development in general. After almost five years at Experiment 101, I felt it was time for me to move on to a new studio, and that's when I started working at Hazelight, creators of A Way Out and It Takes Two. I have only been at Hazelight for a month, but so far, it's been great!
The Azure Hillside Home Project
Before starting at Hazelight, I had about two months of vacation. It had also been two years since I last posted any personal art to ArtStation. I wanted to see my progress as an artist and create a new scene, stylized as my last one but improved in every aspect. I started searching ArtStation for amazing stylized concepts, and one artist that stuck out to me was pixel cat. Almost every concept from pixel cat can be translated into a beautiful scene, so there were a lot of potential projects to choose from. I chose the Azure Hillside Home concept as I really liked the composition and the unique-looking building.
Since I wanted to level up my stylized skills, I started to search ArtStation for beautiful stylized scenes. Since it's a style I love, I already had a lot of these projects in a collection on ArtStation. When I had a good amount of references, they acted as my source of inspiration if I'd ever get stuck or needed a bit of motivation. For this project, I used PureRef to organize my refs, but at Hazelight, I got introduced to Miro, which is essentially PureRef but online, which is very cool for collaborating with others.
Blocking Out the Scene
Starting out with the blockout, the plan was to first block out the entire house. I modeled a few important pieces for the house and threw them into Unreal Engine together with a size reference mannequin. Based on the concept, I lined up the Main Camera, added my old landscape material, and roughly sculpted some ground so the house wasn't standing on a flat surface.
When I arrive at this stage, I examine the concept art more carefully, seeing what works in the image and what works in my scene. Here is where I realized I needed to adjust the scale of the buildings. Usually, I don't follow the concept rigorously, but I wanted the same feel of the house that I got from the concept, so I went back and forth a lot to make the scale correct.
When I was happy with the scale of my buildings, I started to refine the entire image with more accurate landscaping, a tree, and more blockout modules.
Modeling the Assets
I use Blender for all my modeling and find it to be the most exciting piece of software out there right now. Blender has a huge community and constant updates and is extremely reliable. Maya crashed while you were reading this sentence.
My workflow for all the assets is quite similar. Firstly I model the asset, then I add a Bevel modifier to make all edges smooth. As I didn't bake any assets in this project, I could rely on the Bevel modifier to do all the heavy lifting on my assets. The only assets I had to use a different technique on were the roof tiles.
For the roof tiles, I again took advantage of the powerful modifiers in Blender.
This technique uses a height texture to displace geometry. For it to work, you'd need a heavily SubDivided mesh. I used this technique because I didn't want to manually model the roof tiles since I was indecisive about their appearance. With this technique, all I needed to do was update the height texture and then re-export the assets.
I know the wireframe looks crazy, but my intention was to utilize UE5's Nanite system, so I wasn't bothered with the polycount on these assets. I did use a Decimate modifier at the bottom to make them easier to work with in Blender. If this technique were to be used without Nanite, it could still work but would need more manual work and perhaps a Remesh modifier to clean up the geometry a bit.
In the concept, there are many assets that would require sculpting and baking, and I didn't have time for that, so that's when I started using the OCD plug-in in Blender. In retrospect, this was a huge time saver. This neat little plug-in from vfxguide creates procedural damage on the edges. It works best with simple shapes such as cubes.
From a lot of testing, I found that using the clouds procedural texture together with low values (depending on the size of the object) would produce results quite similar to a sculpted mesh. The plug-in also automatically assigns a second material id to the damaged areas. Surprisingly the final mesh isn't extremely high poly either, only adding extra polys to the damaged area, meaning that this approach works great without Nanite.
I modeled the tree in SpeedTree. Nothing fancy here except for the leaves, which are oriented in a way I found to work best with my shader.
The shader I use is based on this tutorial, the result is very fluffy and easy to customize leaves!
The flowers are all hand modeled in Blender with alpha cards.
I try to incorporate Substance 3D Designer as much as possible whenever I'm working. It's extremely powerful and flexible whenever you wish to tweak things. I textured the entire project in Substance 3D Designer, even the foliage. I don't have too many magic tricks regarding the texturing but my main focus when doing stylized work in SD is:
- Keep Albedo simple with a lot of color variation.
- Normal Maps should be soft with defined shapes, no noise.
- The Roughness Map should contain a lot of variation but still use stylized shapes.
When adding the materials to the walls I felt they could use some more dirt and color variation. With a lot of experimentation, I have created masks that have a "painterly" feel to them.
I then use these in UE5 to create color variations that tiles in world space. If I'd add the variation in the main textures then the tiling would become too noticeable. This way I can control the size, color, and strength all in the shader. In this example, I have cranked up the strength and added red and blue colors to illustrate how they look.
For the trimsheet, I sculpted the high poly in ZBrush. It was my first time sculpting a trimsheet and I have not sculpted that much for both my personal and professional work, so it was good to practice a bit!
I really recommend Polygon Academy's YouTube series on how to create trimsheets, it helped me a ton!
Since I started pretty early with a camera (which I moved from time to time when needed) aligned somewhat similarly to the concept art, the composition came pretty naturally. I try to frame my image so if the viewer would wander away from the main subject of the image (the house) they will find other things to look at. Such as the mountains, trees, and fences in the background.
The clouds are regular Volumetric Clouds that are available in UE5, but with a heavily modified material to look more fluffy and stylized!
I always enjoy breathing life into my scenes so I added a few effects that move to illustrate that it's a scene where things happen.
The smoke is a very simple texture being panned in a material and then emitted from a Niagara system. I learned how to create this from this video:
I then created the wind trails by studying how the windtrails work in Stylized Fantasy Provencal, which is a great free project on the UE Marketplace. Finally, I added some butterflies from the Realistic Starter VFX Pack Vol 2, which is also free on the marketplace.
The power of UE5 really shines bright with Lumen. This scene only has one Directional Light, a SkyAtmoshphere, Exponential Height Fog, and a Skylight. This scene probably has the simplest light setup I have ever used and it looked so good out of the box with help from Lumen.
I didn't do too much tweaking besides the intensity and color of the Directional Light. The concept art is quite blue in the color and my scene was very yellow, so I changed the temperature setting under Color Grading to take some of the yellow out.
Probably the most difficult part of this project for me was the house. It contains a lot of modules and unique windows, roofs, etc. It would drain my motivation quite quickly because of the sheer amount of modeling and UVing. One tip for others who might be struggling with motivation is to find something in the project that is more fun and do that for a couple of hours. For me, that was to create textures in Substance3D Designer. At the time it might not be the most crucial thing to be working on for the project as a whole, but at least it is something that is relevant to the project, and most importantly it can help you from quitting entirely!
One hard lesson I learned during this project was to never use preview versions of Unreal Engine during a project. I downloaded the 5.1 Preview because I was excited to try out Nanite on vegetation. It worked quite well but then I noticed the foliage tool and texture importer were broken. This probably added several hours to the entire production of the scene and in hindsight, I wish I just stayed with the stable version of Unreal!
Thanks for reading and feel free to reach out to me if you have any questions! Take care!