Metadata
Prims, their properties and the layers they are part of can have metadata applied to them. This is additional static (as in, it can not change over time) data that USD or a user can read, use or define.
Metadata can be used to describe behavior, incur meaning, represent documentation, etc. USD comes bundled with an extensive suite of metadata out of the box.
Developers can define new metadata via USD Plugins!
Simple Metadata Examples
Layer Metadata
In the image above, the PseudoRoot at path /
has been selected and the metadata panel in usdview
has been highlighted. This root represents the entry.usda
layer from Animal Logic ALab. entry.usda
defines metadata that can be inspected and presents the following information to the user about itself:
- The linear units used are
0.01
meters (i.e. centimeters) →metersPerUnit = 0.01
- The scene’s up axis is
Y
→upAxis = Y
- Two layers contribute to the scene (more about this later in Local/Sublayer) →
subLayers = [...]
- Animation is present between time code
1004.0
and1057.0
with24.0
frames and time codes per second.startTimeCode = 1004.0
endTimeCode = 1057.0
framesPerSecond = 24.0
timeCodesPerSecond = 24.0
Do note that while a lot of metadata is just informational data, a large part of the core metadata suite also has side effects that contribute to how USD works internally.
For example, metersPerUnit
is purely informative, whereas subLayers
has profound effects when edited!
Other USD hosts like Autodesk Maya or Sidefx Houdini may choose to interpret and act on metadata where USD itself does not
Prim Metadata
Metadata on Prims can infer a lot of information about the prim itself, how it is used in the scene (aka Composition), what kind of properties it has, etc.
From the above we know that the prim at /root/alab_set01/lab_electronics01_0001/bench01/decor_paper_notej01_0001
- Is an
Xform
→typeName = Xform
- It is instanced (more about Instancing later) →
instanceable = true
- Has two VariantSets (more about VariantSets later) →
geo
andgeo_vis
- Is categorized as a
component
(more about the Kind metadatum later) →kind = component
- Etc.
Property Metadata
Lastly, there is property metadata. This data is meant to give fine grained information about the property itself. For example
- What type it is →
typename = double3
- Whether it can change over time →
variability = Sdf.VariabilityVarying
- Is it a custom “out-of-schema” (see Schemas later) property →
custom = false