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 folders

  • Auto-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

Indices and tables#