My name is Jonathan (Jonjo) Hemmens, and I’m an Environment Artist at The Creative Assembly. Storytelling, composition, and lighting are what I love playing with in my work. My latest project, Light the Path, portrays the final throes of a defeated civilization. After a lengthy siege, a Viking Warband finally breaks into its neighboring kingdom. A harsh winter falls upon the land, and a path has been lit to guide those left in this bleak wasteland into more fertile lands.
In my breakdown, I discuss the technical workflows behind creating the castle, aurora effect, master material, and the character. I also cover; tackling the struggles of large projects, the value of consistent feedback, how to focus on learning, and what to do when all seems lost with your piece.
Project Goals & Motivations
Before starting this project, I hadn’t experimented with organic exterior environments in Unreal Engine and thought it would be a good idea to fill some large gaps in my knowledge of the pipeline. The goal of the project was to learn more foliage techniques and to create a realistic, large scale, exterior environment with some interesting storytelling and world-building.
Whilst searching for inspiration, I came across a piece of concept art by Sergey Zabelin called “Castle in a snowy forest”. This piece was the foundation for the mood and layout of my scene. I adapted a lot of things, added my own storytelling and completely shifted the design of the castle, but there are still elements of this piece that were carried into my scene.
It was around this time that I also came across an 80 Level article written by Leah Augustine about her project, Snowy Forest. The breakdown led me to a lot of the resources I used in my project. It answered many of my initial questions about the technical problems involved with snow and provided me with a great foundation to start my own project.
Creating my landscape and landscape material was my first step. I came across Jacob Norris’ Forest Snow Ground tutorial where he goes through the process of creating snow materials in Substance Designer, then creating a landscape material in UE4. He also covers a lot of useful technical knowledge and variables to consider when making your own material. He made the tutorial free, but you can always send some money his way if you find it helpful.
Blocking Out the Scene
I started by using Sergey’s concept as a foundation for blocking out my scene. After setting up a camera, I began sculpting the rough forms onto the landscape using UE4’s inbuilt terrain tools. The next step was to block out some of my mountain shapes to get a rough idea of the hill in the foreground and some of the mountains in the backdrop.
I used Gaea to create my mountains, gave them a very rough erosion material and place them in the scene. Although these were changed or made less important in the overall scene, they helped cover the horizon and make the location feel more plausible.
I diverted from the concept by building my own story for the scene and had some ambitious ideas. I wanted to create a larger castle and keep, with a border wall stretching across the mountains. The castle was being besieged by Norse raiders, so I started work on a siege camp.
As you can see, I had begun texturing assets and bringing in some rocks for my mountain. In hindsight, this was a big mistake as it distracted me from the blockout, causing massive problems for me later. Although I didn’t realize at the time, this was the moment that the project started to become too large for me to handle.
Creating a snow scene brought on a lot of different challenges. One of the biggest concerns was creating snow build up on meshes. Manually modeling snow or applying it on the assets textures was out of the question, so I did some shader research to find a more dynamic method. I came across a tutorial by Mind Games Interactive from Leah’s article. In their video, they demonstrate how they implemented world aligned moss to their assets. It was pretty straightforward to adapt their workflows for snow instead of moss.
The workflow in the tutorial shows you how to create a shader that dynamically applies snow to the top of the model and updates automatically when you rotate. It also blends with the normal map, appearing to fill in the crevices of the model. I did a little demo of this on some of the free Quixel assets. You can see how the snow layers itself on all the subtle surfaces even when completely upright.
The second issue I had was seams on my meshes when intersecting them with the terrain. To solve this, I found this free material on Gumroad by “orikmcfly” to allow for blending between your assets and your landscape textures. It works with distance fields to calculate the distance to the nearest surface and blends the landscape material where the mesh blends with the landscape.
The downside of this is that you will need to prevent your assets from affecting the distance field lighting. This could make it incompatible with other workflows using the distance field.
I paired this technique up with some pixel depth offset which blurs the pixels where assets intersect based on the screen space. Sounds complicated, but it’s super simple to set up.
Example from UE4 Documentation:
The whole master material only took a day or so to put together and includes additional features, such as; detail mapping, various hue shifts, alpha, and emissive masks and SSS controls. These can all be disabled or enabled in the material instances by using static switches. This makes it very easy to control what’s active in each material and meant I didn’t have to create unique materials for every individual prop or tiling texture.
Although the graph might look a little large, once you get the hang of using static switches and lerps, it becomes super easy to set this stuff up. The amount of time this saved me was invaluable so I plan to use master materials in all my future scenes.
Creating a Character for an Environment
Around halfway through the project, it dawned on me that it was going to be incredibly hard to portray a siege and battle without any corpses. Before this project, I’d never attempted to create a full character before, so I was a little concerned at the prospect of doing it myself. To scope appropriately, I created a list of things that I knew I couldn’t do for the character.
What I can’t do
- Anatomy: Takes a long time to learn and I’ve never studied it.
- Realistic skin texturing: Even great character artists spend a long time refining this process.
- Waste time: At this point I’d already scrapped a significant portion of the scene, making more work for myself was not an option at this point.
- Posing: I have no idea how to do this.
To overcome the struggles of anatomy, I used a human male base mesh that a friend had lent to me. This immediately gave me accurate forms to begin creating a character with. To tackle the problem of realistic skin texturing, I decided to give the character chainmail for the face and torso.
It was important to avoid wasting time on the character. Speed was preferable to quality, especially since the characters would be covered in snow, blood, and arrows in the final piece. I started by creating the helmet which was one of the more complex shapes of the character, getting comfortable modeling around the forms of a human with one of the simplest overall shapes. This small victory built up confidence, allowing me to tackle the rest of the body with more ease. Modeling the armor was done with SubDivision modeling in Maya, no special tricks.
To create the chainmail, I extruded a cylinder from the neck down using the live geometry function in Maya. This tool ensures that any geometry you move is magnetized to the mesh you make live. This is a useful tool for retopology. I added loops to the cylinder when I needed more geometry, then did the same process for the arms. I then did a simple unfold unwrap after inserting some seams, and slapped a chainmail tiling texture on. To prevent people from noticing that I only have one character in the scene, I textured the character using basic materials, avoiding obvious texture landmarks.
Whilst searching for alternatives to ZBrush Posing, I stumbled across Maya’s Quick Rig. This was one of the best finds for me, as it rigged my whole character in about 10 minutes with only minimal tweaks on my end. I’m sure animators would cringe at this, but for my needs, it gave me some solid controls to quickly pose the character in a variety of positions. The downside is that it really can’t handle more than any advanced poses without proper skinning.
The next step was to litter them with arrows and blood, then place them around the scene. The characters ironically helped bring the scene to life. By varying the pose frequently, and the snow blending, it was much harder to notice the repetition of the character.
This was one of the best learning experiences of the project as it pushed me to learn a bit about character modeling and posing. I hope to create some more simple characters for my environments in the future as I feel they can really enhance the environment.
Sky, Clouds, and Aurora
Whilst setting up my dynamic lighting, I came to the realization that UE4’s BP Skysphere wasn’t able to create the effect I needed. The main issues were the clouds and difficulty setting an atmosphere that matched the mood I was trying to create. I also wanted to create some aurora effects for the sky which couldn’t be done through the basic sky sphere.
Tyler Smith’s cloud tutorial was instrumental in solving the cloud problem. In his tutorial, he breaks down how to create realistic, volumetric clouds in photoshop from scratch. His tutorial is super straightforward to follow and produces great results. On top of that, it’s only 8 dollars. It’s so good that I’ll be using the workflows he detailed in his video in all my future exterior projects.
To create the base textures, I watched a youtube tutorial by PHLEARN which showed a quick way to generate an aurora effect in Photoshop for photography. Rather than generate the colors in Photoshop, I created grayscale alphas and created an RGBA texture with the R, G, and B channels all controlling the color of the different parts of the aurora.
In the material, I split the RGB channels and multiplied them with instanced colors. I then lerped them back together and fed the final result into the emissive color channel. This gave me full control over the colors of each element of the aurora. For some of my materials, I combined the different channels with panning UV’s to have the aurora shift and move, but couldn’t get it to look right, so took this out for the final cinematic.
To solve the issue of the difficult sky sphere, I used GOOD SKY, which is part of the Unreals permanently free content. The skybox provides multiple presets for different skies, cloud coverage, cloud-style, as well as day and night cycles. This gave me the flexibility I needed to create a nice looking sky sphere really quickly.
Creating the Castle
For the level of destruction, I wanted for the castle, I needed an assortment of brick meshes that I would then use in a tiling texture. This would allow me to seamlessly blend the brick meshes and tiling texture together. I started by blocking out my bricks in Maya so I could assemble them on the grid later.
The aim of the bricks is to give them enough unique detail on each side to give. I mainly used the trim brushes and clip curve to create some interesting shapes. My sculpts are pretty basic, but there’s enough variation in silhouette and detail on each side of the brick to be able to create a tiling texture with these pieces later. I created my low poly through decimation master, but if this were for a game, I’d probably manually topologies the mesh so it could have clean LODs.
I ended up scaling these bricks down a bit and wasting time, don’t rush your blockout!
I set up a Substance Painter master file which I ran all the brick meshes and tileable textures through for consistency. This contained some generic rock materials blended together and a smart mask layer that highlighted edges.
To create a tiling texture with these bricks, I imported the high poly meshes into Maya and began assembling them on the grid, giving them some offset and manually rotating the meshes to avoid obvious repetition. I bake these down to a plane in Substance painter and apply the same materials I used for the individual bricks. Now I have a tileable texture and brick meshes that can intersect rather seamlessly.
Using the grid early on ensured the textures would tile seamlessly.
Creating the castle modules was the next step. I started by creating the basic wall module which was super straight forward. After a quick unwrap and layering some of the bricks on top of the wall, I was ready to begin destroying the mesh. I started by adding edge loops where the bricks intersected and deleted where I wanted the damage.
I then take my brick meshes from earlier and begin placing them in some natural places around the cut-out shape. I didn’t worry too much about the extra geometry created by the edge loops as I intended to use vertex painting with my tileable textures in Unreal so it wasn’t necessary to optimize them.
There was no smart trick to brick placement, it was all done manually. This first mesh took me a couple of hours, but once I got into the flow, it became much quicker. After the first piece, I was able to create a couple of clusters which helped build the larger destroyed wall. One of the big concerns of this workflow is the geometry cost! After assembling this in Maya, it was up to about 60k tris. This was super excessive, especially when the majority of the cost was coming from roughly square-shaped meshes.
To combat this, I exported the frame of the wall, and the bricks separately so I could LOD the bricks down in Unreal without affecting the geometry needed for vertex painting on the main wall, and keep everything optimized. By doing this, I cut the mesh down to 7k tris overall and kept the same silhouette.
This workflow isn’t perfect but was probably the best I could achieve without things like scripts or tools like Houdini. Here’s a brief summary of the Pros and Cons of the workflow;
- Mostly seamless transition between tiling texture and geometry
- Fairly realistic destruction
- Creates a good silhouette
- Very time consuming
- Expensive on geometry without optimization
Lighting is one of my favorite parts of the environment pipeline, but this scene was incredibly difficult to light. Throughout the development of this project, I went through about 7 or 8 different lighting scenarios. Trying to find a light direction that suited each camera shot, as well as the cinematic, was really difficult. To be able to decide on a lighting scenario, I had to make some decisions on what kind of story I wanted to tell. This would inform the mood I wanted to portray, and give me some ideas on how to execute it.
For this project, I wanted to portray a brutal and bloody siege where the attackers had been victorious, but at a cost. The result of the siege has not left the world a better place. I wanted to show that there were people still alive and moving through the ruins. The lights along the path are placed to guide those who hadn’t escaped whatever perils lay in front of the wall.
To fit the story, I needed to portray a mood that was bleak, cold, and desolate. The high color temperature on the directional light brought in a lot of blue colors which mixed with the subsurface scattering on the snow, making it look quite cold. The use of some bright fire that would contrast with the snow and make both temperatures feel more extreme. The torchlight really helped me control the composition of the shot and draw a path for the viewer’s eye to follow.
Consistent and quality feedback is something you should put a high value on when creating portfolio pieces. From the early stages of this project, I created a Polycount thread and posted progress updates regularly. Although I did get some good feedback and support here, it was very infrequent.
During the last month of the project’s development, I began asking people in the DiNusty Empire Discord community for feedback, and it changed everything. I made some of my most significant progress to my scene when receiving feedback from here. It felt like a chatroom rather than writing a blog post as the feedback came back much faster, with higher consistency, and a range of different ideas and opinions.
The progress made in the screenshot above is an example of just one month of solid crit and a consistent work schedule. I only wish I’d taken the plunge earlier and shared my work there earlier. Not only is the community incredibly welcoming and supportive, but it is packed with talented industry professionals and art wizards, go check it out!
Using Asset Packs
Before I started this project, I was made aware that Epic Games had made most of the assets from their demos available for people to use freely. I picked up some of the mountainous rocks from the Boy and His Kite Demo and they worked so well with my mountain and the snow shader that I decided to keep them. I’ve always had the feeling that using assets that weren’t mine was somehow cheating. What I realize now is that I’ve been cheating myself.
By refusing to use asset packs, I had spent so much time making props when I could have been focusing on learning something new. It took about 25 minutes to assemble the whole hillside from start to finish. Although I still have a lot to learn about prop and asset production, it wasn’t the goal of my project. Churning out mediocre assets to populate the scene was a huge waste of time when an asset pack would have done the job faster, and at a higher quality. This would have taken away a small amount of ownership, but cannot outweigh the potential for more time to learn something I was really passionate about.
The Struggles of Large Projects
- Option Paralysis and Poor Scheduling
After deciding to create an entire castle and an opposing siege camp, with multiple culture groups and a large forest to populate, I quickly became overcome with option paralysis with so many assets to create and set dressing to do. I was presented with so many options, and it became very difficult to choose one thing to do. With every task I finished, I was barely making a dent in the long list of tasks I had to work through. This became incredibly exhausting after a couple of months of development.
I also struggled with maintaining a consistent schedule. During the chaos of wrapping up uni and job hunting, I could take weeks off the project at a time. Whenever I could jump into the scene, I would work on something random without prioritizing what was most important. By constantly jumping around left the scene, everything looked mediocre. After around 3 months of development, this was very demoralizing.
A shot of the siege camp I cut to finish the project:
- Cutting your losses
Three and a half months in, I was overwhelmed by the project. I approached my good friend Dom Marriott about the situation, and he gave me some excellent advice. He advised me to go back to my original intentions for the project which were; learn foliage techniques, create an exterior environment, and tell an interesting story that created the sense of a world. He elaborated on this feedback pushing me to redesign the factions, decide how long it’s been since the siege took place, and focus on what was the most important part of the scene, the castle. This advice gave me a new sense of direction and motivation. Without it, I would have given up on this project.
What I’ve Learned
Although I never approached foliage in this project as I wanted, tackling the problem of option paralysis and fatigue is something I’m incredibly happy to have learned; even if it caused me so much strife. I’d encountered it in projects before and given up without understanding why I was struggling so much with large projects.
When realizing that a project has become too challenging or complicated, focus on the best part of it, and take that to completion. Go back to your original intentions and prioritize learning something new over repetitive tasks. It’s much better to have a smaller scene of higher quality that you can be proud of, rather than a big mediocre mess. This could involve cutting half of your scene or using asset packs to focus on what’s important: getting better as an artist.
Whatever you do, do not give up on your project. If you do, you might be plagued by the same mistakes again and again. By taking the project to completion, you will reinforce the lessons you have learned and have something to show for it.
That’s it. I hope you’ve gained something from my mistakes and advice. If you’re interested in seeing any of my other works or getting in touch, just follow or message me on ArtStation.
Cheers for reading!
Resources Used in This Article
- Jacob Norris’ Snow Tutorial: (FREE) This tutorial was the foundation of the terrain textures I used in this piece. Jacob’s tutorial is super entertaining and covers all the fundamentals in creating a landscape material and a convincing snow shader.
- Tyler Smith Cloud Tutorial: (8 USD) Tyler Smith’s cloud tutorial covers how to create a super convincing cloud shader in UE4, as well as the fundamentals for creating whatever clouds you desire in photoshop basically from scratch. One of the best tutorials you can get for this price.
- PHLEARN’s Aurora Painting Tutorial: This tutorial covers creating a basic brush in Photoshop that you can distort to create an aurora borealis effect super quickly. Takes a couple of minutes and works great.
- SMITE: Stylized Environment Art and Skybox Creation By Luiza Tanaka: This piece on the setup for SMITE’s Aurora and Skybox is a great foundation for if you want to create a similar effect.
- Creating a Snowy Forest in UE4 by Leah Augustine: This breakdown was the foundation for a lot of the work I did on this project, it’s worth giving it a read if you’re looking to do something similar to her or my project.
Jonathan Hemmens, Environment Artist at Creative Assembly
Interview conducted by Kirill Tokarev