Substance Painter - notes

Material sets & ID Maps

Material set (Maya) or shop_materialpath (Houdini). To make it easier to paint it can be good to organize the model using 2 separate models (of the same model) but where the materials are named and assigned differently. Lets say that we wish to separate a model into 3 different texture sets. “base”, “mid” and “top”. We create material called this and assigns them to the geo that we want to separate i.e. have in separate texture sets.

In the second model we will create new materials with new names that makes sense like “metal”, “plastic” etc and assign this to the geo that it relates to. We can the use this model as the high resolution model when we bake the ID maps. This way we can separate the model in the viewport when we paint but also get good ID maps that we can use in our painting workflow.

Texture Set List

A texture set is constructed by material ID, meaning the model is geometrically separated by its materials. These sets are listed in the texture set list. A quick way to select a texture set is Cmd Alt RMB click on the model to select the corresponding texture set.

Texture Set Settings

Each texture set will have its on texture set settings. The settings of the selected texture set will be displayed in the texture set settings.

Lets say that we want to create a glass material then we need to add an opacity layer to the channels: (Note that we also have created a new shader instance as described below in shader settings)

  • Add Channel
    • To add a channel, we click the + icon in the top of the texture set settings window and select the channel we wish to add. (in this case opacity)


Each texture set will also have its on layer stack associated with it. The layers of the selected texture set will be shown in the layers window.

In the layers window we control which layer is connected to which channel. So lets say that we want to add a layer and have it control the opacity.

  • Add a fill layer
    • Click on the add fill layer icon (looks like a bucket) in the top of the layer window. Give the name a descriptive name.
  • With the new fill layer selected in the Properties window uncheck all channels excpet the opacity (op)


To change the opacity of a layer you can adjust the slider on the right side of the layer. Note that you need to set the dropdown menu att the top left of the layers window to the channel you wish to adjust.


The properties window will display properties of the selected item. Here we can select which channels a specific fill layer is affecting.

  • Quck view menu
    • if you hav the properties window closed you can RMB click the work area to popup the quick view menu. This will display the properties of the selected item.

Shader Settings

In the shader settings window you can see the shader settings of the selected texture set. On the right hand side of the texture set the shader of each texture set will be displayed.

By default we will probably work with a PBR shaders. But If we want to create a glass material we need to change the shader:

  • Create new shader
    • You can assign a new shader by LMB click the dropdown menu > New Shader Instance
  • Edit shader settings
    • In the shader settings window click the second button from the top (probably says pbr) and select the PBR-metal-rough-with-aplha-blending material from the popup window.

Baking maps

Each texture set has its texture settings. In the Texture Set Settings you will find the Bake Mesh Maps button. Click to open the baking window. Here we cab select which maps we want to bake. If we are painting a high resolution model we might want to skip the Normal and only bake World space normals. You can select the map type sin the left widget and the associated parameters will be displayed to the right.

Here are som parameters we might want to change:

  • Common
    • High Definition Meshes -> path/to/mesh.fbx
      • Note as discussed earlier (Material sets & ID Maps) here we use the same model but with different material names and assignment.
  • ID
    • Color Source -> Material Color
      • We do this so that we can use the material sets to generate the ID maps. Note as discussed earlier (Material sets & ID Maps)

The changes we do to the baking params only applies to the texture set that is specified in the texture set dropdown at the top in the baking parameters widget. if we want to use the same settings on all texture sets we can click the Apply to all button on the righthand side.

ID map fix

We might get artifacts when we bake the ID maps (some of the colors will be projected to other nearby colors). To fix this we can do the following:

We first append a suffix to the material names used in the two models that we prepare for substance painter. In the “main” file that we import when we start the project we give the materials a suffix of _main and in the mesh that we specify in the baking process (as high poly mersh) we give its material the suffix of _id. Then we oipen up the bake window and uncheck all maps but the ID map and change the following:

  • Common
    • Match -> By Mesh Name
    • High Poly Mesh Suffix -> _id
    • Low Poly Mesh Suffix -> _main

Then we click Bake All Texture Sets again.

Add custom asset

To add a rust texture to the shelf this is what we do:

  • > File > Import Resources (or use the rightmost button in the shelf toolbar)
  • Click Add resources button

  • Select the texture(s) and press open
  • To organize the assets we add some tags. select all imported assets and in the rightmost dropdown menu select Textures
  • In the textfield that says “Optional prefix/path” lets write rust (or what makes sense)
  • We need to specify to what we want to import the textures to. We do this by clicking the button that says Import you resources to: in the lower right corner.
    • we can choose between, this session, current project or shelf.


8.16 in


  • Drag & drop material using ID maps
    • Hold Cmd while dragging and dropping. (This will add a color selection effect and set the color)
  • Passthrough blending mode
    • This using this mode we can (among other things) use the clone stamp to clone all layer below.


Texture Set

Function Key
Select texure set Cmd Alt RMB click


Function Key
Material Mode M
Display Next Channel C
Display Prev Channel Shift C
Display Next Mesh Map B
Display Prev Mesh Map Shift B


Function Key
Size Cmd Scroll
Size Cmd RMB drag left - right
Wazza Cmd RMB drag up - down
Flow Cmd LMB drag left - right
Rotate Cmd LMB drag up - down


Function Key
Rotate HDRI Shift RMB drag

Anchor Points

Example 1

Lets say that we want to create 3 channels - basecolor, roughness and height. We want to drive the basecolor with a grunge texture which we will colorize using a gradient effect. We will also use the same grunge texture instance to affect the roughness. Finally we will add some additional grunge to it and use the combined channels in our height channel.

Base Color

  • Create a Fill layer, name it basecolor & enable only the color channel.
  • RMB click the layer -> Add Fill, enable only the color channel & add a grunge map to the Base Color slot
  • RMB click the layer -> Add Anchor Point, name it “base_noise”
  • RMB click the layer -> Add Filter, enable only the color channel & add a Gradient filter
  • Set the color 1, 2 & 3 slots to what you like.


  • Create a Fill layer, name it roughness & enable only the rough channel.
  • LMB Click the Roughness slot, in the popup menu click Anchor points and select the “base_noise” anchour we created earlier.
  • In the added anchor noide we can choose to invert or adjust the levels with the built in levels widget.
  • We add some additional grunge to the roughness by RMB click the layer -> Add Fill enable only the rough channel, click the Roughness slot and load some nice grunge, (maybe set as triplanar)
  • Lastly we will add another anchor so that we can use the roughness in our height layer. RMB click the layer -> Add Anchor Point, name it “rough”


    • Create a Fill layer, name it height & enable only the height channel.
  • LMB click the height slot, in the popup menu click Anchor points and select the “rough” anchor we created earlier.
  • Since we want to use the “roughness” channel to feed into our height, in the anchor node Referemced channel set it to roughness.
  • We can adjust the levels with the built in levels control of the anchor node
  • We can also adjust the opacity of the height layer. First make sure that the dropdown in the top left corner of the layers window is set to height, then we can adjust the height opacity. (on the right side of the fill layer itself)

Flattening (passthrough)

Lets say that you want to create an anchor to use the combined result of many layers. To do this we can use the passthrough blending mode.

  • Create a Paint Layer
  • Enable the channel that you wish to “flatten” lets use roughness in our example (disable the other channels)
  • Set the dropdown in the top left corner of the layer menu to the channel in question (in our case roughness)
  • Set the blending mode of the created layer to Passthrough
  • RMB click the layer -> Add anchor point, give it a useful name
  • Now we can target this anchor from layers that are above. (When you target the anchor make sure that you set the right channel to sample)

Here is a good link that demonstrates the concept above. Here is another one.

Export textures

Export presets

Read the docs

To create a new export preset:

  • > File > Export Textures
  • In the Configuration Tab click either the duplicate selected preset ot the plus icon to create a new empty preset
  • In the top of the Current Preset widget (in the center of the widget) click on one of the Output Maps to create it.
  • To select which data to connect to the newly created output map we can select a map from Input maps, Mesh maps or Converted maps (right side of the widget)
  • Click and hold on the desired map and drag and drop on the Channel type of theĀ“the newly created output map. If you created an output map with RGB + A you will have two squares and you can connect two maps.

Note that the normal map type DirectX or OpenGL that you select in the preferences will be overridden by the normal map type that you have chosen in your export presets. In the case of Redshift you want to make sure that the Normal OpenGL map is connected to the normal output map of your export preset template.

Input maps: direct channels that can be added in a texture set. Via the TextureSet settings panel. Mesh maps: Textures present in the additional map slots of a Texture Set (baked textures). Converted maps: virtual textures, those textures are generated during the export based on the channels present in the document.

The path to the export presets dir:

  • Windows: C:\Users*username*\Documents\Substance Painter\shelf\export-presets
  • Mac OS: Macintosh > Users > username > Documents > Substance Painter > shelf > export-presets