OpenUSD Fundamentals and Core Concepts
This domain tests the mental model behind every other domain: USD is a composed scene description, not a scene file. You must move fluently between the persistent layer and the composed stage.
Core rules
- A stage is a composed, in-memory view. A layer (
SdfLayer) is one persistent document. Many layers feed one stage. - Prims form a namespace tree addressed by absolute
SdfPaths (/World/Chair). Prim types come from schemas (Xform,Mesh,Scope,Material). - Properties are attributes (typed, optionally time-varying) and relationships (target paths, no value). Property paths use a dot:
/World/Cube.size. - Path syntax:
.is this prim,..is the parent,/is the root,:selects a variant. - Metadata lives on prims, properties, and layers:
kind,doc,customData,assetInfo,apiSchemas,defaultPrim,upAxis,metersPerUnit. - Variability is
varying(default, time-samplable),uniform, orconfig(cannot animate, e.g. topology). - Value resolution:
Get()is the strongest resolved value,GetAuthored()is the value in the current edit target,GetResolvedValue(time)evaluates time samples.
Worked example
/World/Cube.size is 2 in sublayer.usda and 4 in root.usda, which lists sublayer.usda in subLayers. The stage reports 4, because the root layer is stronger. Insert a new layer above root.usda in the sublayer list and author 2 there; the stage now reports 2 without touching either original file.
Traps
Treating a layer as a stage and flattening too early; confusing GetAuthored with the resolved value; assuming over defines a prim; omitting defaultPrim so references resolve to nothing; and forgetting that metersPerUnit and upAxis are layer metadata resolved together at the stage root.