Hello,
we have to control how the animation of a referenced prim (imported from glb) is running. To archive this, we are creating tracks and asset clips for the sequencer through our omniverse connector. This works fine… until we change the referenced prim.
When doing so it looks like the clips are added “on top” of the already existing clips. In the following example the referenced prim has animations running from 0 to 81. We have to map the animation so, that in the time code rage 0-100 the first 70% of the animation is played. Every time we change the referenced prim the 70% is applied to current state (after the first change we only get 70% of 70%, after the 70% of 70% of 70% and so on…
We have already tried to remove the sequencer track and to recreate them, but that does not change anything.
@mati-nvidia Can you please have a look at this too? There is an older ticket related to problems with time codes in synced session… perhaps this has something to do with that.
Thanks
Carl
I am not sure what your video is trying to show. It looks like it just keeps reloading.
I think you are saying that you are setting up sequencer for one asset and then trying to dynamically swap that referenced asset for another referenced asset, and want the same sequencer to control the new asset ?
I am not sure if that is possible. I will have to try to find out.
One idea is to not swap the referenced prim here, but actually swap the referenced prim one stack down, meaning that you reference “object.usd” here in this stage, but then in a seperate composer session, or through code, you re-reference a new prim in “object.usd” from “couch1.usd” to “couch2.usd”. Does that make sense ? So that way it still does the same over all thing, but it does not break sequencer.
That way you are putting a seperation between sequencer and needing to change the prim. Sequencer does not care as long as it is loading “object.usd”. Meanwhile object.usd is free to re-attach to other objects.
Hi Richard,
in the video I change to configuration from fabric to lether back and forth. The back cushion is then changed (there is one for fabric and one for lether). The back cushion is another usd that is referenced (and that reference is the animation target of the sequencer track).
The sequencer track maps the animation of that cushion so that 70% of the animation is mapped to time code 0-100. Every time I change the cushion you can see that the animation is less and less played.
On the connector side I’ve tried to remove the sequencer track prims before changing the reference and the create new ones, but that did not help. Even giving the tracks random names to make sure that those tracks are recognized as new one did not change anything.
I think removing the sequencer tracks, then sync and then update the reference would work, but I don’t want to introduce an additional sync (because the user would see some incorrect result between those syncs and syncing is not thread safe, so syncing a session blocks all other sessions, why I would like to sync everything at the end.
btw. closing and reopening the session results in a correct state… so this is definitely a runtime problem, The underlying USD is always correct.
Perhaps it would work if I would use the root prim of the referenced prim as the animation target instead of the reference prim itself… but that would only solve the problem for reference prims not for all others.
From my POV, it looks like the sequencer implies the sequences when the referenced prim is changed and then applies the sequence again. That is reason why it works the first time and then the animation is less and less played.
Carl
Can you send me the usd file so we can take a look ?