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.
It is the standalone successor to omniverse-asset-validator and is intended for use in any USD pipeline.
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]
Repository Layout and Releases#
This repository is the single source repository for the shared NSPECT release and publishes
two Python packages from the same commit, both versioned from the shared VERSION.md:
usd-validation-nvidia— the validation engine (source undervalidation/src/, with package docs, examples, and tests undervalidation/)usd-profiles-nvidia— profile/spec definitions and code generation tooling (profiles/directory, auvworkspace member; formerly a standalone repository)
uv build --all-packages produces wheels and sdists for both packages.
Build from Source#
Generate the capabilities package with the in-repo profiles/ member (usd-profiles-nvidia), then build the wheel:
uv run \
--no-project \
--with ./profiles \
python -m usd_profiles_nvidia.codegen \
--docs-root specs \
--destination-dir validation/src \
--package-name usd_validation_nvidia.capabilities \
--reverse-domain com.nvidia.usd
uv build --all-packages -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.13 with OpenUSD 23.11 or later
Python 3.14 with OpenUSD 26.08
License#
Apache-2.0 AND CC-BY-4.0