Exporting Substance Painter Materials To Unity: A Step-By-Step Guide

how to export material from substance painter to unity

Exporting material from Substance Painter to Unity can be a complex process. Users have reported issues with textures, such as inconsistencies in roughness and normal maps, and difficulties in including textures in the model. To overcome these challenges, some users have suggested manually editing the roughness map in Photoshop before exporting, while others have recommended using specific templates and settings, such as the Unreal Engine 4 Packed template or the export presets feature, to ensure compatibility. Additionally, it is important to follow the guidelines for taking screenshots, as photos of computer screens taken by phones are not allowed in the Unity community.

Characteristics Values
Roughness Inconsistent from Substance to Unity. Everything is glossier in Unity.
Normals Act strangely.
Solution Export them as Bitmaps to make them behave as expected in Unity.
Unreal Engine 4 Packed template Set the texture format to BC7 and the sRGB option to false.
Substance plugin for Unreal Engine Import Substance Painter projects directly and tweak parameters.
Arnold template Use the Arnold renderer and the aiStandardSurface shader.
Cycles or Eevee renderers Use the Principled BSDF shader.
Substance plugin for Blender Import Substance Painter projects directly and tweak parameters in Blender.
Export presets Save output settings for different platforms and engines.
Export preview Check how textures look on different platforms and engines before exporting.
Colour May not show in full

cypaint

Use Photoshop to manually add a roughness map to your metallic map

When exporting materials from Substance Painter to Unity, you may need to manually add a roughness map to your metallic map in Photoshop. This is because the roughness may not export at all, or it may be inconsistent when transferred to Unity.

To manually add a roughness map to your metallic map in Photoshop, follow these steps:

  • Open your texture in Photoshop.
  • Go to "Filter > Noise > Add Noise" to add some noise to the texture. Adjust the amount of noise to give the texture some variation without making it look completely different. For example, a small amount of noise, like 5%, can be used to create a stone texture.
  • Go to "Image > Adjustments > Desaturate" to remove all colour from the texture, resulting in a black and white image.
  • Use the Eraser Tool to create rough edges and add extra depth and dimension to your texture.
  • Create a new layer and fill it with black.
  • Add a noise filter to the layer and apply a Gaussian blur to create a dirt texture.
  • Adjust the hue and saturation of the texture to match your desired level of roughness. For example, to create a very rough brick texture, adjust the settings until the texture appears very white.
  • Invert your roughness map if needed. Game engines typically read black as smooth and white as rough, so you may need to invert your map to ensure it aligns with your desired level of glossiness.

By following these steps, you can manually add a roughness map to your metallic map in Photoshop, ensuring that the texture displays accurately when exported to Unity.

cypaint

When exporting from Substance Designer to Unity, you might encounter inconsistencies in the roughness of your material. This is because Unity uses white as the roughest and black as the glossiest, which is the opposite of Substance. To address this, you can export the outputs as Targas (bitmaps) and link them to a new material.

  • Export the outputs as bitmaps (TGA): In Substance Designer, go to the "File" menu and select "Export Outputs". Choose .tga or "Targa" as the file format and select the output maps you want to export.
  • Create a new material in Unity: In Unity, go to the "Assets" menu and select "Create > Material". This will create a new material that you can use.
  • Link the exported bitmaps to the new material: Select the newly created material and look for the "Inspector" window. In the "Inspector" window, you will see slots for different texture maps, such as Albedo, Normal, Roughness, etc. Drag and drop the exported TGA files into the corresponding slots. For example, drag the "Normal" TGA file into the "Normal" slot, and the "Roughness" TGA file into the "Roughness" slot.
  • Adjust the material settings: With the material selected, you can adjust various settings in the "Inspector" window to fine-tune the appearance of your material. This may include settings like smoothness, metallicness, or roughness.

By exporting the outputs as Targas and manually linking them to a new material, you have more control over the appearance of your material in Unity. This approach can help you achieve the desired look for your 3D models and ensure consistency across different platforms and engines.

cypaint

Bake normals as OpenGL in SD and publish as DirectX in Unity

When exporting materials from Substance Painter to Unity, you may encounter inconsistencies in the normal map format, specifically between DirectX and OpenGL. To address this, follow these steps:

Bake the normals as OpenGL in Substance Designer (SD): In SD, you can use the baking system to generate your maps. When baking your normals, ensure that you select the OpenGL option. This step ensures that the normal map is in the correct format for the next stage.

Publish as DirectX in Unity: When publishing your substance in Unity, it will automatically adapt to the selected shader convention. In this case, since you baked the normals as OpenGL, publishing it in Unity will make it behave as DirectX. This is because Unity's default behaviour is to adapt to the shader convention.

It is important to note that if you export your maps as Bitmaps (TGA), you may need to manually adjust the roughness map in Photoshop to match your desired outcome. This is because the roughness map may not export correctly when using the Published asset option.

Additionally, Unity has the ability to use both DirectX 11 and OpenGL Core graphics APIs, offering features such as compute shaders, tessellation shaders, and shader model 5.0. By default, your game builds and the Editor will try to use DirectX 11, falling back to DirectX 9 if unavailable. However, you can enable the use of OpenGL Core on Windows by adjusting the Player Settings.

cypaint

Use the Substance plugin to import Substance Painter projects directly

To use the Substance plugin to import Substance Painter projects directly, you need to first ensure that your project settings are compatible with the output template used. For instance, if you used the Unity HDRP template, you need to have the High Definition Render Pipeline package installed in your Unity project. You also need to set the colour space to Linear and the texture compression to ASTC or ETC2.

Then, you can use the Substance plugin for Unity to directly import your Substance Painter projects and adjust the parameters within Unity. This plugin allows you to import your projects without having to manually drag and drop the exported texture files into your Unity project folder.

Similarly, the Substance plugin can be used for Unreal Engine, Maya, and Blender to directly import Substance Painter projects. For Unreal Engine, the plugin automatically imports textures into an open Unreal Editor project, creating a connection between Substance Painter and Unreal Engine. For Maya, ensure you have a compatible renderer and shader, and for Blender, use the Cycles or Eevee renderers and the Principled BSDF shader.

cypaint

Utilise the export preview feature to check how textures appear on different platforms before exporting

When exporting materials from Substance Painter to Unity, it is essential to utilise the export preview feature to ensure that your textures appear as intended across different platforms. This feature allows you to preview how your textures will look before finalising the export process, saving you time and effort in making adjustments later on.

To access the export preview feature in Substance Painter, navigate to "File > Export Textures." This will open the "Export Textures" window, which contains three tabs: "Settings," "Output Templates," and "List of Exports." The "Settings" tab allows you to customise the format and settings of your exported files, while the "Output Templates" tab is where you can manage and create templates for different platforms.

By using the export preview feature, you can verify that your textures are optimised for each platform's specific requirements. For example, when exporting to Unity, you need to ensure that your project settings match the output template used. This includes setting the colour space to Linear and the texture compression to ASTC or ETC2. With the export preview, you can make sure that your textures are correctly configured, avoiding potential issues or inconsistencies in your final output.

Additionally, the export preview feature helps you maintain consistency across different platforms. By previewing your textures, you can ensure that they are visually cohesive regardless of the platform they are viewed on. This is especially important if you are targeting multiple platforms, such as Unity, Unreal Engine, Maya, or Blender, as each platform may have unique texture requirements and behaviours.

By taking advantage of the export preview feature, you can streamline your workflow and enhance the overall quality of your exported materials. It empowers you to make any necessary adjustments before finalising the export, ensuring that your textures are optimally presented on all target platforms. This proactive approach saves you from potential troubleshooting and reduces the need for time-consuming revisions after the export process.

Frequently asked questions

To export your Substance Painter assets to Unity, you must first ensure that all textures are included in the model. Then, you can drag and drop the exported texture files into the Unity content browser.

The texture format should be set to BC7 and the sRGB option should be set to false.

To include textures in your model, you must create a material for each texture, apply the appropriate masks, and then add them to your model.

To import your Substance Painter assets into other platforms and engines, you can use compatible renderers and shaders. For example, to import into Maya, you need to use the Arnold renderer and the aiStandardSurface shader.

Written by
Reviewed by
Share this post
Print
Did this article help you?

Leave a comment