Action Graph movement of Robot Arms after rendering of Video is incorrect

Operating System:
Windows
Linux
Kit Version:
107 (Kit App Template)
106 (Kit App Template)
105 (Launcher)
Kit Template:
USD Composer
USD Explorer
USD Viewer
Custom
GPU Hardware:
A series (Blackwell)
A series (ADA)
A series
50 series
40 series
30 series
GPU Driver:
Latest
Recommended (573.xx)
Other
**Work Flow: **
I am currently building a scene in USD Composer with two robot arms to move some objects but its just for visualisation. For the arms i added joints to each joint, which i am controlling with an action graph. That works perfectly so far. For the timing for the different moves i used delay blocks. So pose 1, pause 5s, pose 2 etc. After i want to export a video rendering from that scene, the movements dont line up with the delay times anymore (its a lot quicker). What is the correct way to make 5s in a rendering the same as 5s in the normal simulation? i could just increase the time but thats not an elegant solution.
Thank you for your help.

@milan.heise just out of curiosity, do the simulation and the rendering FPS match? for example, could it be that the simulation was configured at 60 frames per second where the exported animation sequence was at 30 FPS? because that might result in the final animation be twice as fast in the final output.

There are two ways to solve this.

  1. Make sure you are rendering at the same FPS as USD Composer’s stage and then also make sure your are playing back those frames at the same FPS, in your final animation.
  2. Do not build in any delays. Just render the complete movement and add the delays in POST, like After Effects or Premiere. WAY WAY easier.

An old animation rule. Don’t render dead frames. With method one you are literally killing time rendering a robot not moving for 5 seconds. At 60FPS that is 300 frames of total waste !! Better do let it just run through a complete movement and add a 5 second delay in post.

So if you need a 10000 frame animation total at finish, but 3000 frames of that presentation, the scene has no movement, just render the 7000 frames it IS moving, and add the 3000 frames of dead space in post.

Plus then you can just actually have fun an animate the scene normally without needing to mess around with actiongraph. If you wanted this real delay in a live realtime presentation, inside of Omniverse then of course this method makes sense. But once it is just for “rendering out”, cheat.

thank you for your replies. I just verified the framerates and they match.

Regarding the dead frames: The five seconds “delay” is in order to give the arms time to move to the correct position, so there are no dead frames in there. I am sadly still quite stuck on that. What approach would you take in order to move or animate a robot arm? Is action graph even the right tool in combination with joints or should i go into that differently?

Kind regards

I would not use Actiongraph, no. I would just hand animate it with keyframes. Just make a first keyframe, hit the AUTO button, and start moving your arms as you need, at the time you need. Simple.
image

The final result is supposed to be a subassembly of a big factory floor. My concirn is that it will be a lot of keyframes and single movements, if i go that route. Thats why i wanted to make it role based.

Coming back to the original idea: I think the problem is, that the actiongraph is counting its seconds in real time, while the renderings is rendering one frame every fiew seconds. Is there maybe some action graph time block, that “ticks” every rendered frame or another way to synchronize the rendering and the actiongraph?

I would not worry about keyframes as such. We regularly make massive scenes with hundreds of keyframed moving parts. Not a big deal. Especially if you instance it.

But yes, there literally is a node called “On Tick” just for that.

perfect, thank you for your help, really appreciate it!

You are very welcome !