
So what's the concences on doing animations that would normally be done in /obj level?
Think assembly type animations with a lot of moving parts, tweaking animation curves and keyfranes to get a nice flow.
Workflows so far:
A) Simpy using a scene import node. Works but this quickly bogs down since it will re-import everything each frame and triggering recooks downstream. Scrubbing the time line feels like it's 1999 again.
B) Importing a static scene and using transform nodes after that, preferably somewhere near the end of the USD network to minimize downstream updates. It's faster but a bit cumbersome and not all the animation features work (pressing 'K' does not set keys for example) It's also not as performant as the /obj context so it can be hard to judge animation flow properly.
C) Import static scene, do the animation in /obj and use a bit of python to reference those transform values into USD transform nodes that are automatically added into the stage for all /obj level nodes that have a keyframed transform. This allows for animating in the fast and comfortable /obj context yet having a relatively fast USD stage. Downside is that it requires some automated housekeeping and gets messy with complex hierarchies and such.
D) Caching things out. Fast playback but it quickly becomes a drag when doing lots of iterations etc.
E) Don't go into USD until all animation is completed. Sound like a plan but also when doing lookdev/lighting it's annoying when scrubbing is a bit slow.
Are there any other/better ways of getting max performance from USD in relatively simple scenes?