We’ve encountered a use-case in which an artist needs to view the render-purpose representation of a specific asset, but we want to be able to keep the performance benefits of having the rest of the loaded Set in its proxy-purpose representation.
(e.g. an animator’s character leans against an object, and needs to watch for intersections).
The current frontrunner solution for us is having a deactivated version of the render geometry under the proxy hierarchy which can be toggled on/off as needed (as opposed to adding another variant for proxy geometry selection, for computational reasons, as recommended here).
In my head, the most elegant solution would be to specify that a particular component should display its render-purpose prims, but as far as I know, display purpose handling is all at a stage level.
There is, in fact, an existing applied schema for expressing just that, except adding the Hydra plumbing for it has just not yet risen to the top of the work list. We actually have been working around this for years with our vegetation models using a variantSet…
I had a chat with one of the other TDs here at Flying Bark who was over at Animal Logic previously, and he said they also use variantSets over there to switch between showing renderable/preview geo in the viewport (as showcased in the ALab assets). They also brought up the fact that any performance impact of adding a variantSet can be justified, as variantSets provide the ability to never load the proxy geo in the first place if a renderable viewport variant is selected from stage-load.
I didn’t know about UsdGeomVisibilityAPI, thanks for sending that through!
For now though, it does seem like variantSets are a justifiable solution that we’ll continue ahead with.