Validation, Debugging, and Troubleshooting
This domain asks you to find why a scene looks wrong and to ship assets that pass automated checks.
Validation
usdcheckerruns the core compliance suite plus optional rule sets (--arkitfor USDZ). It separates errors from warnings;UsdUtils.ComplianceCheckerexposes the same checks in Python.- The core validation framework registers rules per plugin through
UsdValidationRegistryand runs them fromusdValidation, namespaced by keyword such as geometry, shade, or material. - Frequent failures: missing
defaultPrim, illegal prim names (spaces, leading digits), missingkindon component assets, and unbound or unstaged materials.
Debugging composition
- Begin with
prim.GetPrimStack()and theusdviewComposition tab: every opinion plus the layer that authored it. layer.GetCompositionErrors()andPcpErrorvalues explain broken references, missing default prims, and cyclic arcs.TF_DEBUG=USD_COMPOSITIONtraces how arcs resolve when a stage opens.- Reload rather than rebuild:
layer.Reload()orstage.Reload()after a generator rewrites files on disk. - If composition is right but the viewport is stale, the fault is renderer invalidation, not the data.
Worked example
You author size = 5 on a referenced asset and still see 2. GetPrimStack() shows your opinion landed in a sublayer of the asset's layer stack, while the asset authors size in its own root layer, which outranks its sublayers. Fix: author the override on the referencing prim in your own layer, where it composes at Local strength.
Traps
Trusting the viewport over the prim stack; re-exporting instead of reloading a changed layer; and reading a warning-level checker result as a hard failure without checking the rule set.