Skip to main content

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.

tip

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 instantiated
    • Concrete 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 type
    • Applied: 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