Ben Keeling did an interesting breakdown of his Desert Ground set completed with the help of Jeremy Huxley’s Vegetation CGMA course.
Hi, my name is Ben Keeling. Since we last spoke I have been very busy! Professionally I have moved to Rocksteady Studios and progressed to a Senior Environment Artist position. In my personal work, I have explored smaller dioramas, which allowed me to focus on quality. I turned some of my work into tutorial content such as the Tree Cutter. I have also started teaching a Substance class through CGMA as well as taking part in a couple of competitions. As always, I like to focus on targeting personal weaknesses in my art. Right now, I am on what I would describe as more of a personal journey of growth. I am attempting to find more of a consistent style and presentation to my work which I started with the desert rock material.
Rocksteady kindly offered us classes for learning purposes through CGMA, so when the option came up I had a look at the range of classes and decided what topics I wanted to tackle. Originally, I signed up for a few different classes but the vegetation class was the only one that I could take. I was interested in Jeremy’s class because vegetation has always been something I have struggled with in the past. I attempted it mainly in my professional career but I never had time to properly understand and figure out a good workflow. At the end that was exactly what I got out of the class. Seeing the approach that Jeremy and Naughty dog took to creating their vegetation helped a lot. Not only that but it gave me an excuse to use ZBrush, which I had neglected a little until then.
I had several goals when creating the desert rocks. As mentioned above I wanted to target vegetation which tends to be a challenging specialization within environment art. I started working on a series of materials likened to the conceptual approach of painting studies. I initially created a rough collage of around sixteen materials from existing concept art. I chose this number because I wanted to target presentation within my work and I believed that having a square format for this material collection would be pleasing compositionally. Within this, I defined different categories of materials. Initially, I had about eight different food-themed materials and eight more conventional environment materials.
The material studies also fit in with a rendering project I was working on at the time. The general idea was a car mechanic’s garage in desert surroundings, an old wooden workshop. I needed a desert ground material and vegetation assets as part of the project. The material made a lot of sense as it was covered by the material studies and the wooden workshop simultaneously.
When approaching the materials, I quickly realized 16 materials was no small feat, especially because I wanted to ensure the quality of each one was very high. This is where I started to think about these as isolated environments in themselves. At this very point, it evolved into a new project. I began to see the materials as more of an ecosystem or small planet. Currently, there is quite a trend of rendering materials on spheres and although I love that style of presentation, I wanted to attempt my own spin on it. It was important to me that it was still very relevant to a game production pipeline. It is harder to make something that looks great but also is functional.
Height map creation in Substance
Something that is always challenging in Substance is overlapping shapes. With it being a rocky ground material, I battled with the challenge of the stones intersecting throughout the material. I talked to other artists, which included Josh Lynch, and he gave me a few tips and tricks for the overlap problem. I found out that the best way to avoid overlap is not offsetting the stones too much, utilizing random mask and mask maps in the tile sampler to try to avoid it. Stacking multiple samplers and generators can also help. I personally found with experimentation that clamping the stones at different values helped the problem as well. If you limit the ranges so that certain stones never exceed a determined value you can then stack them on top of each other.
The best advice when working on the height map is to preview tessellation/parallax in the 3D viewport of Substance. Doing this you are almost sculpting the details in the same way you would do it in ZBrush. It allows you to add details in real time and see the effect on the material. I always ramp up the effect of the tessellation until the material breaks and stretches horribly and if I can balance my height map to work well in that condition it should perform well in all cases. I normally set out all the elements of a material from left to right and step through each change one by one to make sure I have the strength of the effect exactly as I intend. This helps especially when polishing and balancing details later.
For the ground material, I split the substance into sub-graphs where it made sense. The soil and the stones were separate graphs. Later I could work on the elements individually and utilize a height material blend to get variations of the material. I could adjust how much soil and stones were in the texture dynamically. I try to work in the most logical way for material I am creating. Breaking it down into different components or sub-graphs helps me to understand each element better. When everything is combined leads to a much more successful result.
The other thing, which makes sense to mention, was the plants, the weeds and other fauna I originally made in Jeremy’s class. As well as 3D models, I wanted to represent the vegetation in the material so I took the different texture channels from the weeds and splattered them in Substance. I would say that you do not always need to stick 100% to Designer. Especially if you have already done the work!
I always choose the colors of a material from reference images. I mostly approach materials in a similar way by first sourcing a variety of images that give me information about the material. I normally look at sites such as textures.com to find the reference. They also have a great collection of scan data, which helps to investigate how the individual maps should look.
My method for coloration is always the same. I generate different masks as I create the height map (making sure to frame these for later use) and then some from mesh data such as curvature and ambient occlusion. I start by making gradient maps from these and masking the color out in different areas. I use different noises such as clouds or moisture noise to generate hue variation as well and I often finish the color with a subtle overlay of curvature maps.
I wanted the color for the vegetation to match the models otherwise the connection between the ground and the vegetation would be broken. I polypainted the vegetation during the course with Jeremy so the colors in the substance came from this. I just imported the texture and masked out the plants.
The foliage ecosystem was something I had been thinking about as an experiment. I wanted to create a nice material render with the bonus of the silhouette from the foliage.
I am very used to the foliage tool in Unreal. In the tool, you can randomize between different vegetation models with scale, size and rotation while respecting the terrain underneath. On the course, I created a set that fitted the rocky ground. I determined the variety of assets by using online resources for places such as Nevada to research the ecology of the plants there. In the end, I had variations for grass, bushes, and weeds.
Initially, I tested my models in UE4 as I knew I wanted the same tool in principle but to output for rendering in Marmoset. At this stage, I started with a simple sphere and populated my vegetation assets on it in 3ds Max. When exporting for Marmoset I planned on applying the rocky ground with tessellation to the sphere with the vegetation assets sitting on top. In the end, I achieved this with a splatter compound object inside of 3ds Max which allowed me to input a destination mesh (the sphere) and a splatter mesh (the vegetation models). I could then edit in real time the difference in scale, randomly rotate the objects and offset them in natural ways. This gave me a close representation of what I had in unreal except in real time on a sphere.
Jeremy helped a lot with feedback on the vegetation models but the sphere was something I opted to do. In his class, he created more of a traditional environment with vegetation but I wanted to adapt the course to suit the project I was working on. Jeremy did an excellent job supporting me and providing feedback while I worked on it.
I intended the material to be easy to create variation, the idea of combining the stones and soil separately meant I could save out soil, rocks and some combined texture as different variants. In Unreal I could then blend between these different variations using a vertex blend shader. In the past when I used vertex blends it also interpolated between the materials using the height map. This means the soil could blend in around the crevices of the stones. This helps to create a natural transition between the two materials.
Vertex blend materials tend to be relatively cheap but the extra texture samples are normally the cost you need to be careful with. Vegetation is by nature quite expensive because of the overdraw. When you have lots of polygons overlapping especially with alpha materials it can be expensive. The general approach I have is to observe the debug views which are excellent in UE4. I try to minimize the overdraw by not having lots of overlapping cards and cutting the geometry close to the texture to avoid too much unused alpha being drawn.
I have always been of the impression that in an ever adaptable and changing industry it is often of interest for the artists to adapt. During the course, we worked on some older techniques such as polypainting as well as the now common procedural approaches. I was surprised to find validity in these techniques. This opened my eyes to techniques I had previously overlooked and their potential. In my opinion, Uncharted has a great stylization to the game which this hand-crafted nature of painting the vegetation feeds into.
As I said earlier the course gave me the chance to practice more sculpting in ZBrush. Before the course, I also wouldn’t have necessarily described myself as confident when creating vegetation but now I would approach it with a sense of excitement if the task landed on my desk. For that, I am most grateful to Jeremy.