Normal Map
glTF: normalTexture · normalTexture.scale
Normal maps encode per-fragment surface orientation in tangent space (RGB). They are non-color, linear textures. A scale factor can amplify or soften the effect.
| Shader | Attribute | Notes |
|---|---|---|
standardSurface, aiStandardSurface, openPBRSurface |
normalCamera |
Route through aiNormalMap for scale support |
StingrayPBS |
TEX_normal_map + use_normal_map |
Direct texture workflow |
Texture only
Color space: Raw
standardSurface · aiStandardSurface · openPBRSurface:
aiImage.outColor → aiNormalMap → shader.normalCamera
file.outColor → aiNormalMap → shader.normalCamera
StingrayPBS:
file.outColor → shader.TEX_normal_map (enable use_normal_map)
A direct texture → normalCamera connection (without aiNormalMap) is also supported for PBR shaders.
Exports as normalTexture.
Texture + scale
Use aiNormalMap and set aiNormalMap.strength to the value you want. The texture connects the same way as above.
Exports aiNormalMap.strength as normalTexture.scale.
Note
StingrayPBS does not export a normal scale value. Use a PBR shader if you need normalTexture.scale.
Green channel inversion
If any of these attributes are enabled on the aiNormalMap node, the exporter generates an inverted-green normal image so the glTF result matches the Maya viewport:
invertY · flipY · invert_y · invertGreen · invertG
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.
Notes
- Normal maps are RGB tangent-space textures, not scalar grayscale maps. Always use
Rawcolor space. - The recommended path for PBR shaders is
texture → aiNormalMap → normalCamera. StingrayPBS: useTEX_normal_mapanduse_normal_map; set UV transforms on the connectedplace2dTexture.