I keep making this mistake when setting up my layers, but I’m having trouble figuring out how to do it the right way.
Basically(I’m going to try to simplify the hierarchy just to get to the essence of my mistake/problem), I have a layer generated by a 3rd party crowd tool. Sorry this isn’t the USD xml, but I’m hoping it’s enough to get the concept across:
Let’s call this the “crowd” layer. (This is actually done in a loading procedural/plugin, but the is effectively the USD produced)
root
\___member1
\___asset_a (includes attribute points with animation in position)
\___member2
\___asset_a (includes attribute points for meshes in another position)
And my top layer is basically a “crowd_wrapper” layer:
root - payload "crowd" layer
(that payloading is non-negotiable - that is basically how the 3rd party tool delivers it.)
And bottom layer is essentially a rough layout::
root
\___member1
\___asset_a (reference includes materials and geometry with attribute points in neutral)
\___member2
\___asset_a (reference includes materials and geometry with attribute points in neutral)
So my intent here was that I author the bottom layer to be all the assets in the hierarchy in their neutral positions, and this would include the materials.
Then I use the top layer to override the points attribute for the positions of the asset_a members.
So then sublayer top over bottom and I think I’m done!
Wellll… not quite. Those more experienced people probably saw my mistake immediately.
My mistake is I keep thinking in terms of resolving the individual top and bottom layers, then sublayering top over bottom.
And it’s really more the reverse that happens. The L first get resolved, then I’ve got the crowd payload up on the root, and the individual neutral asset references deeper down on the asset_a. So when they’re resolved, the deeper reference is winning, and my crowd scene has everyone in their neutral position. Yeah, I keep thinking I know LIVERPS, but I keep making this mistake.
So I’m trying to figure out what is the right way to do what I’m trying to do? I’m hoping there’s some combination of nesting references and sublayers that will get the resolution order I’m trying to get, but I’m not optimistic.
I’m constrained with the “crowd” and “crowd_wrapper” layers, as those are basically provided from the 3rd party tool.
The only think I can think of now is something like this, that doesn’t use sublayer, but basically makes it all a reference arc:
root
\___member1
\___asset_a (
- reference /root/memeber1/asset_a prim of crowd_wrapper layer
- reference includes materials and geometry with attribute points in neutral)
\___member2
\___asset_a (
- reference /root/member2/asset_a prim of "crowd_wrapper" layer
- reference includes materials and geometry with attribute points in neutral)
I don’t know why, but I don’t like it. Like I worry that for each individual member reference, the crowd procedural might re-evaluate the entire crowd. But is that what I need to do?
Is there any way to force the resolution of the top and bottom(or at least the bottom) layers before the sublayer resolution?