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!
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.01meters (i.e. centimeters) →
metersPerUnit = 0.01
- The scene’s up axis is
upAxis = Y
- Two layers contribute to the scene (more about this later in Local/Sublayer) →
subLayers = [...]
- Animation is present between time code
24.0frames 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.
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
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
- Is an
typeName = Xform
- It is instanced (more about Instancing later) →
instanceable = true
- Has two VariantSets (more about VariantSets later) →
- Is categorized as a
component(more about the Kind metadatum later) →
kind = component
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