OpenUSD
What is OpenUSD ?
OpenUSD is a framework and universal interchange for describing, simulating, and collaborating across tools. It is designed to interchange and augment 3D scenes composed of many component assets, facilitating the assembly and organization of these assets into virtual sets, scenes, shots, and worlds.
-- AOUSD
Core Features
Composition Engine
The composition engine enables sparse, non-destructive assembly data from numerous sources as individual layers.
Custom Schemas
Custom schemas are fundamental aspect of USD developement and powerful tool for extending data to enable more complex and sophisticated portfolios.
Objects in scenes are represented with Prim
, which serves as a data container where data is represented by properties (including attriubutes and relationships). Properties are often grouped into logical subsets.
To extend data available on a prim, custom schema can be provided that includes a contract dictating how extended data is structured.
It is then up to the runtime to interpret and use the data for functional purpose.
Schema provides a structure of the data but does not dictate the behaviour at runtime. For instance, schema related to rigid body definition can be applied to a prim(data model), but the physics behavour of a rigid body such as collision is up to the physics engine and renderer to implement(runtime behaviour).
There are two types of schema:
IsA
schema is for class inheritance usage, including:Abstract
schema: Base for related sets of concrete schemas, cannot be instantiatedConcrete
schema: Instantiable in scene hierarchy with concrete type name.
API
schema is analogous to class composition, including:Non-applied
: Ad-hoc schema that doesn't contribute to typeApplied
: Can be applied to a prim as a single instance (single-apply) or applied multiple times on the same prim with each apply gets an unique instance name(multiple-apply).
Asset Resolver & Data Storage
Asset resolvers plugins abstract storage backend from data represnted in USD format. In combination with file format plugins, which abstract the serialization of the data, enables complete decouple from file system.
External data can be designated with a reference field in the USD by assigning the path, either local files or remote provider through API.
File format plugins also support dynamic payload. Dynamic payload can be thought as a parameterized access to external source data, allowing dynamic expose to large external data that would be impractical to load within the USD all at once
Hydra
Hydra is a generalized pipeline for custom renderers by providing interfaces to implement the bussiness logic to process data contained in USD as a customizable chain of runtime scene analysis. Its is not tightly coupled to any runtime data layer, allowing Hydra to compile USD into a deeply vectorized data layout, fabric
.
Important Basic Concepts
Stage
Layer
Composition Arcs
Namespace
References
- Universal Scene Description
- What is USD: A Primer | Rob Stauffer | SIGGRAPH 2019
- Learn OpenUSD
- Explainer Series for Developers - AOUSD
- awesome-openusd