Retiming Layers or Stage

Is there a way to retime a USD layer or stage similar to how you would with editing software?

Sdf.LayerOffset is almost what I’m looking for, but the problem with this is it only takes constant values for offset and scale. I can’t have a frame mapping like frame 50 retimes to frame 100, frame 51 retimes to frame 102, etc. etc.

Then there’s ValueClips, but their intended purpose seems more for splitting up different caches in the scene into multiple files rather than just global time remapping.

I can’t tell if this feature is missing or I’m doing it wrong.

In our pipeline, we primarily use Value Clips for splitting up data into multiple files, but using a single layer as a single Clip so that you can dynamically retime it is a perfectly valid use of Value Clips - we really don’t want to dictate policy for core features. So, with the understanding that DCC support for working with Value Clips may be limited, and that there is some performance cost to using them, they are, nevertheless, the only USD feature currently available to you to allow that kind of retiming.

Thanks for the reply. After some testing, Value Clips seems to work in cases where all data is contained within the clip layer, but if that layer sublayers or references layers, it no longer seems to work. I was trying to retime an entire shot usd, but the value clips didn’t work because the shot usd sublayers in department layers, and those department layers reference cache layers.

How do you retime a shot working around this limitation? Do you have to store a linear and retimed usd file for each cache layer using value clips and create two separate sets of department and shot layers for linear and retimed?

Sorry, I can’t think of a really workable mechanism in USD to accomplish what you’re looking to do, given your data organization. If all of your animating data were stored directly in the department layers in the “root layerStack”, then you could “simply” add a number of “Clip Sets” on each shot’s root prim, one for each department layer, in the strongest layer of the layerStack. These clipsets could then be retimed (you’d still need to retime each one, but at least they are all on the same prim) to retime the whole shot.

Pixar (generally, though some departments have explored publishing animated assets) puts all of our timeSamples into shot sublayers, so this could work for us. But I think most studios do as you describe, caching by model and bringing animation into a shot by reference/payload. And with this organization you’d have alot more work to do and find clipsets all over the scene graph to adjust.