material-binding#

Code

NVM.004

Validator

Compatibility

Tags

Summary#

Attributes must be on bound materials

Description#

Non-visual material attributes must be authored on materials that are actually bound to geometry prims, not on unbound or unreferenced materials.

Why is it required?#

  • Ensures non-visual attributes are applied where they’re needed

  • Prevents orphaned attributes on unused materials

  • Maintains consistency between visual and non-visual material properties

Examples#

# Invalid: Attributes on unbound material
def Material "UnboundMaterial" {
    token omni:simready:nonvisual:base = "steel"
    token omni:simready:nonvisual:coating = "paint"
    token[] omni:simready:nonvisual:attributes = ["emissive"]
    # This material is not bound to any geometry
}

def Mesh "UnlabeledMesh" {
    # No material binding - will fail validation
}

# Valid: Attributes on bound material
def Material "BoundMaterial" {
    token outputs:surface.connect = </BoundMaterial/Surface.outputs:surface>
    token omni:simready:nonvisual:base = "steel"
    token omni:simready:nonvisual:coating = "paint"
    token[] omni:simready:nonvisual:attributes = ["emissive"]
}

def Mesh "LabeledMesh" {
    rel material:binding = </BoundMaterial>
}

How to comply#

Ensure that non-visual material attributes are only authored on materials that are bound to geometry prims through material binding relationships.

For More Information#