Volume
glTF extension: KHR_materials_volume
glTF properties: thicknessFactor · thicknessTexture · attenuationDistance · attenuationColor
Volume describes how light is absorbed and colored as it travels through the interior of a solid object. It works together with KHR_materials_transmission — transmission controls how much light enters the surface; volume controls what happens to that light inside. Requires KHR_materials_volume to be enabled in the export options.
| Shader | Thickness attribute | Attenuation distance | Attenuation color | Notes |
|---|---|---|---|---|
standardSurface, aiStandardSurface |
thickness |
transmissionDepth |
transmissionColor |
|
openPBRSurface |
thickness |
transmissionDepth |
transmissionColor |
|
StingrayPBS |
not supported | not supported | not supported | — |
Thickness
Thickness represents the depth of material a ray travels through. In glTF the thickness value is stored in the green channel of thicknessTexture. A thicknessFactor of 0.0 means the surface is infinitely thin and no volume effect is written.
Factor only
Set thickness directly on the shader. The exporter only writes a volume extension when the value is greater than 0.0.
Exports as thicknessFactor.
Texture only
Color space: Raw
standardSurface · aiStandardSurface · openPBRSurface:
aiImage.outColorG → shader.thickness
file.outColorG → shader.thickness
The exporter converts any source channel into the green channel of a dedicated thickness image. The original factor is exported separately as thicknessFactor.
Exports as thicknessTexture (G channel).
Factor + texture
glTF computes: thicknessFactor × thicknessTexture.G
- Connect the thickness texture into a
multiplyDividenode. - Set the thickness multiplier in
multiplyDivide.input2X. - Connect
multiplyDivide.outputX→shader.thickness.
standardSurface · aiStandardSurface · openPBRSurface:
texture.outColorG → multiplyDivide.input1X → shader.thickness
The multiplier exports as thicknessFactor.
Attenuation distance
Attenuation distance sets how far light travels before it is fully absorbed. Maps from the transmissionDepth attribute. The exporter only writes this value when it is a positive, finite number — 0.0 and inf are both skipped.
standardSurface · aiStandardSurface · openPBRSurface:
set transmissionDepth → exports as attenuationDistance
Note
Attenuation distance is a scalar-only property. There is no texture path for attenuationDistance in glTF.
Attenuation color
Attenuation color tints the light as it is absorbed. Maps from the transmissionColor attribute. The exporter only writes this value when it differs from the default white [1, 1, 1] (white = no absorption).
standardSurface · aiStandardSurface · openPBRSurface:
set transmissionColor → exports as attenuationColor
Note
Attenuation color is a scalar-only property. There is no texture path for attenuationColor in glTF.
Shared attribute with diffuse transmission
transmissionColor is also used by the diffuse transmission workflow. When a diffuse transmission graph is active on the same shader, transmissionColor is reserved for KHR_materials_diffuse_transmission and is not exported as attenuation color. To use volume attenuation color, use a classic transmission setup without an active diffuse transmission graph on the same material.
UV transform (thickness texture)
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
- Volume is only meaningful when
KHR_materials_transmissionis also active on the same material. Combine both extensions for realistic glass or solid translucent objects. - Thickness texture is always written in the green channel by the exporter, regardless of the source channel in Maya.
- A
thicknessof0.0disables volume export entirely. Set it above0.0to activate the extension. attenuationDistanceandattenuationColorare scalar-only properties with no glTF texture slot.StingrayPBSdoes not exportKHR_materials_volume.