Animation - Rate optimization and Motion Matching

Hi

On our game, we work with metahuman and mutuable to create npcs. Currently the meshs are not optimised and the animations takes a lot of time to process. We wanted to use an easy fix to improve the performance of the game in developpement (later this option is still usefull for small config).

When “Enable Update Rate Optimization” is checked, the performances is improved by a lot (as animations are prossessed less often), but we have 2 problems.

  • The head on ragdoll characters does not follows the body.

As a metahuman characters the character is subdivised to 2 mesh, the head and the body.

On the head ABP, we have a copypose, to copy the animation from the body to the head.

When the character start his radgoll, and the option “Enable Update Rate Optimization” is enabled (with frames skipped), the head does not follow the ragdoll body and stay at the last animated frame position.

  • The animation movement have jumps on direction change

As explained on the steps to reproduce, a character with “Enable Update Rate Optimization” have some animations jump when he move and change direction.

We use the node “Offset root bone” on the ABP to smooth the visual orientation of the character. But it look like this node does not work properly when some animations frames are skipped.

Is there a way to improve animations performances without theses issues, or some options to allows us to mitigate theses problems ?

Beside the issues, this options allows the game to run a lot smoother, and It would be a shame not to be able to use it.

Thank you for your answer.

[Attachment Removed]

Steps to Reproduce

  • Create a character with motion matching, and his ABP
  • On the ABP, you must have a node “Offset root bone”, i think the bug is linked to this node
  • Check the “Enable Update Rate Optimization” checkbox on the skeletal mesh of the character
  • Be sure to have a non player controlled character (the previous option have no effect on a player character)
  • Make the npc move on a non straight path
  • Notice that the animation jump everytimes the character change direction

Notes :

  • This problem only happen when animations frames are skipped
  • You can force frame skip on npc with the command “a.URO.ForceAnimRate X”
  • The same problem happen with the plugin “Animation Budget Allocator” and the skeletal mesh budgeted
    [Attachment Removed]

Hi, unfortunately, there’s a fundamental limitation with the Offset Root Bone node - it needs to run every frame to produce the expected behaviour. If the counter rotations that the node generates aren’t applied every frame, you’ll see discontinuities. This was discussed on a previous thread [Content removed]

There are only really two options here. One is to apply Offset Root Bone only when an actor has its animation evaluated every frame. So, actors dropping to intermittent evaluations would disable the node. But that’ll be a change in the character’s behaviour, so whether it’s feasible will depend on your setup. The other option is to remove the node and instead write custom logic at the actor level that effectively does the same work, and directly manipulates the mesh’s root bone to generate a counter-rotation to the capsule. Since that would run at the actor level, it would still run on frames when the anim graph isn’t being evaluated.

Happy to discuss this further if you have more questions. I’ll also see if we can update GASP to add a note within the anim blueprint to call out this issue, so that at least people are aware of it.

[Attachment Removed]