How to Optimise Your Substance Painter Project
Felipe Vimeney - a Brazilian artist born and raised in Rio de Janeiro - has taken the time to share his tips for optimising your Substance Painter project to truly make sure it's not only fast, but perfectly setup. Preparing the mesh * It’s highly recommended that you have a
Felipe Vimeney - a Brazilian artist born and raised in Rio de Janeiro - has taken the time to share his tips for optimising your Substance Painter project to truly make sure it's not only fast, but perfectly setup.
Preparing the mesh
- It’s highly recommended that you have a low-poly and a high-poly version of your mesh, so you’ll have less or none issues during the baking process;
- Usually is a good idea creating a separate file for each low-poly and high-poly version to apply the naming convention for a proper baking operation;
- An easy way to name the meshes inside Maya is using the Modify > Search and Replace Names;
- On the field Search for type $ so it will look into all meshes in your scene;
- On the field Replace With type _low on the low-poly file and _high on the high-poly file and apply the naming convention.
Exporting the mesh
When exporting meshes from Maya, I usually prefer to use FBX format to work with Substance, as I had less problems in comparison with OBJ and ABC.
- On the export window in the Geometry tab check the following checkboxes:
- Smoothing Groups
- Tangents and Binormals
- Smooth Mesh
- Selection Sets
I usually disable all other tabs like animations, camera, lights, …. In the end of the list make sure to select FBX 2014/2015 version.
This is the recommended version as it holds well the smoothing group information on the exported FBX file. It is also a recommendation when using FBX files with Mari to properly load the selection sets.
Baking the maps
- Start a new project with default PBR – Metallic Roughness (allegorithmic);
- Select the mesh file (OBJ, ABC or FBX);
- Check Create a texture set per UDIM tile if you're working with UDIMs;
- Select the desired Document Resolution to help you export the baked maps on the correct resolution;
- Disable Compute tangent space per fragment as we exported the FBX with the tangents and binormals included on the file.
- Go to the Texture Set Settings and find the Bake Mesh Maps button;
- On the Baking Window make sure to choose the desired Output Size, usually the same resolution size chosen in the New Project Window;
- If you’re not using ID materials, you can disable ID on the left side list;
- On the High Definition Meshes click on the document icon to navigate to your's high-poly mesh path and select it for the baking process;
- Scroll down until the Match field and select By Mesh Name. It will use the naming convention _low and _high to match each piece and bake the maps isolating meshes avoiding problematic collisions from topped parts.
Click on Bake all textures sets and go grab a coffee :)
- It’s now time to export the baked maps. Go to File > Export Textures
- On the Export Window make sure to:
- Select the path where Substance must save the baked maps;
- Select the .PNG 16bit format;
- On Config field select the Mesh Maps template;
- Finally check the document size for all UDIMs.
To save even further space you can save certain maps at 8bit.
- Normal = 16bits
- World Space Normals = 16bits
- ID = 8bits (if you don't have too much different colors)
- Curvature = 16bits
- Ambient Occlusion = 8bits
- Position = 16bits
- Thickness = 8bits
The Mesh Maps template exports all baked maps with the proper naming convention and it’ll be fundamental for the next and last step.
- Go to File > New to start a new project;
- On the New project window now you need to check the following:
- On File select the low-poly version;
- Check Create a texture set per UDIM tile if working with UDIMs;
- Select the proper Document Resolution for your project;
- Disable Compute tangent space per fragment;
- On the Import mesh normal maps and baked maps for all materials click on Add button, navigate to your baked maps folder and select them all.
You’ll now have a Substance Project file, grabbing all baked maps from disk and auto-assigned to your shaders and with no cache embedded in the project file making it much lighter.
Note: During basic tests using this work-around I could get a project file size 70% lighter in comparison with the project using the baked maps embed.
There is also some really good documentation on the Substance site for optimising projects - 'Projects are really big'.
Thank you all for reaching the end of the article and I hope that it helps you on having a better workflow and that you have learned something new.