Suppose you had the following layer:
#usda 1.0
(
defaultPrim = "ParentXform"
)
def Xform "ParentXform"
{
def Mesh "ChildMesh"
{
}
}
If you wanted to add a property to "ParentXform" such that it would automatically propagate to "ChildMesh" without having to add the same property to "ChildMesh", which of the following changes to "ParentXform" would make this work?
The correct mechanism is a constant-interpolation primvar. NVIDIA's Learn OpenUSD glossary defines primvars as primitive variables authored using the primvars: namespace and interpolation metadata such as constant, uniform, vertex, and faceVarying. Primvars are designed to carry geometric or shading-related data in a way that consumers can discover through UsdGeomPrimvarsAPI and UsdGeomPrimvar. (docs.nvidia.com)
Option C is correct because constant primvars can inherit down the namespace hierarchy. The OpenUSD UsdGeomPrimvar documentation states that constant interpolation primvar values can be inherited by child prims unless those children author their own opinion for the same primvar. (openusd.org) This allows primvars:myProperty authored on /ParentXform to be discovered on /ParentXform/ChildMesh without duplicating the property on the mesh.
Option A is incorrect because ordinary custom attributes do not automatically propagate to descendant prims. Option B is incorrect because a relationship targets another object; it does not create inherited property data on that target. This aligns with Data Modeling Primvars, Constant Interpolation, Namespace Inheritance, and Geometric Property Authoring.
Currently there are no comments in this discussion, be the first to comment!