Clara Cox talked about the working process behind the Mountain Side Living project, shared the workflow for creating assets, and offered some tips for beginning 3D artists.
Hi! My name is Clara Cox, and I’m a 23-year-old Swede studying at Futuregames in Stockholm. I’m focusing on becoming a full-time 3D environment artist and I’m in the second, and last, year of my education. Previously, I’ve also spent time studying game design at Uppsala University, where I didn’t focus as much on making environments but more on learning game design and the basics of 3D.
I started learning 3D with 3ds Max about four years ago and ZBrush about two years ago. I’ve since been a part of more than five student game projects, plenty of game jams, and even worked as a solo artist for a board game. I haven’t yet worked in the games industry, but I’m going on an internship soon!
The Mountain Side Living Project
This project started out a while ago as a side project. Like most of my ideas, I found the concept on Pinterest and was very drawn to the atmosphere and scale of the world. I have unfortunately not been able to find the artist behind the concept.
Initially, my idea was to create the entire scene shown in the concept. I love the scale of it, the stories that I could tell here, and the possibility of making a playable level. After the initial blockout, I decided to scale the project back and focus on making a smaller, more polished scene. The goal for me was to work on making a stylized scene and develop my skills within ZBrush and Unreal Engine, so working small made sense.
Going into the project, I wanted to stay true to the concept and its colors, materials, and designs. I gathered references with this in mind and kept them muted and natural. As I will soon show you, I kept this up for a while until I started blocking out the colors in Unreal Engine. Here, I realized that the scene I was making and the style I was going for called for a stronger identity. This is when I switched up some of my references and “upgraded” my color palette.
Whenever I start a new project, I take time to break down what the scene is made up of. Early on, it is important for me to see what I can make modularly and what assets are more unique. Things like the walkway, stones, and ladders are easy to reuse. The buildings, I figured, would best be made up of smaller pieces, which could be adapted for each building.
A big challenge for me was to figure out how I’d approach the houses that were inset into the cliffside. To be able to walk around to look into these cliffside houses and to have them feel carved out of the mountain, I couldn’t just have large planes and stack a door on top. There needed to be door and window-sized holes. For the blockout, I was happy with just creating a large plane mesh with the correct scale, but I planned on using BSP to find the correct placement for doors and windows.
I tried as best as I could to figure out the scale of the mountainside measurements so that I could figure out the size of everything else. In Photoshop there is a handy tool that makes estimating the scale easier. Using the Measurement Scale, I used the human in the bottom left corner as a reference to estimate a height of 70-80 meters for the cliff wall. The same technique can be used for the buildings, which I did, but ultimately the scale is adjusted from how the scale feels in-engine.
The planning stage also includes reference and inspiration gathering. My main source is Pinterest, where I have albums for concepts, style references, and mood boards. I then bring in the most important images to PureRef.
I did all my early blockout in 3ds Max. The focus was on getting all the big buildings and walkways in fast so that I could mess with the scale and placement in Unreal Engine without getting too hung up on details. The houses that sat directly into the cliffside were blocked out first with BSP to find the placement for doors and windows. I covered up the BSP “rooms” with blockouts for doors and windows with some basic colors on them.
When I was happy with the scale and placements, I was done with the rough blockout. As I previously mentioned, this is when I decided to scope down my project for it to be easier to manage but also for me to practice designing an appealing scene from a more close-up angle.
From here, I worked on refining the blockout from the new camera angle, adding story elements, rough lighting, and reworking colors and composition. Another great tool that I used was Adobe Color, which is an online tool to extract, create and save color palettes. These can also be saved to your Creative Cloud account for use in other Adobe programs, which is pretty handy.
The basic workflow for most of the assets in this scene consisted of:
- Making a detailed blockout in Maya, but sometimes a more simple asset would start in ZBrush
- High poly sculpt in ZBrush
- Retopo in Maya or Decimation Master in ZBrush
- UVs in Maya
- Baking and texturing in Substance 3D Painter
I worked from large to small assets, finishing the assets that took up the most screen space first, such as the buildings and the wooden walkways. The walkways are all made up of only two plank meshes and one beam mesh, which I assembled in Unreal Engine with custom blueprints. To stop the wood from looking too repetitive, I added random value variation and changed size and rotations. This was the same process I had with the roof tiles and the cornerstones for the buildings. I assembled the roof tiles/cornerstones in the viewport of Unreal Engine, converted the selection to a blueprint, and was then free to place them where I needed them and change any placement non-destructively.
When it came to the buildings inside the cliffside, I converted the BSP with the final hollows for the doors and the windows to a static mesh and imported it to Maya. Here, I cleaned up the mesh and added some geometry, which would be very important for the vertex painting I was planning for. This same idea applied when I made the basic walls for the big buildings. I added extra geometry in favor of being able to vertex paint inside the engine and not having to texture all the walls uniquely. Using tileable materials and vertex painting is a great way for me to make my assets more modular, less repetitive, and faster to make.
Below, I added an example of why it is good to add a bit of extra geometry in favor of more control when vertex painting inside Unreal Engine. The left cube is subdivided with ten unnecessary edge loops on each axis, while the right cube only has one extra loop on each axis. I would decide for each asset what the appropriate amount of geometry would be based on the importance and visibility of the asset.
I textured all the assets in Substance 3D Painter, except for the ones that used tileable materials. I bring in the low poly mesh of an asset, bake down the high poly version, and then apply the appropriate smart materials I’ve made for the project. I work a lot with the curvature, position, and AO masks to achieve the style I want, and play with some grunges to get roughness and color variation.
Setting up procedural smart materials inside Substance 3D Painter makes texturing go increasingly fast as you find what works and what doesn’t. In each asset, I make sure to tweak the masks so that they look the way I want. One curvature value might not work when texturing the next asset.
When I export the textures from Substance 3D Painter, I have my preset ready to go, which is basically made to pack the Base Color, Roughness, Normal, Metallic, and Ambient Occlusion maps into two textures instead of five. I’ve included images of both the export preset in Substance 3D Painter and the master material I set up in the engine. The master material I then instance and just switch the textures for each unique asset. In my master material, I also included some fuzzy shading, detail normals, and simple grass wind.
This is what the Substance 3D Painter exporter looks like with my custom preset. I have my preferred naming convention for the textures, file type set to Targa, and base color with roughness, normals with metallic and ambient occlusion packed together. I only need the red and green channels from the normals, and the blue channel will be added back in again in the engine.
This is the master material for props with the textures from the Substance 3D Painter export.
Sculpting Stylized Assets
Many of the assets in my scene are sculpted in ZBrush to achieve the look I was going for. There is a great article here on 80 Level on Realistic vs. Stylized that I think is a great resource to start with if you are getting into stylized art. There are tons of different directions you can go when making stylized environments, but the main point is that you want to show an object in simpler terms than in reality. You pick out the most important elements of something, make a choice of what is needed and what's not, how you want the observer to see this object, and push your style in that direction.
My goal was to make assets that are simple, clean but worn, with big shapes and details to indicate texture.
Many of my most frequently used brushes are from the Orb Pack, and the rest are stock brushes, some of them with an added square alpha.
For assets such as rocks, I like to get the big shapes working in DynaMesh together with the TrimCurve tool. I cut away the corners, shape the rock to my liking, bevel the edge, and add the start of big cracks.
A tip when sculpting big shapes is to switch between low and high subdivisions frequently. I have my left hand on shift+D, making big brush strokes and toggling back up to a higher division and then back down. Here is a small example of how I did the fabric shapes on the kite.
The plaster material is quite simple. I combined a few noises and clouds to create the stylized “chips” in the plaster. Then there is the brushed feeling of the plaster, which is made of a simple tile sampler inverted with levels and an added slope blur with the “creased” noise for the 'brushy' feeling.
The two materials are assembled in my wall master material:
The exported materials have two textures each. Color and height are packed in the first texture, and normals, ambient occlusion, and roughness are packed in the second texture. To break up the vertex painting gradient, I added a custom noise texture that I also made in Substance 3D Designer. I reused the brush stroke pattern that I used in the plaster material for this. In the UE material, there’s also a detail normal with controls for intensity if I ever wanted to use that, as well as controls for vertex painting contrast and size. The orange version of the plaster is simply the original plaster multiplied with the Constant3Vector parameter that is revealed with a different vertex color.
The Final Scene
The placement of most of the environmental assets came from the original concept. However, since I had scaled down the scene, there were a lot of gaps when it came to the final composition. I was glad to have so much space to work with to fill with the story elements of my choice. When I chose the final camera angle, I sat in the cinematic viewport using the rule of thirds to help position everything in a pleasing way.
To get more framing and a dynamic shot, I added distant mountains to draw the eye to the scene. I made this base mountain range quickly in World Machine with just the advanced Perlin noise and erosion nodes and imported the Height map into the Unreal Engine landscape. In World Machine, I also masked out some dirt, rock, and grass masks, which I used to quickly texture my landscape inside UE. The cliffs on the side of the mountain further guide the eye towards the houses and in general, there are a lot of lines pointing inwards.
When I was placing all the assets and making the final textures, I was careful when choosing the spots of green. The main focus of the scene is the first house, so this has the most saturated colors of both orange and green. At first, I was making all the wooden door and window cover assets the same brown color but decided to add variation and focus on versions with green paint. Placing out the spots of bright green gives the scene a nice flow, in my opinion, not overcrowding the orange but instead complementing it.
I wanted to give the scene life and feel lived-in, so I intentionally left the doors and window shutters ajar. I also made some props to give clues to the kind of life the people here have, such as adding a small telescope and a chair, some gliders, and lots of rope.
I am thankful to João Kalva for lending me his incredibly helpful tool Cable Master, which is a drag-and-drop tool to quickly make procedural cables, wires, and ropes using real-life physics. This tool elevated the scene, was easy to use, and saved me a lot of time when making the final composition.
I also added some ivy from the Dynamic Ivy Creation Pack, which I downloaded from the Unreal Engine Marketplace. I tweaked the base color texture in Photoshop.
The Final Renders
For this project, I wanted to try out the raytracing inside Unreal Engine 4.27. I enabled this when I started the project by simply selecting Raytracing Enabled in project creation.
For my final lighting setup, I used the following:
- SkySphere_Blueprint (included in the engine), tuned to be really blue.
- Skylight with the Spiaggia di Mondello HDRI applied
- Two directional lights: one main warm sunlight and one subtle green highlight
- A few hand-placed blue spot- and point lights for some added cold shadows
When lighting stylized scenes, it’s important to have some references. Commonly, you have more exaggerated and contrasting colors, and working with warm lighting and cool shadows is a good start.
In my Post Processing Volume, I mostly increased the saturation and contrast to my liking, capped the exposure, and added my Lookup Table (LUT). The LUT mostly removed the most yellow highlights from the wood and made the ivy more blueish-green to match the other green details.
I really liked the fast iteration process of having raytracing enabled, and it made the GI and ambient occlusion look polished without a lot of work. I know you can achieve similar results without raytracing, but I found it to be worth it this time.
This scene certainly did not go fast. It started back in August last year, and I worked on it on and off since then until I published it in early March. I realized that I had to set up internal deadlines for myself to have a date to work towards because without them I was not making as much progress.
This is one of the challenges I faced. Since it was a side project, I needed to set deadlines for blockout, assets, polish, lighting, and presentation, but I was still flexible in them. If not for internal deadlines, there is a big risk of working too long on a project and never being satisfied or finding the “good enough”.
As a student, another fun challenge was that I was constantly learning and finding better practices. Throughout this project, I found better ways to pack my texturesб which resulted in making a new master material and using this as well. This meant that any additions or changes I made to the new master material had to be done twice for it to be applied to all assets.
Finally, my big three tips for beginner 3D artists would be the following:
- Execute projects based on professional concepts! Making your own concepts is fun, but I got this advice early on and I believe that I am a better artist because of it. Learn how to make good concepts come to life in 3D, understand what makes them aesthetically pleasing, and then you can start designing your own concepts without all the technical stuff weighing you down.
- Always keep references handy and have plenty of them! Use Pinterest, PureRef, or any other tool. Study similar pieces to what you want to make but also look at photos and other mediums to keep getting inspired and learning.
- Don’t be afraid of receiving feedback and actively seek it out! Having a fresh set of eyes to give you advice is great for improving.
And that’s about it for me! Thank you for reading, I hope it is useful for someone. If anyone has any questions, send me a message on ArtStation!
You may find these articles interesting