Skip to content

Export Textures for Substance Painter

This guide covers the Substance Painter destination on Export Texture and the matching source on Texture Folder. The files are written for Substance 3D Painter’s PBR Metallic Roughness workflow, in the DirectX normal convention Painter assumes for a map placed in a fill layer.

SettingValue
DestinationSubstance Painter
Filename Template{name}_{channel}
Normal ConventionDirectX

Shown for a set named oak_bark with all eight roles (how to read these tables). A set with fewer roles writes fewer files.

FileWhat it holdsContainer and depthEncoding
oak_bark_BaseColor.pngBase Color in RGB, and an alpha that is opaque unless the Opacity row sends the cutout herePNG 8-bitColor
oak_bark_Normal.pngNormalPNG 16-bitPacked normal, DirectX
oak_bark_Roughness.pngRoughnessPNG 16-bitLinear data
oak_bark_Metallic.pngMetallicPNG 16-bitLinear data
oak_bark_Height.pngHeightPNG 16-bit, or EXR 16-bit (half) outside 0 to 1Linear data
oak_bark_Opacity.pngOpacityPNG 16-bitLinear data
oak_bark_Emissive.pngEmissivePNG 8-bitColor

Nothing is packed.

Not written: Ambient Occlusion. This destination follows the separate metallic and roughness maps of Painter’s PBR Metallic Roughness template and declares no ambient occlusion row, so the panel reads Not written: Ambient Occlusion (Substance Painter has no slot for it). Click Add Map beside it to write oak_bark_ao.png as well. The Destination then reads Custom, which is correct, because the folder now carries one file more than the preset describes.

  1. Place the maps in a fill layer. Painter reads a normal map used in a fill layer or a tool as DirectX, which is how this destination writes it. That reading does not follow Project Configuration > Normal Map Format, which governs baking, the viewport, and Painter’s own exports.
  2. A map only has somewhere to go when its channel exists in the project. Add Height, Opacity, or Emissive under Texture Set Settings > Channels when the project lacks one.

Adobe’s recommended project values differ per target: OpenGL for Unity, Maya, and Blender, DirectX for Unreal and 3DS Max. The Normal Convention row on Export Texture is never locked. If you write OpenGL instead, tell Painter so on the map itself: open the menu beside the normal map’s slot in the fill layer and pick the OpenGL format there.

When you write DirectX under the plain Normal name, the panel adds a note saying where the convention is recorded. Under this destination it says that Texture Folder reads the folder as DirectX when its Source is Substance Painter or Auto detects it, because the destination declares the convention even though the file name does not.

Change the rows so the Destination reads Custom, or set DirectX by hand under a destination that declares OpenGL, and the note becomes a warning instead: nothing on the way back records the choice, so the map needs Normal Convention set explicitly on the importing node.

Point Texture Folder at the folder and set Source to Substance Painter. Under that source the Normal Convention Auto item reads Auto (DirectX, from the source), so the map comes back the right way up. A cutout in the BaseColor alpha comes back as the set’s Opacity, and an Opacity file in the folder wins over it.

Adobe publishes the naming tokens Painter’s export templates use, but no canonical default naming string. The spellings above are taken from the outputs of the PBR Metallic Roughness preset and are not quoted from a first-party sentence. If your Painter project exports different names, edit the Channel Name fields (or the Names rows on Texture Folder) to match, and save the result as a preset.