Game developer Matthieu Chollet discussed the way you can use Substance Designer to build beautiful custom materials for visualization in Unreal Engine 4.
Our friend game developer Matthieu Chollet has been working on a very interesting natural scene, where he uses Substance Designer and Unreal Engine. We’ve contacted Matthieu and he was kind enough to give a little breakdown of his work in progress environment. In this post he talks a lot about the production of the materials.
My name is Matthieu Chollet. I’m from France, but right now I live in Halifax, Canada. I have been working in video game industry for 2 years. Right after getting my Bachelor Degree at Bellecour Ecole d’Art in France I was hired by Copernicus Studios. Since then I have been working as a 3D Generalist on various mobile games.
My previous project was a retro underground office. That environment was supposed to make you feel kind of uncomfortable and claustrophobic.
So after working on this environment, I needed to do something new. That’s why I decided to create a colorful open area with vegetation. Each personal project is an occasion to learn something new. The office environment, for example, allowed me to learn how to use Unreal Engine 4 for the first time as well as PBR workflow with scan based texturing.
This time, the big challenge was learning how to create nice vegetation and using procedural texturing with the Substance tools, in order to achieve a believable and beautiful environment.
The main steps I took to build this scene (which is not finished yet) are the following:
- Create a terrain
- Model manmade sculptures
- Create tileable textures with Substance Designer
- Create the vegetation
- Create lighting and FX’s
Using Substance Designer
I was very impressed with the work of Ready at Dawn on their materials and shader system and wanted to mimic their technique in Unreal Engine 4. I decided to use Substance Designer to create my base materials and then layer up with other materials. Each substance is used as a material function, so I can then add them on top of each other. The AO and the normals of those substances are combined with a per object bitmap baked from the highpoly.
I layer them up using a RGB map made with Substance Painter. I use the red channel to layer the moss, the green channel for the ambient occlusion, the blue channel to give some color variation to the edges, and the alpha channel for some albedo color variation.
Also because the RGB Masks are made in Substance Painter, I can create a smart material for the first one, apply it to the other ones, and i then just have to tweak a little bit. This workflow really helped me to texture these meshes faster!
In this environment, each sculpted stone material is an instance of the master material I mentioned earlier. I just have to plug their unique maps in, and it’s done!
Figuring Out the Materials
First, I gather a lot of references to get a sense of which shape I want to achieve. Then, I create a reference board that I keep on my second screen while working using a program called Kuadro. This allows me to create a board with my references on my desktop and save that board, so I can reopen everything in a second. I highly recommend it, it’s a must have!
However, in the end I recommend focusing on replicating only one reference. Mixing several elements from different types of rocks never gave me a satisfying result.
I create the heightmap, which is going to help me getting a sense of what the texture looks like in 3D space. Keeping an eye on my reference, I try to get the main shape of the surface. This is, in my opinion, the most important part and the one that needs the most trial and errors. Then I can start adding details. I always try to have 3 level of detail to read in order for my substance to be as interesting from a distance or close up.
For that part of the height creation, I love to use the blend max node and histogram range. With these, you can combine 2 heights and set which one is on the top of the other. And thanks to the tessellation in Substance Designer, I can have a sense of what it looks like in 3D space.
Finally, when I find it satisfying, I can start the albedo. I have one simple rule for it : Never use a uniform color node. I like to start with two different noises colored with two different gradients that I picked on my Ref board. I then blend it with another noise to mask, and i also change the random seed for more variation.
Then I add color details from the heightmaps to give a better sense of depth to the texture. The sharpening and color correction helps me get a better control of my textures when I’m in engine.
Then with a combination of detailed albedo maps and data from the height, I create a roughness map according to my references.
Advantages of Procedural Materials
I started using Substance Designer 2-3 months ago now and the first thing I should say is that it’s a really fun tool to use. But in a production point of view, Substance Designer provides a very nondestructive workflow. Being able to create and expose parameters really allows me to get lots of variation on textures.
The final version of my ground substance contains the leaf substance I created for my trees. I also add the clovers I just created to help my mossy ground texture look more believable. Each substance I create is a new resource I can use to create and improve new ones. This type of iterative process is in, my opinion, what makes Substance Designer a great piece of software.
Another good point about substances is that they are very light. And even if this is a personal project, having light textures is always great.
Some things to keep in mind: test your substance as soon as you can in the game engine. Even if the Substance Designer’s viewer is getting better, it can sometimes differ from the real look.
Also, don’t underestimate the ‘’exposing parameters’’ step. It can take a little bit of time to make this simple and very customizable. But it is a necessary step in order to reuse them and create variations.
This step allows you to create and build a substance bank that you can use in virtually all of your projects or share with the community on Substance Share.