Prototypes is not located in the children_Path of PointInstancer, binding a material to PointInstancer cannot override primvars:displayColor;

The first situation:

/world/prototypes/public_prim_A

/world/some/pointinstancer

/world/mat/metal_red

color3f /world/some/pointinstancer.primvars:displayColor=[(1,0,0),(0,0,1)]

rel /world/some/pointinstancer.prototypes =</world/prototypes/public_prim_A>

/world/some/pointinstancer.material:binding = /world/mat/metal_red

----result1----- material Invalid, unable to overwrite displayColor

The second situation:

/world/some/pointinstancer/public_prim_A

/world/some/pointinstancer

/world/mat/metal_red

color3f /world/some/pointinstancer.primvars:displayColor=[(1,0,0),(0,0,1)]

rel /world/some/pointinstancer.prototypes =</world/prototypes/public_prim_A>

/world/some/pointinstancer.material:binding = /world/mat/metal_red

----result2----- material active; displayColor and image texture screen mix

What is the reason for this, the reason for passing the primvars attribute?


Reclassifying as a Hydra issue, but I’ll note that our workflow and efforts are more focussed on the PointInstancer structure in which prototypes live underneath the PointInstancer prim (using native instancing for the prototypes, so that prototypes need not be duplicated for multiple PointInstancers that use them).

When prototypes live elsewhere in the scenegraph, there can be ambiguous or surprising behaviors related to inheritable properties, like primvars.