If love it, make it free (c) ;)
Trying to steal Vray's thunder.
Anthea van Leeuwen gave a detailed look into the production of the complex 3d environment assembled in Unity.
Hi! My name is Anthea van Leeuwen, and I’m currently about to graduate from my game design course in the Netherlands! I’ve mainly been doing a lot of environment art the past few years, and I have a huge interest in creating art that tell a story, rather than just a beautiful piece of work. I’ve also had the honor to work with Sumo Digital on a great game called Snake Pass, which released back in March. There, I learned a lot about stylized art, as well as a bit of character work. It actually really caught my interest, so I decided to integrate it into my graduation project as well!
Main Goals and Planning
I initially had no idea what I wanted to do with my project, until I looked at the things that had really been inspiring me lately. The style and feel of games such as the Legend of Zelda and the Last Guardian were really on my mind, and I mainly wanted to convey the same feeling they do with their story telling. Keeping these things in mind, I wanted to give the viewer a relaxed feeling along with it.
I started out with the concepts relatively early – I already had in mind what kind of character I wanted to create. Since I wanted to create something original that I hadn’t seen a lot before yet, I decided to create an old lady. Then around that idea, I started iterating on my concepts.
Knowing that the character would take the most time, I planned about 3 and a half months for it. I was confident enough in my environment art skills to create the rest in a month.
Creating Heijwa & Pak
Keeping the concept and design choice that I previously made, I knew the next part, which was the hardest part for me, was looming ahead. Having created a blockout in ZBrush, I had a lot of things to fix anatomically. Luckily, some of my peers and teachers gave me enough feedback to improve on it.
The overall ideas style-wise were to have stylized and exaggerated shapes, but have the materials be semi-realistic. Keeping that in mind, I kept most of the sculpt relatively stylized. I wanted to get as many details as possible on the sculpt (things like wrinkles on the face, folds and seams in the clothes) but let the noise-based details come from tillable textures (like skin pores, cloth fibers).
The blockout for the clothing was done in Marvelous Designer. Once these were done, I exported them to ZBrush to start tweaking and detailing it.
I made the details on layers in ZBrush. The initial idea I had was a bit too realistic, so using the layer opacity made it easy for me to just turn it down a bit.
After that, it was just detailing everything. I had about the same progress for the yak.
I had a bit of trouble deciding what I wanted with the fur. I wanted him to look ‘poofy’, but instead looked too bulky, so I decided to shave him a bit more. When I was fixing the flow of the fur, it seemed like just straight lines looked a bit boring to me, and didn’t have the flair that I wanted it to have, the thing that made it stand apart from the usual designs. Using the Spiral brush in Zbrush made it possible to add some really nice curls in there!
At this point, I only had month left before I had to hand in my project. Because of that, a lot of the work during this phase was just ‘going with the flow’.
I had one thing in mind, and that was that I wanted them to walk along a road that had some remains of ruins in the background. With that in mind, I created a few different tiling textures for the terrain. I put it all together in Substance Designer to combine the clovers with the rocks.
Since the rock I sculpted has the same textures as the terrain, I can easily take the rocks and duplicate them along the rock wall part to give them more height variation instead of just having a flat plane.
After that, I sculpted the rest of the foliage in Zbrush, as well as the ruins. This keeps it easier for me to keep the stylization in there as well. I also sculpted some bark for the trees, using the same method as the rocks.
These are some of the textures I made for the trees. I simply replaced the default textures from Speedtree with my own custom made ones! Before finishing the assets, I made sure to remove a bit of the normal map information to reduce the noise a bit, otherwise it would look too noisy in the overall scene.
There was one small issue I had with the foliage, and that’s that the same color green everywhere got a bit repetitive. Luckily, I knew what I could do to make it look different.
By picking the object position offset, I could assign random values to the color. With another slider, I could choose how much of a contrast there would be between the plants. This is a great way of breaking up the repetitive colors!
Like I mentioned before, I didn’t have a concrete plan as to what to do with the ruins, I simply constructed it with the modular building blocks I made. In the end, I decided to go with the idea of 2 broken bridged buildings. Here is a small progress image!
At this point, I felt like some things were missing. The buildings looked too plain! I decided to look into some Shader forge magic to see if I could spice things up a bit.
I added the same moss shader effect on the rocks, to give some more variation as well.
Texturing was a big portion of this project, especially since there were so many different materials I used. Depending on which kind of material, I used different approaches.
I didn’t want everything to feel too noisy, so on materials like the wood and the rope I only applied a very slight height map, like fibers. Marmoset made it very easy for me to make the more interesting shaders like glass and crystals by using emissive maps and subsurface maps.
One last thing that actually saved me a bunch of time creating the textures was using the curvature map! Using the curvature map as a mask, putting a levels node on it in Painter makes for some really nicely stylized edges! Combined with using the AO map to make the crevices darker (and giving it a color), it really sped up my progress just using these simple techniques.
Setting up in Unity and Finalizing
The skybox I used was actually a free unity plugin which can be found here.
The reason I chose this was because the huge clouds really appealed to me, and thought it would be a great contribution to the scene I had in mind! I only made some small edits to it in Photoshop to increase the resolution and make it look a bit more painter-y.
I’ve been using Unreal for the past years, so switching to Unity took a bit to get used to again. Luckily, Shader forge has saved me a lot of times!
I started out pretty simple (looking back at the first image I displayed in the environment section), with just a directional light and the simple Unity fog. After that, it was just a bunch of iterations with adding the foliage, ruins and trees.
I downloaded the standard Image Effects Unity plugin from the menu, which allowed me to use SSAO and a post processing effect, as well as sun shafts. Combining these really helped me push my scene a bit further. And since it’s a static scene, I could cheat a bit of the lighting with an extra point light next to the characters.
The last thing that made me complete the scene was actually one of my shortcomings: I didn’t have the time or expertise to animate my characters. This is where I thought of a pretty cool effect that I could add to the scene. Since the characters were going to be static anyway, it would be weird to make anything else move, so I thought of going with a ‘stuck in time’ look, where the floating particle effects are also not moving.
You can see this pretty well in the video I’ve made:
I hope this helps and inspires my fellow artists out there!