Add a $material keyword for constructing the output filenames for textures in the Output Templates that replaces $material with the name of the top level material or smart material that you have active on a given texture set. This allows easy differentiation of the resulting files when you are generating multiple variations of a model. For example, I have a chair model called CHAIR. It has 2 parts each with a unique texture set called CUSHIONS and FRAME. I then apply a blue cloth material to the cushions called "BLUE TWEED". I then apply a wood texture to the FRAME called "Oak".
In my normal workflow, I generate dozens of variations of materials for my objects that I then use in another system to allow my customers to quickly and easy customize the object with a choice of material textures. For example, I sell a chair model that the customer can use and click on to pick from a list of 20 to 30 wood textures or another 20 to 30 fabric textures for the cushions. With the way Substance Painter works today, I have to output one set of textures, then manually rename the files to include the materials used in them.
I want to be able to export something like this: $project_$textureSet_$material.diffuse or $project_$textureSet_$material.normal so that resulting texture file names come out like:
chair_cushion_blue_tweed.diffuse
chair_frame_oak.normal
By doing this, I can simply apply a new material and export the textures, repeatedly, and then collect all of the output files and be able to differentiate:
- which object (eg project)
- which part (eg texture set)
- which material
This allows me to quickly and easily apply the appropriate textures in the target system.