Animation Freeze due to PoseControlComponent tick ordering

Hello - thanks a lot for the report and detailed write-up.

PCC really needs three things:

  1. To run before physics, as it needs to set targets on physics constraints etc. It’s “trying” to do that at the moment, but clearly not well enough.
  2. To have access to the pose coming out of the SKM/anim graph
  3. If you’re using world-space controls, then it will need to know the world-space transform of the SKM component.

I’ll investigate to see what we can do to handle the first two better.

However, the third is a big problem, as it will result in your world-space controls driving to the current pose, but calculated using the previous frame’s character location. I can see how this would introduce possibly intermittent frame lag, which could look like a freeze (though I’m not sure how it could explain freezing over multiple frames).

If you want genuinely world-space controls, there’s nothing we can do about that. However, if you want those controls to be parented to the character itself (so they’re “character-space” controls), then it should work to pass in the character’s own capsule component (or whatever you have) to the “WorldComponent” when you create the controls. Alternatively you can change the parents of controls after they’ve been created using the SetControlParent (or SetControlParentsInSet) function. There’s an example of this in ContentExamples - the instance of BP_PhysicsControlDriver on the right hand side of the (long!) corridor in Animation_PhysicsControl does this (in HandleAttachement (sic))

It might be that a combination of this plus a workaround/way of forcing PCC to run after the SKM anim graph, but before physics, will be the way to make it work…

By the way, there was a slightly related issue that came up recently - see here.

[Attachment Removed]