Control rigs and attached components frame delay

Hello fellow devs :waving_hand: ,

I came across an issue using control rig on a mesh with an actor attached to it. I tried to reduce the issue to the simplest setup here :

The issue :

  • Character skleton is a basic one (Sk_Manny)
  • An actor is attached to it’s right hand socket (just a mesh)
  • Control rig set bone transform depending on the camera pitch, making the arms aim up/down

Frame 1 :

Frame 2 :

The bone transform is always 1 or 2 frames behind the attached actor. The attached actor is actually at the righ position ! It’s just that for some reason, the skeleton bones take 1 or 2 frames to arrive to their desired transform.
The problem is really visible with fast camera movement, but create a “wobbly” effect on the gun compared to the arm in regular gameplay.

Here is what the control rig does :

(for the 2 arms chain ofc)

I narrowed down the issue to the CR/animation itself, since rotating my character actor left/right doesn’t provoke this issue. The issue is only visible when I plug this CR for up/down arm movement

What I assume is the issue :

  • Setting bone transform this way actually makes the skeleton store a “Desired bone transform” for each bones and subsequent sockets . This one is immediatly passed to the attached actor, so the attach actor actually set its transform to the desired one I forcefully set here

  • The animation itself is handled with interpolation (cause CR ? UE anims ? or … ?) and the actual bone transform in the first frame is an interpolated transform between the previous, and the one set in Control rig.

What I tried (but can try again if I misstested) :

  • Setting the bone transform outside the control rig (with a transform(modify) bone node)
  • Setting the bones transforms in local space instead
  • Enabling/disabling every parameter I can see :sweat_smile: ( but maybe I missed some)

Interestingly, I tried detaching the gun mesh from the skeleton and bruteforce it’s transform to the current bone transform on my character’s tick. This actually “works” and the position of the mesh actually follows the interpolated bone every frame. Sure they are both delayed now, but the “wobbling” disapear at least.

But it seems weird to not rely on AttachToComponent() for my objects, and I’m curious to know where this issue comes from :stuck_out_tongue:

Does anyone have some insight on this, either cause, solution, workaround, …

Thanks in advance !