USD Validation NVIDIA#
An extensible framework to validate OpenUSD assets. Inspired by Pixar’s usdchecker, this library extends validation capabilities with additional rules and provides automatic issue fixing.
Features#
Rule-based validation — Modular rule interface with registration mechanism for custom validators
Flexible engine — Run validation on a
Usd.Stage, individual layers, or recursively search foldersAuto-fixing — Issue fixing interface for applying automated corrections when rules provide suggestions
Command line interface — Standalone CLI for validation outside of GUI applications
Lightweight — Pure Python implementation requiring only OpenUSD
Installation#
Install from PyPI:
pip install usd-validation-nvidia
Optional Dependencies#
For full functionality, install with optional dependencies:
# Include usd-core
pip install usd-validation-nvidia[usd]
# Include NumPy (for optimizations)
pip install usd-validation-nvidia[numpy]
# Install all optional dependencies
pip install usd-validation-nvidia[usd,numpy]
Build from Source#
Generate the capabilities package with usd-profiles-nvidia, then build the wheel:
uv run \
--no-project \
--with usd-profiles-nvidia \
python -m usd_profiles_nvidia.codegen \
--docs-root specs \
--destination-dir src \
--package-name usd_validation_nvidia.capabilities \
--reverse-domain com.nvidia.usd
uv build -o dist
Basic usage#
from usd_validation_nvidia import ValidationEngine, IssueFixer
engine = ValidationEngine()
asset = "path/to/asset.usda"
results = engine.validate(asset)
for issue in results.issues():
print(f"{issue.severity}: {issue.message}")
fixer = IssueFixer(asset)
fix_results = fixer.fix(results.issues())
for result in fix_results:
print(f"{result.status}: {result.issue.message}")
fixer.save()
The ValidationEngine also supports selecting specific rules with enable_rule() / disable_rule().
To filter by category in Python, enable the rules returned by CategoryRuleRegistry().get_rules(category).
Command Line Interface#
The nvidia_usd_validate command provides validation from the terminal:
# Validate a single file
nvidia_usd_validate asset.usda
# Validate a directory recursively
nvidia_usd_validate ./assets/
# Apply automatic fixes
nvidia_usd_validate --fix asset.usda
# Validate specific categories
nvidia_usd_validate --category Material --category Geometry asset.usda
# Enable specific rules only
nvidia_usd_validate --no-init-rules --rule StageMetadataChecker asset.usda
# Export results to CSV
nvidia_usd_validate --csv-output results.csv asset.usda
# Show help
nvidia_usd_validate --help
Documentation#
Requirements#
Python 3.10 - 3.12
OpenUSD 22.11 or later
License#
Apache-2.0