PROTIP: Use Euler Transform in Your Control Rig's IK Controls

When you create animations in-engine using Control Rig (which is awesome and a bit overpowered IMO), you may, sooner or later, encounter the recurring problem of gimbal locking. This is a side effect of the Rotator struct where value of an axis that reached beyond 180° will snap to -180°. It’s apparent when you’re trying to animate IK controls in root space, the limb will unnaturally twist around instead of taking the shortest path.

To mitigate this problem, usually you’d right click in an object’s Rotation property in Sequencer, go to Properties, and enable Use Quaternion Interpolation, but there’s another problem - specific to Control Rig, the Rotation value for a control is not treated as usual Rotation struct, but straight up as 3 float vars instead. So the option to use quaternion based interpolation doesn’t exist.

Or, is it?

After looking into much further, I found out that Control RIg itself actually used quaternion for rotation, as opposed to Rotation struct. But why does it still snapping? Turns out, to get the Sequncer to treat the rotation as quaternion, you have to set the Control Type into Euler Transform. This is set to Transform by default, so users can miss this.

Hopefully this protip can save your hair from getting split when working with Control Rig. :face_with_hand_over_mouth:


Thanks for sharing!

Thanks a lot for the tip!