Skip to content

Metallic

glTF: pbrMetallicRoughness.metallicFactor · pbrMetallicRoughness.metallicRoughnessTexture (blue channel)

Metallic controls whether a surface behaves as a metal or a dielectric. In glTF it is stored in the blue channel of the shared metallicRoughnessTexture. It is a non-color (linear) workflow.

Shader Scalar attribute Texture attribute Notes
standardSurface, aiStandardSurface metalness metalness
openPBRSurface baseMetalness baseMetalness Different attribute name from metalness
StingrayPBS metallic TEX_metallic_map + use_metallic_map Repacked into the blue channel on export

Factor only

Set the metallic attribute directly on the shader.

  • standardSurface, aiStandardSurface: set metalness.
  • openPBRSurface: set baseMetalness.
  • StingrayPBS: set metallic.

Exports as metallicFactor.

Factor-only metallic connection for standardSurface
standardSurface factor-only metallic setup.

Factor-only metallic connection for aiStandardSurface
aiStandardSurface factor-only metallic setup.

Factor-only metallic connection for openPBRSurface
openPBRSurface factor-only metallic setup.

Factor-only metallic connection for StingrayPBS
StingrayPBS factor-only metallic setup.


Texture only

Color space: Raw

standardSurface · aiStandardSurface:
  aiImage.outColorB  →  shader.metalness
  file.outColorB     →  shader.metalness

openPBRSurface:
  aiImage.outColorB  →  shader.baseMetalness
  file.outColorB     →  shader.baseMetalness

StingrayPBS:
  grayscale file.outColor   →  shader.TEX_metallic_map  (enable use_metallic_map)
  grayscale file.outColorR  →  shader.TEX_metallic_map
  grayscale file.outColorG  →  shader.TEX_metallic_map
  grayscale file.outColorB  →  shader.TEX_metallic_map

Metallic is packed into the blue channel of metallicRoughnessTexture on export. Use a grayscale source image for the most reliable result.

For a dedicated grayscale metallic image, outColor, outColorR, outColorG, or outColorB all export equivalently because the image carries the same value in every RGB channel. The examples below use outColorB to mirror glTF's metallic channel. If metallic is the only metallic/roughness channel in use, the exporter keeps the original grayscale image as the metallicRoughnessTexture instead of generating a new packed map.

Texture-only metallic connection for standardSurface using file and place2dTexture
standardSurface texture-only metallic setup with file and place2dTexture.

Texture-only metallic connection for aiStandardSurface using file and place2dTexture
aiStandardSurface texture-only metallic setup with file and place2dTexture.

Texture-only metallic connection for openPBRSurface using file and place2dTexture
openPBRSurface texture-only metallic setup with file and place2dTexture.

Texture-only metallic connection for StingrayPBS using file and place2dTexture
StingrayPBS texture-only metallic setup with file and place2dTexture.

Note

For standardSurface, aiStandardSurface, and openPBRSurface, aiImage connects the same way as the file examples above: connect the matching aiImage.outColorB output to the same metallic input, and use a place2dTexture if you need UV repeat, wrap, mirror, offset, or rotation controls.

StingrayPBS does not support an aiImage metallic path.


Factor + texture

glTF computes: metallicFactor × metallicTexture

For standardSurface, aiStandardSurface, and openPBRSurface, a dedicated grayscale metallic map can use any one multiplyDivide lane. The examples below use the Z lane because it mirrors glTF metallic:

  1. Connect the grayscale metallic texture into one lane of multiplyDivide.input1X, input1Y, or input1Z.
  2. Set the matching metallic multiplier on multiplyDivide.input2X, input2Y, or input2Z.
  3. Connect the matching multiplyDivide.outputX, outputY, or outputZshader.metalness / baseMetalness.

For dedicated grayscale metallic maps, the exporter traces the actual source plug, so outColor, outColorR, outColorG, or outColorB can feed that lane. The lane choice does not need to be Z.

For StingrayPBS, connect the grayscale file texture to TEX_metallic_map, enable use_metallic_map, and set the metallic multiplier on metallic.

standardSurface · aiStandardSurface:
  texture.outColorB  →  multiplyDivide.input1Z  →  shader.metalness

openPBRSurface:
  texture.outColorB  →  multiplyDivide.input1Z  →  shader.baseMetalness

StingrayPBS:
  grayscale file.outColor  →  shader.TEX_metallic_map  (enable use_metallic_map)
  set shader.metallic as the multiplier

If the source image is not grayscale, use the connection that carries the real metallic data. For a packed ORM image that means outColorB.

For packed ORM reuse on standardSurface, aiStandardSurface, and openPBRSurface, the metallic data must still originate from the source texture's B channel, but it may travel through any one multiplyDivide lane. One shared multiplyDivide node or separate multiplyDivide nodes are both supported.

The multiplier exports as metallicFactor.

Metallic factor plus texture connection for standardSurface using file and place2dTexture
standardSurface factor-plus-texture metallic setup with file and place2dTexture.

Metallic factor plus texture connection for aiStandardSurface using file and place2dTexture
aiStandardSurface factor-plus-texture metallic setup with file and place2dTexture.

Metallic factor plus texture connection for openPBRSurface using file and place2dTexture
openPBRSurface factor-plus-texture metallic setup with file and place2dTexture.

Metallic factor plus texture connection for StingrayPBS using file and place2dTexture
StingrayPBS factor-plus-texture metallic setup with file and place2dTexture.

Note

aiImage uses the same factor-plus-texture graph as the file examples above: connect the same aiImage.outColorB output to the matching multiplyDivide.input1* lane, then continue from the corresponding multiplyDivide.output* to the same shader input.

StingrayPBS does not support an aiImage metallic path.


Packed ORM / MR map

The preferred glTF layout when roughness, metallic, and AO share one texture:

Channel Data
R Occlusion
G Roughness
B Metallic
texture.outColorR  →  shader.gltfAO
texture.outColorG  →  shader.specularRoughness
texture.outColorB  →  shader.metalness        (standardSurface · aiStandardSurface)
texture.outColorB  →  shader.baseMetalness    (openPBRSurface)

For standardSurface, aiStandardSurface, and openPBRSurface, automatic packed-ORM reuse requires metallic and roughness to resolve to the same file path, with roughness read from G and metallic from B. One shared texture node or multiple texture nodes that point to the same file are both supported.

AO is exported from that same packed image only when the image's R channel is explicitly connected to gltfAO. Without the gltfAO connection, the exporter writes only metallicRoughnessTexture.

Separate grayscale maps are also supported. When any 2 or 3 of AO, roughness, and metallic are texture-driven from different grayscale sources, the exporter generates a packed OR, MR, OM, or ORM texture as needed. If only metallic is present, it exports the original grayscale image directly as the metallicRoughnessTexture. All generated packed maps must share the same dimensions.

If metallic and roughness already share one packed source image but AO comes from a different file, the exporter keeps AO as a separate occlusionTexture instead of merging it into that MR image.

For StingrayPBS, the exporter also recognizes packed ORM-style authoring when metallic and roughness share the same source image, even if the Maya graph uses file.outColor on one shared file node or on multiple file nodes that point to the same image path. In that case the exporter infers the glTF channel roles from the destination attributes and writes metallic to the blue channel.


UV transform

Use a connected place2dTexture with either file or aiImage to set repeat, wrap, mirror, offset, and rotation.

UV set: assign via Maya's UV Set Editor or UV Linking - see UV Set Selection for node-type differences.

For standardSurface, aiStandardSurface, and openPBRSurface, keep metallic, roughness, and AO inputs on matching UV sets and matching transforms when you expect them to share one exported texture. When the exporter reuses or generates a packed MR/ORM texture, it takes the UV transform and texCoord from the first resolved metallic, roughness, or AO texture node.

If StingrayPBS metallic and roughness use different UV sets or different place2dTexture transforms, the exporter warns and still packs them into one glTF metallic-roughness texture using the first metallic/roughness input it finds as the reference UV transform.


Notes

  • Metallic is a non-color map. Always use Raw color space.
  • Use grayscale metallic maps for standalone inputs. If the data lives only in one channel of a packed image, follow the packed ORM workflow above.
  • If packing into a single image, metallic must be in the blue channel per the glTF spec.
  • StingrayPBS: use TEX_metallic_map and set UV transforms on the connected place2dTexture.
  • StingrayPBS: standalone grayscale metallic accepts outColor, outColorR, outColorG, or outColorB. Packed ORM detection prefers shared-image workflows and maps metallic to glTF B on export.