UPDATE: In Unreal Engine 5’s Control Rig, Control Type (now named Value Type) is set to Euler Transform by default, and the older Transform type has been since omitted. If you’re using UE5, you don’t have to worry about this.
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.
P.S.: If your control unintentionally rotates full rotation even with Euler Transform, make sure the rotator values in the sequencer doesn’t add/subtract by (multiply of) 360° by the next keyframe. Therefore, the direction on where you rotate it matters now.