The Witch’s Quarter

Environment Breakdown

Kim Se Hun

Image_1
203

Kim Se Hun

Environment Artist

Introduction

Hello, I’m Kim Se Hun, a 3D Environment artist from Korea. I studied Game Design at Kongju National University, acquiring different skills needed to make and design games.

However, as my major focused more on how to make games in general, I studied 3D art mostly on my own.

Goals

For my latest portfolio piece, I was inspired by Eddie Mendoza’s concept art “The Witch’s Hut”. The concept art looked challenging enough for me to make and learn something new from it along the journey.

Most importantly, the biggest goal for me in this project was to make something that looked compelling to the human eye. In this breakdown, I will go through my thought process as well as the tips and tricks that I have learned.

Image_1

Software

  • Unreal Engine 4
  • 3ds Max
  • Maya
  • Substance Painter & Designer
  • Zbrush
  • Marmoset Toolbag
  • Adobe Photoshop
  • Quixel Mixer
  • Megascans
  • SpeedTree
  • PureRef

Reference Gathering

Using PureRef, I made a Reference board with images that I gathered from Google and Pinterest. Upon a quick search, I found out that the medieval houses in the reference were called Tudor houses.

From there, I learned what kind of methods and materials were used to make these. This knowledge came in handy later to decide what kind of approach I would take to translate them into game assets.

Image_2

After I had a rough idea of how I was going to approach Tudor houses, I also started to search for smaller props in the scene like windows, barrels, crates, doors, etc. and added them to the reference board.

Searching for references on E-bay helped a lot for smaller props like these since most of the images uploaded there were high-resolution images that were taken from multiple angles to sell them.

Having access to multiple sources of information about the object allowed me to understand and study how things work to produce more compelling results. More image references were added constantly as the project progressed.

Blockout

To determine the overall composition and scale of the scene, I made a blockout using very simple shapes in 3DS Max and imported them into Unreal Engine. This allowed me to have a better idea of the overall scale and composition of the scene.

During this process, I would often go back to look at the concept and references to match the overall look as much as possible. I also tested out some of the ideas I had in my mind on the areas that were lacking information in the reference and were left for me to speculate on.

Image_3

After I felt comfortable with the blockout, I started to add more details to some of the buildings and added some rough textures that were made quickly using Quixel Mixer.

I wanted to try out different methods on how to make the assets in general before committing fully to the workflow to yield the best results. After trial and error, I found an optimal solution to use shaders that allowed me to use vertex painting to mix tillable textures.

This way, I would be able to use fewer texture resources and add more variation in surface definition.

Image_4

Creating the Master Material

During the project, I wanted to learn more about the shader creation in-engine when it comes to 3D Environments. I made a Master Material that would be used throughout the project on various assets.

I went with exposing a lot of the parameters on the shader which allowed me to quickly iterate and change the looks of the material.

Image_5

I also made the master material to utilize the second UV channel that adds more details like color variation and dirt in crevices.

Texel Density

Having a uniform Texel density for the buildings was one of the things I wanted to do because it would give a consistent look to the art in the scene.

Because I had a lot of assets that I needed to deal with, I used the Advanced UV Normalizer script to quickly speed up the process of resizing the UV shells to the desired size. I stuck around with 1024 pixels per meter which I felt the most comfortable using.

Image_6

The Pathway

The floor was one of the things that were changed and iterated multiple times in this project. I started with making several variants of the cobblestone path materials using Quixel Mixer and painted it in-engine using the landscape material system.

Image_7

After I did the first pass on the pathway, I noticed that the floor was looking way too flat and uninteresting.

I went with adding a grass patch in the middle of the road to fill up the space which also acted as a guiding line that leads the eye to the main composition of the scene. I also added some water puddles which gave more material breakup.

Decals

Decals were also a big part of the scene that added more variation on the surface.

I used a bunch of decals I got from Megascans and placed them around in the scene.

Edge decals that I made in ZBrush also came in handy when breaking up areas that had sharp edges.

Foliage

For the foliage, I used the Wild Grass asset and European Hornbeam pack from Megascans. While placing the grass on the pathway, I noticed that the shadows were being cast too deep into the grass even on the bright areas where the sunlight was hitting directly.

To solve this problem, I made a separate shader that can edit the normal orientation to match the ground normal a bit more.

Image_8

These nodes were hooked up to the normal slot of the shader to edit the normal orientation

I also made my own Ivy and bush plant foliage using SpeedTree and added it to Unreal.

Trim Sheets

While I made most of the smaller props in the scene using a high-poly, low-poly workflow, it wasn’t effective time-wise.

So, I decided to make a trimsheet that would be shared across some of the props that will be used in the scene such as crates and barrels.

Using trimsheet not only sped up the process of asset creation but it also saved up performance on the overall texture memory since multiple assets are sharing one material.

Flags on the rope

I searched through the internet and found a tutorial from Matt Battaglia (https://vimeo.com/98373299) which explained how to make vertex-animated props which was just what I needed.

I started with making a texture atlas in Substance Designer that includes the rope and the flags in one texture.

Since this was going to be a masked texture, one of the things that I felt important to do was adding a dilation which prevents color bleeding when mipmapped.

To do this, I plugged in the mask texture to the Distance node which pushes the pixels outwards.

Image_15

After that, I made a mesh for the flags and vertex painted it for the vertex animation using transfer attributes in Maya.

Then I spent some time figuring out how to make a shader that adds vertex animation to make it move with the wind.

Image_16

Fake Fog

One of the things that helped a lot to add depth to the scene was adding fog to differentiate objects in the distance. While I did use volumetric fog in the scene, I didn’t like how it made the overall scene look blurry.

So I made a separate fog material that would be placed in the scene gave me more control over it.

Image_17

I added this material to a cube mesh that Unreal provides and placed it in the scene.

Lighting

While Unreal Engine 5 has some good tools Like Lumen when setting up lighting, not all of the game engines in the industry use those systems to do lighting.

For this reason, I wanted to go through the process of static light baking. Setting up the lighting was pretty straightforward.

I set up the lighting by adding a directional light and the skylight and set it to be stationary. Then I started tweaking the values to test out different lighting.

kim-se-hun-detaillighting

At first, I wanted to set up the lighting to be similar to the concept art but after trying out several settings I realized that I loved the lighting more when it hit the yellow building which made it stand out more as the main composition of the scene.

These are the light mass settings that I used when baking a light.

Image_18

Post Process

To add some final touches, I added some Post Process to match the colors to improve the overall colors much more.

Final Touches

To push the scene further, I made some small adjustments that improved the overall look.

In this example, I had some trouble with the readability of the aqueduct bridge on the top left corner of the scene. This was a problem caused by the Ivy and the bush plant being in similar color spaces that made it harder to read.

I solved this issue by removing the bush and changing the lighting a little bit more which made it clear where the bridge starts and ends.

I also moved the Flags on the ropes a little bit to avoid having bad tangents in the area.

Config commands

Some useful config commands that I used to improve the final shot a bit more were using r.Tonemapper.Sharpen 1 command that sharpens up the image to pop out details. foliage.forceLOD 0 was also a useful command that improved the visual quality of the faraway foliage.

But forcing the LOD to be 0 is going to be heavy to use so I would advise using it with caution as it will impact the performance.

Conclusion

For my first proper environment project, I am proud of how the result came out to be. It was a journey that taught me not only the artistic aspects but also the technicalities when it comes to 3D environments for games.

One thing that helped me a lot going through this project was getting a lot of feedback from people in Dinusty Empire.

Not only did they provide me with different ideas and knowledge but also pointed out stuff that I missed during the project. It is easy to get lost looking at a scene for hours tweaking values and seeing what fits better for the scene.

Having people with fresh eyes to look into the scene helped a lot in these situations. Don’t be afraid to ask others for opinions because you can learn a lot from it.

Thanks to GamesArtist for the opportunity to share my project.

I hope I provided an interesting article for others to read. If anyone has any further questions, reach out to me on Artstation and I’ll try to answer them as much as possible. Thank you!