Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

Texturing with Substance Painter

Content by Hayden Price


This is going to be a cross-post for the Allegorithmic blog post. This assumes you know the basics of high/low poly modelling and baking, as well as
UV-unwrapping your models.

Substance Painter

Stage 1 – Preparing Your Project

I generally start off my projects off using a Metal/Roughness preset and loading in the mesh. For many of my models, depending on their complexity, I
will skip the sculpting stage of the high poly workflow, and instead opt to paint in finer details instead. This is what I did for the Yoku Greatsword
below, so I’ll be taking you through those processes.
After creating a project and loading in my model, the primary steps are to get the project prepared for texturing. This includes getting all the baked
maps I need for the texture, as well as getting my project prepared and split into different groups. The only bakes I worry about getting at this stage are
the Normal and ID maps, as they will be used to create my folder structure, as well as give me a base normal map to paint my height details on to. I
bake all of my maps using mesh naming in Substance, as it’s my preferred method.
Here is the ID map I got out of Substance, as well as the layer groups I have prepared for the project. As you can see, I have used the ID map to mask
out color selections for each of the groups.
Stage 2 – Editing the Height Map

Once I have my normal and IDs baked out, I make sure to create a Height layer within my project that can be added to the Normal Map, then used as a
base for further bakes. What I do is I create a fill layer in each layer group (as you can see they are split up into Blade, Iron, Copper and Leather). This
fill layer I change to effect only the height map. From here, I add a Paint effect onto my Fill layer and I paint in some height details, such as large
scratches, that I want to be apparent in my texture. Keep in mind that this step is only for the larger details, and the smaller microdetails that will be
added in the normal map will be added later on.
Once my height details are painted onto the height layer, we can see their effect by swapping to the Normal + Height + Base Normal layer and seeing
how strong all of our painted normals are. I generally have to play around with the height strength and blending properties to get a good look, so be
sure to go back and make some changes. Below you can see the end result of my painted height details compared to the original baked normal.
For the next step, I export out my normal map from Substance Painter, before loading it back into my Shelf. Once it is in my shelf, I swap out my
previously baked normal map, and replace it with the one that has the added custom details. Now that I have my new ‘base’ normal map in, I can go
back into the Substance baker and bake out my AO and Curvature maps that will be used for the texturing process. By exporting then reimporting the
normal maps, this ensures that the AO and Curvature bakes take into account the large scratches and details I just painted in.
Stage 3 – Texturing

Now that we have all the bakes we will need for our textures, we can start by going into each of our groups (which we have previously split up into
materials and masked via color selection using our ID) and adding in some base material layers. The base materials I choose for each group usually
resemble whatever real life material the object might be made out of, although sometimes it can be useful to look at some other materials that might be
useful for providing a base for your textures. Substance Share has a great selection of materials to browse through, and I make use of a lot of them.
Once I’ve applied all my base materials to my model, I swap to the Base Color channel view in Substance Painter using the C key, that way I can get a
good look of what the texture will actually look like in-game as opposed to what it looks like in PBR. When texturing for non-PBR engines, I do 95%
of my texturing in the Base Color view.
As you can see, the base color doesn’t look too fantastic when it doesn’t have the other maps included, which is why we need to do a lot of manual
painting over the top to get our desired outcome. The first thing I want to add into my texture is the lighting, which I create by using a combination of
the AO and Curvature maps. I create a fill layer on top of each of the base materials, changing the settings to only effect the Base Color layer, and load
in the AO map, changing the blend type to Multiply. I usually bump down the opacity to anywhere between 15% – 45%, however some areas require a
bit more AO than others (this is also why I blend these textures on in each material group as opposed to the entire model, as it gives me more
flexibility).
Once the AO is added onto the base color, I do the same thing with the curvature, creating a new Fill layer, changing it to apply to only the base color,
loading in the curvature map texture, and then changing the blend settings as well. For the curvature layer, I use the Overlay blend type with an opacity
of 5% – 50%, once again, these opacities change depending on my needs.

After the AO and Curvature are blended, we start to get a better idea of what the texture is going to look like. From here you can play around with the
texturing a bit more to add those extra details in. What I do is add infill layers (set to Overlay) between the AO/Curvature and the base material layers.
I add a layer mask and apply a Paint effect, as well as other generators to the mask to add in details such as dirt, fine scratches, and other effects. Below
you can see the original base color texture as it gets combined with the AO/Curvature and grunge layers. The reason I use a mask to paint on my layers
is to have better control over the layers when it comes to the other texture maps such as Roughness and Metal.

https://i.imgur.com/CB4M76L.gif
Stage 4 – Roughness/Metallic = Specular/Cubemaps

Once my base color texture is done, I swap over to the roughness channel and start building that up using the same layers I used for painting on the
grunge. The Roughness map is what I use as a Specular map for non-PBR engines. Once again, I start at the bottom of my layer group, at the base
material, and adjust the roughness properties in the material itself to get a good base to work off. What I do then is I work my way up the layer stack I
have from the base color, simply by enabling the roughness channel on the layers and adjusting the values of the fill layer (I make sure not to add any
extra generators or effects as this will also affect my base color channel). This ensures my Roughness (or in this case Specular) adheres to the base
color layer, while at the same time allows me to create a specular variation that is dependent on my base color.
Stage 5 – More Height
Using the very same process I just used to create my Roughness (Specular) texture, I go back through my layer stack and enable the height channel on
a select few layers and adjust the height value of that particular layer. This is what is used to create those finer normal details on the weapon that aren’t
created from your fill layers. I generally swap to the Normal + Height + Base Normal channel for this step to see what my normal map will look like at
the end and adjust the settings accordingly.
Depending on the part of the asset, I sometimes also create a new layer in the group specifically for painting on small height details that I might not
have gotten from the base material normals.
Step 6 – Export
Once I am happy with all my layers, I export out my maps and check to see how they look in the game engine I’m creating for. I then jump back in to
Substance and make any subtle changes I might like. Due to the ease of texturing within Substance Painter, it is no problem to go in and change a
height value for some grunge, which would take much longer if you were texturing the object traditionally in Photoshop. I continue to make changes
until I’m satisfied with the end result.
Substance Designer

For converting textures in Substance Designer, a very similar process can be used, by blending the AO, curvature as well as using some other nodes, to
create something more like that we need. For this process, I have created a rather simple node which I use for converting the PBR texture to a more
traditional style. The node itself required 3 inputs, a Height, Normal, and Base Color. From there, it is simply a process of blending the AO, Curvature,
and Shadows into the Base Color to attain the result.

To create the Curvature, the Normal Input from the PBR texture is plugged into a Curvature Smooth node and then blended on top of the Base Color.

For the AO, the Height is plugged into an Ambient Occlusion node and is also blended on top of the Base Color.

A few extra touches which I like to add for variety include also plugging the Height into a Shadows node and blending that over the top too. I also
sometimes like to add a bit of the heightmap to the Base color, so the Height input goes into an Auto Levels node before being blended over the Base
color ever so slightly.

Below is an example of the basic node setup. I expose some parameters and adjust them as I need per texture, as all of them usually require some
tweaking to get the required look, particularly the blend opacity and the Shadows parameters.

I’ve also attached examples of the default PBR Base Color texture compared to the converted Base Color after passing through the node. (The original
Substances are packaged with Substance Designer)
https://i.imgur.com/GH0OAJ5.png

You might also like