Relative Strength of Direct and Collection-Based Bindings

I’m trying to figure out if I’m misunderstanding something in the docs, or if maybe they need to be updated. From my experience using direct and collection-based bindings, it has seemed to me that direct bindings are stronger.

However, in the Bound Material Resolution description, #4 states:

At any given prim, the collection-based bindings are considered to be stronger than the direct bindings. This reflects our belief that the combination would appear primarily to define a “fallback” material to be used by any child prims that are not targeted by a more specific assignment

The attached scene has direct binding and collection-based bindings targeting /World/ShaderBall/sphere1; the collection lives on /World/ShaderBall. USD and Hydra both show /World/Materials/MaterialBlue as the resolved material, but based on the docs, shouldn’t MaterialGreen be stronger, as it’s collection-based? If I author the collection on sphere, then I do see MaterialGreen “win”; but that seems a bit impractical, as the collection is likely to target many prims, so it probably lives on the model root, or some other common ancestor?

Am I missing something, or is that maybe an out-of-date description?

Thanks!

ResolveMaterialsTest.usda (4.2 KB)

Based on some internal discussions, we’re pretty sure this is a bug with Hydra; but if anyone has any sanity-checks/confirmations on that, we’d appreciate it. Thanks!

I think we need to make the referenced documentation more clear. THe behavior is as I would expect, because the “At any given prim” is meant to mean “if both a collection and direct binding are authored on the same prim”. A binding of either flavor on a more ancestral prim will always be weaker than a more “local” one, unless the materialBindingStrength is set to strongerThanDescendants . Does that make sense, @chris.rydalch ?