Skip to content

USD Optimize v1.0.2

Choose a tag to compare

@martinpwnv martinpwnv released this 27 May 06:39

USD Optimize

USD Optimize is a standalone C++ library with Python bindings for processing and optimizing OpenUSD (Universal Scene Description) stages. It's published by NVIDIA as part of the Omniverse ecosystem, but is designed to be embedded in your own applications and pipelines.

Functionality

It ships 45+ optimization operations that transform a USD stage in place, grouped into four categories:

  • Geometry mesh cleanup, deduplication, decimation, shrinkwrapping, instancing, etc.
  • Materials material consolidation, binding cleanup, texture operations.
  • Stage / Hierarchy flattening, prim merging, scope reorganization.
  • Utilities / Analysis read-only passes that report issues without mutating the stage.

Most operations have an analysis mode that reports findings (counts, problem prims, statistics) without writing changes. This powers the asset-validator integration.

Structure

  • Plugin architecture. Each operation is its own C++ shared library under source/operations/, subclassing omni::scene::optimizer::Operation and self-registering with SO_PLUGIN_INIT. The core auto-discovers plugins at build time, so adding an operation doesn't require touching the core.
  • Public C++ API in include/omni/sceneoptimizer/ISceneOptimizer.h for native integration.
  • Python bindings (pybind11) for scripting, JSON-driven batch runs, and pipeline use.
  • Asset Validator integration. A set of Performance-category rules wraps the analysis-mode operations, so problems can surface through omniverse-asset-validator and its CLI.

Usage

  • From source - ./repo.sh build (Linux) or repo.bat build (Windows). Tests via ./repo.sh test.
  • As a prebuilt package - headers, libraries, Python bindings, and a USD Python runtime, for Windows x86_64 and Linux x86_64/aarch64. Install guides live under docs/.

Agent / contributor tooling

The repo is instrumented for AI coding agents:

  • AGENTS.md / CLAUDE.md (symlinks to the same file) are the entry point for any agent.
  • .agents/skills/ holds reusable task playbooks (run validators, interpret results, run operations, tune parameters, testing, etc.).
  • .agents/operations/ has per-operation tuning guides plus INDEX.md, INVOCATION.md, and PIPELINES.md (curated multi-op chains for memory / load-time / mesh-count / data-quality bottlenecks).

The project is not currently accepting external contributions but issues are welcome.