UsdSpecializeSet

Specializes are a composition arc that allows one prim to "specialize" another prim. This means the specializing prim inherits the structure and properties of the prim it specializes, but it doesn't replace or override it. The specializes relationship is a means to establish a "class-like" inheritance mechanism within USD.

Like inheritance, you can create a specialized prim from another prim. However, the overrides on the specialized prim level will always take precedence over any further references. This can be useful to ensure certain aspects are never overridden.

Unlike references, which can replace a prim with content from another USD file, specializes allows one prim to inherit the attributes and children of another without replacing it.

Multiple prims can specialize a single prim, allowing layered inheritance where each specializing prim can further refine or extend the properties of the original.

Specializes are often used to set up a base set of properties or structure that can be shared across multiple prims. Think of it as setting up a "class" in programming, where multiple objects can inherit properties and methods from the class but can also have their unique attributes.

It's a powerful tool in the composition toolkit of USD, allowing for the setup of shared structures and properties that can be extended in a modular and non-destructive manner.

Example: Consider constructing digital models of cars using USD. There's a fundamental "car" prim, which describes generic attributes like having wheels, and seats.

Now, we wish to create specialized versions of this car, such as a convertible and truck. Employing the "specializes" relationship in USD, both the convertible and the truck inherit the foundational attributes from the car prim, ensuring they have wheels, and seats. Yet, they bring in their distinct characteristics like a retractable roof for the convertible and extra space for the truck.

If a modification is made to the basic car prim, such as changing the wheel design, both the convertible and truck automatically incorporate the change while preserving their individual specialties. This approach ensures a consistent base among all car models while allowing each specialized version to express its unique features.

Inputs

Connection Type

Connection Name

Function

input in The incoming scene graph data that the node will operate on or modify.

Controls

Control (UI)

Default Value

Function

primPaths N/A Specify locations where specializes are applied. They are generated at each specified path, following the order in which they are listed.
specializePath N/A The path to a Prim you wish to specialize from.
listPosition prepend

Specifies how the specializes are added to the scene.

Options are:

  • append - adds the new specializes by putting them at the end of the current list, ensuring they are evaluated after existing values,. This allows them to potentially override preceding definitions.

  • prepend - adds the new specializes to the front of the list, causing them to be evaluated before, and potentially overridden by, values added later or in subsequent layers.

  • delete - removes one or more specializes from the list, preventing their properties from influencing the composed prim in the scene.

  • reset to explicit - ignore all previously compiled specializes and set the to only the new value(s), providing a clear and explicit new starting point for specializes evaluation.

For more information, refer to the USD Glossary under List Editing.