Maria Ardinceva prepared a detailed breakdown of her UE4 environment Snowy Ruins: terrain creation and mountains, material setup, vegetation, lighting, and more.
In case you missed it
You might find these articles interesting
My name is Maria Ardinceva. I am a self-taught 3D artist based in Moscow, Russia. I’ve been doing graphic design for some time but decided to switch to game art several years ago. Last year I landed my first gigs and occasional freelance jobs, which were mostly about architecture and working with Unreal Engine. This gave me a huge opportunity to learn and eventually realize that environment art inspires me the most and it is exactly what I want to practice from now on.
Snowy Ruins: About the Project
This project started off as an October challenge in the DiNusty Empire community. We were tasked to create a complete environment from start to finish in one month and were also free to choose any theme we like, but something manageable so it can be completed in time. I had this idea of a snowy scene for some time in my head, so I decided to join in. This was definitely the coolest decision made recently – challenges are super motivating, especially if you are to work on something complex and need to stay concentrated and productive for a long period of time.
References and Blockout
I knew I wanted to make a snowy environment, heavily vegetated, with some man-made structures. I didn't have any particular idea or concept in mind though, so I spent a couple of days on Pinterest grabbing references and setting up a nice board to work with. The main ones were put together in a PureRef file and I also gathered some additional material on my Pinterest board. Those were concept art pictures, images of architectural elements, walls, large structures, ornaments, plants I wanted to create, ground textures, and some in-game screenshots I found useful.
For terrain creation, I used Unreal’s landscape system. Basically, there are several methods for that: you can import a heightmap made previously in, say, WorldMachine (this was my first idea) or you can create your own terrain using a wide variety of in-engine sculpting tools. As I’ve said I wanted to try to generate a heightmap for snow hills instead of hand sculpting, but I fast realized that doing it manually will be a way more flexible option. The first thing I did here was set up a Cine Camera Actor; I found a nice camera angle and started sketching out basic landscape shapes and positioning blockout meshes. Actually, there’s not much to say about sculpting itself, all tools are quite self-explanatory. Probably the only thing I can add here is my use of alphas with terrain sculpting. In this case, I used a heightmap from a mountain mesh I created in WorldMachine, stored in a blue channel of a splat map. It gave me some height noise and variations although I don’t think it was all that noticeable with tessellated material in the final result.
For those who want to learn more about the topic or who are struggling with their first landscape shader, here’s a list of resources that I personally found extremely helpful:
- Creating Materials in Unreal Engine course by Kem Yaralioglu for the Artstation Learning platform really helped me with material functions and terrain shader understanding.
- tharlevfx's YouTube channel with great tutorials by Thomas Harle. His talk on landscape blending modes was extremely informative:
Once I finished with the landscape, the next step was decorating the background of my scene with mountains. Those were supposed to be very natural looking meshes with believable texturing, so hand-sculpting was not an option for me. And here’s where procedural heightmap generation came in handy.
WorldMachine is my personal software of choice, but I believe the same concept applies to any other programs out there. If anyone wants to get a close look at how it works and what it’s actually about, I highly recommend the course Introduction to World Machine by Peter Sekula. As for the mountains, the whole process can be split into three major steps:
- Generating heightmap, making necessary adjustments for masks, combining those masks into one splat map, outputting mesh and the splat map. All that can be done entirely in WorldMachine.
- Importing the obj file of the mountain into ZBrush for decimation. Once decimated, you can use the result as a low poly mesh and bake a normal map on it.
- The last step is setting up a blend material in UE4, using the splat map as masks.
Grass is a base layer, then goes cliff layer, then soil, and on top of that – snow. I haven’t created any mask for snow, because I wanted a bit of control over the total amount of texture covering the mountain. So I ended up using a technique from Lukas Koelz mentioned earlier found in this video:
Materials, Shaders, and Vegetation
For texture creation, I used several different methods. I utilized Substance Designer quite extensively, got my first experience sculpting tileable textures in ZBrush and baking maps in SpeedTree, and used FiberMesh for both grass and needles creation.
Grass, bark, and two variations of snow were all done in Substance Designer. The stone wall texture was fully sculpted and was my favourite to work on. Since I watched this tutorial by Dannie Carlone, I was eager to try this more traditional hand-sculpted approach. I believe there’s something unique about textures made entirely in ZBrush and I really wish to sculpt more of those in the future.
To get various masks for texturing, I applied polygroups as polypaint on a high poly mesh and baked a vertex color map from it. In Substance Designer, making it greyscale and using a Histogram Select node gave me all sorts of mask variations for texturing.
The rest of the vegetation textures were also made in ZBrush with the Fiber Mesh technique for needles/grass blades and polypainting which is something I took away from the Vegetation & Plants for Games course with Jeremy Huxley. The whole concept of creating plants includes a high poly sculpting (or generating in my case), polypainting it by hand, and making final adjustments and map exporting in Substance Designer. The only thing I do a bit differently is texture baking from sculpts: instead of grabdoccing those straight in ZBrush, I prefer to bake them in Marmoset Toolbag and have nice high-quality AO and opacity maps to work with.
The Substance Designer pass for all of my plants is quite similar to the stone wall texture I made earlier. Although almost all of the base colour was done in ZBrush, I mixed some bits of the curvature and AO into the final textures, also applying variations to the albedo from polypaint the same way I did with the stones.
This tutorial has full in-depth information on how to set up clusters and bake texture maps straight in SpeedTree, it really helped a lot and saved me time:
All props and man-made structures were hand sculpted, baked, and textured in Substance Designer. My initial idea included a lot more of those – I wanted to create some columns and a lot more variations of stone piles but eventually had to stick to a reasonable number of assets to make it in time.
Sculpting was also very fast, with the main goal to get a nice readable shape. Since most of my assets were supposed to be heavily covered with snow and seen mostly from a long distance, I didn’t want to noodle around the sculpting phase for too long. The shapes themselves have a very strong Mayan influence which is kind of strange to be seen in a snowy environment but I like it. Both buildings have ornaments on side pillars. Those were premade black&white images imported in ZBrush as alphas and applied using a combination of MorphTarget and a stencil technique:
The lighting is entirely movable and raytraced. The whole setup is based on four main actors: Directional Light, Skylight, Exponential Fog, and Skydome mesh. There are also a lot of cameras, each for a single shot that I found most appealing.
The whole lighting heavily relies on the HDRI image. I used one single picture for Skydome and Skylight for more physical accuracy. I also experimented with fog a lot, exaggerating it, playing around the inscattering option (with that same HDRI), using volumetric fog, increasing Volumetric Scattering intensity in the Directional Light properties. In the end, I settled with these tweaks:
I really enjoyed working with the Cine Camera Actor during this project. It has some nice sliders for Depth of Field allowing to get an effect just by eyedropping the pin or (which I preferred the most) using the Draw Debug Focus plane control.
In the camera, I also enabled some Ray Tracing options. The main one for me was RT Global Illumination. An interesting option to experiment with was an Ambient Cubemap texture using an HDRI image (same as before) with some low-intensity values.
I did not use many post-process effects here. Most of the base colour grading was done in Photoshop and saved as a LUT texture. Basically, it’s just some slight curve and vibrance adjustments. On top of that, I added a post-process sharpening filter material. Here’s a nice tutorial on how to make one:
This project turned out very fun to do, the whole experience was very versatile and I got a chance to work on different tasks at once and expand my knowledge. I should admit that participating in challenges is always a good idea, it did work for me personally and I definitely want to do more in the future.
I know that I am still learning myself these days, this is why I wanted to add as much information, screenshots, and resources as I could. I really hope some of you will find this breakdown useful.
And again, I wanted to thank 80.lv for reaching out to me and giving me this opportunity to share my work.