There is an updated version of the LOD proposal available here:
https://github.com/PixarAnimationStudios/OpenUSD-proposals/pull/81
This version of the proposal was guided by an implementation which worked out many of the kinks in the previous version.
There are new schemas names:
- LODRootAPI defines the root of a set of LOD choices. The choices are the direct children of the LODRootAPI prim. This guarantees that the root and the items are in the same hierarchy.
- LOD items are now implicitly the children of the root prim and there is no longer any explicit schema for them.
- LOD heuristics are concrete, typed schemas that can be used by renderers to choose among the children.
- LODOverrideAPI defines an inherited override which makes it easy to pin to specific LOD or to work with or test an LOD that the renderer might otherwise not display.
The definition of “renderer” as used in the proposal has been clarified. For the purposes of the LOD proposal, a renderer is any code that traverses the USD scene graph and wishes to support LOD choices. So Hydra is a renderer, a spatial sound system would be a renderer, as would an exporter to RenderMan or to a physics simulator. All LOD decisions and support are up to the renderer.
There is a section on authoring assets to support legacy renderers that are not aware of or do not support LOD. It is recommended that the default LOD item be visible/audible/simulated/etc. and that the non-default items be invisible/inaudible/unsimulated/etc. So renderers that ignore LOD will still present something reasonable.
Assuming there are no red flags, the implemented code will soon be committed to the OpenUSD dev branch.