Skip to content

Sheen

glTF extension: KHR_materials_sheen
glTF properties: sheenColorFactor · sheenColorTexture · sheenRoughnessFactor · sheenRoughnessTexture

Sheen simulates the soft, retroreflective highlight characteristic of cloth and fabric surfaces. Requires KHR_materials_sheen to be enabled in the export options.

Shader Weight / gate attr Color attr Roughness attr
standardSurface, aiStandardSurface sheen (must be > 0) sheenColor sheenRoughness
openPBRSurface fuzzWeight (must be > 0) fuzzColor fuzzRoughness
StingrayPBS not supported not supported not supported

Sheen color and roughness share one texture image with an alpha channel:

Channel Data
RGB Sheen color (sRGB)
A Sheen roughness (Raw)

Note

Sheen data is only exported when the weight attribute (sheen / fuzzWeight) is greater than 0.0.


Sheen color

Factor only

standardSurface, aiStandardSurface: Set sheen > 0 and sheenColor to the desired color.
openPBRSurface: Set fuzzWeight > 0 and fuzzColor to the desired color.

The color value exports as sheenColorFactor. In glTF, the default is black [0, 0, 0].

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

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

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

Texture only

Color space: sRGB

Connect the texture outColor to the color attribute:

standardSurface · aiStandardSurface:
  aiImage.outColor  →  shader.sheenColor
  file.outColor     →  shader.sheenColor

openPBRSurface:
  aiImage.outColor  →  shader.fuzzColor
  file.outColor     →  shader.fuzzColor

Exports as sheenColorTexture.

If only a sheen color texture is connected, the exporter keeps the original RGB image as sheenColorTexture. To author a color tint multiplier, route the color texture through colorComposite and set the tint color there.

Because glTF defaults sheenColorFactor to black [0, 0, 0], the exporter also writes an explicit white sheenColorFactor for texture-only sheen so the imported glTF keeps the sheen layer enabled.

Texture-only sheen color does not create sheenRoughnessTexture. Roughness is only exported when a roughness input is authored, or when the same packed RGBA image explicitly drives sheen roughness from its alpha channel.

The example below uses one packed RGBA sheen image: RGB feeds sheen color, and the same texture's alpha feeds sheen roughness.

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

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

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

Factor + texture (color tint)

To tint the texture color, use a colorComposite node:

standardSurface · aiStandardSurface:
  aiImage.outColor  →  colorComposite  →  shader.sheenColor

openPBRSurface:
  aiImage.outColor  →  colorComposite  →  shader.fuzzColor

The color tint exports as sheenColorFactor.

The example below shows the common packed sheen workflow: RGB goes through colorComposite for color tint, while the alpha channel goes through multiplyDivide for roughness scaling.

Sheen factor plus texture connection for standardSurface using file and place2dTexture
standardSurface factor-plus-texture sheen setup with file, colorComposite, and multiplyDivide.

Sheen factor plus texture connection for aiStandardSurface using file and place2dTexture
aiStandardSurface factor-plus-texture sheen setup with file, colorComposite, and multiplyDivide.

Sheen factor plus texture connection for openPBRSurface using file and place2dTexture
openPBRSurface factor-plus-texture sheen setup with file, colorComposite, and multiplyDivide.


Sheen roughness

Factor only

standardSurface, aiStandardSurface: Set sheenRoughness directly.
openPBRSurface: Set fuzzRoughness directly.

Roughness is only written when the sheen weight gate is also active. Exports as sheenRoughnessFactor.

Packed texture (same image as sheen color)

Use a single RGBA image for both color and roughness:

standardSurface · aiStandardSurface:
  aiImage.outColor  →  shader.sheenColor
  aiImage.outAlpha  →  shader.sheenRoughness

openPBRSurface:
  aiImage.outColor  →  shader.fuzzColor
  aiImage.outAlpha  →  shader.fuzzRoughness

The exporter detects that both attributes share the same file and exports the RGBA image directly as the combined sheen texture. One texture node feeding both paths is supported, and multiple texture nodes pointing to the same file path are also supported.

For packed RGBA sheen, the source-channel rule is strict even when the multiplyDivide lane is flexible:

  • Sheen color must come from the source texture's RGB channels.
  • Sheen roughness must come from the source texture's alpha channel.
  • One shared multiplyDivide node or separate multiplyDivide nodes are both supported for roughness.
  • The multiplyDivide lane can be X, Y, or Z; the exporter follows the real upstream source plug, not a fixed lane name.

Exports as sheenColorTexture and sheenRoughnessTexture pointing to the same image.

Separate textures (auto-combined)

Connect different images for color and roughness. The exporter repacks them into a single RGBA image: color in RGB, roughness in A.

standardSurface · aiStandardSurface:
  textureA.outColor  →  shader.sheenColor
  textureB.outColorR →  shader.sheenRoughness

openPBRSurface:
  textureA.outColor  →  shader.fuzzColor
  textureB.outColorR →  shader.fuzzRoughness

For a true grayscale sheen roughness source image, outColor, outColorR, outColorG, or outColorB all export equivalently because all RGB channels carry the same value. If a roughness factor is used, the grayscale signal can pass through any one matching multiplyDivide lane: X, Y, or Z.

When both separate maps are present, the exporter generates a packed RGBA sheen texture. Both source images must share the same dimensions.

Single-texture outcomes stay as direct exports:

  • sheenColorTexture only: exports the original RGB image directly as sheenColorTexture.
  • sheenRoughnessTexture only: exports the original grayscale image directly as sheenRoughnessTexture.
  • sheenColorTexture + sheenRoughnessTexture: generates a packed RGBA texture with RGB = sheen color and A = sheen roughness.

Factor + texture

Use colorComposite for sheen color tint tracing and multiplyDivide for sheen roughness factor tracing.

  • colorComposite is the supported tint path for sheenColorFactor / fuzzColor tinting.
  • multiplyDivide is the supported factor path for sheenRoughnessFactor / fuzzRoughness scaling.
  • For separate grayscale roughness maps, the multiplyDivide lane can be X, Y, or Z.
  • For packed RGBA sheen, the roughness factor lane is still flexible, but the source texture channel must remain alpha.

UV transform

file nodes: set repeat, wrap, mirror, offset, and rotation on the connected place2dTexture.
aiImage nodes: wrap, scale, and offset export natively; rotation requires a place2dTexture.

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

When color and roughness use a combined texture, the UV transform is read from the color texture node.


Notes

  • Sheen color texture is sRGB; sheen roughness is Raw. The combined RGBA image handles both.
  • Sheen color uses RGB data; sheen roughness uses alpha or a separate grayscale source.
  • colorComposite is used for sheen color tint tracing; multiplyDivide is used for sheen roughness factor tracing.
  • Shared multiplyDivide vs separate multiplyDivide does not matter for sheen roughness export.
  • Shared texture node vs multiple texture nodes pointing to the same file path does not matter when the packed RGBA source-channel rules are satisfied.
  • Matching image size matters only when the exporter has to generate a packed RGBA sheen texture from separate source images.
  • Sheen is not exported unless the weight gate (sheen for standardSurface/aiStandardSurface, fuzzWeight for openPBR) is greater than 0.0.
  • StingrayPBS does not export KHR_materials_sheen.