Access keyframes of imported USD

Hello, I was following this tutorial to import animation using the 3ds Max connector.

I successfully apply the animation layer and my imported object now has animation. I can see it move when I scrub the timeline, and I can see the keyed tracks next to the transforms in the property panel. However, I am wondering if there is any way to now adjust this animation inside USD Composer? I realize I could just go back and forth updating the _animationclip.usd file, but in my particular case, it seems like it would be easier to just tweak the curves in USD Composer. Is there a way to do this? thanks!

@8080ff depending what aspect(s) of the animation you want to change, you would want to open up the “Curve Editor” (which behaves pretty much like in any animation curve editor), “Sequencer” (like in UE), and/or “Timeline” (which you are already have some experience with). all of these can be found within the Window > Animation menu.

Feel free to elaborate more what you are looking to achieve 🙂 if you’d like to know what might work best.

@Simplychenable thanks for the response. Unfortunately when I open the curve editor and select the animated object, no keys or even keyed tracks are shown. It’s just the “select Any Animated Prims” image over on the left

ah, i may have misunderstood your original question. so you are looking to retrieve the animation curve from the prop animation clip so you can edit the curves in Composer, is that correct?

yes! Sorry I probably could’ve been a little clearer on my explanation.
I’m hoping that information exists as curves rather than baked keyframes, but even being able to see and manipulate the baked keys in the editor would be somewhat beneficial

if what i mentioned above is what you are looking to do, one of the ways that you can approach this is through the “USD TimeSample to Curves” tool. essentially, it’ll allow us to replicate timesampled keyframes (indicated by the red squares next to transforms, see image below) that were from the animation clip as a Push Graph, where it’ll give us the ability to manipulate them as actual keyframes in OV.


here were my steps:

  1. open up the prop animation clip (the .anim.usd file that was exported from Max) by either double clicking from the Content browser or right click > Open
  2. go into the Stage tab
  3. select the xform (which shouldn’t have any prim attached to this, because this file only contains the animation data)
  4. go to Tools > Animation > Convert > USD TimeSample to Curves tool


  1. you will be prompted by a dialog with some settings. what you will need to do is ensure the Target Prim(s) param is set to the xform (that’s why we picked it first in step 3, otherwise it’d be empty). you can adjust the setting or leave them as default depending on the accuracy and control you’d want to have. here is the doc for the tool, feel free to take a look what each of the param does.


  1. hit convert
  2. next thing you should see is a new PushGraph that got added into the Stage
  3. open up the Curve Editor (Window > Animation > Curve Editor)
  4. select the OmniGraphNode that’s within the PushGraph from step 7
  5. you should see a graph now being populated within the Curve Editor with “Tracks” that are similar in 3DS Max on the left. with curve control in the main window
  6. depending on how much parsing you entered in the USD TimeSample to Curves tool, you may end up with keyframe on every frame (the most accurate representation) or a approximated curve (basically a “simplified curve” like the “reduce keys” function in Max)
  7. at this point you can start adjusting the bezier handles and/or add or remove keyframes to your liking.
  8. once you are done tweaking the animation clip, you can go back to your main scene with layers and it should update the actual geo associated with the animation.

here is my thoughts regarding this workflow - if you are more comfortable and likes the precision within Max, feel free to stick with it. because we are having to take an extra step translating the keyframes into curves that OV can read with actual keyframes, there could be interpolation issue through the conversion. another consideration is the amount of objects that were animated. you might not find yourself wanting to do the conversion and tweak the curves for each one of the animated elements. but i digress, i’d still recommend giving it a try and let you be your own judge. it would most likely come down to your specific situation and finding the solution that works best for you.

also, not sure if there’s a better way to go about this; so i’ll let the devs offer additional suggestions!

awesome, this is what I was looking for, thanks! You’re right, in my instance I’m either losing data or nearly crashing Composer with all the keys that are generated. this will be very helpful with some simpler setups though. thanks for your help!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.