To follow my own advice, the main drawbacks I’m aware of the current approach having are:
-
It isn’t generally capable of rotating at a constant velocity like e.g. slerp. For key frames <= ~90 degrees apart, the velocity variance is generally minor enough to not matter. But for larger rotations it can definitely become an issue.
-
Treating the four components as completely unrelated data prevents us from doing nice things like ensuring that at least at key frames the quaternions are properly normalized, which would make them much nicer to work with (even if we still interpolated per-component).
-
Even if we treat the four components as related, if we still treat them as separate curves then we can’t do nice things like ensuring that interpolation always takes the shortest path, which is a nicer behavior for animators to work with.
Issues #2 and #3 aren’t intrinsic to a per-component interpolation approach, but they are intrinsic to exposing the curves to be independently manipulated by the user. Issue #1 is the only issue I’m aware of that is actually intrinsic to the interpolation approach itself.
The main benefits of the current approach (that I’m aware of) are:
-
Performance. Simple per-component interpolation is faster than slerp/squad/etc. I don’t think this is actually a major concern, but for heavier scenes it might make a difference. Not sure.
-
It’s the only practical way (that I’m aware of) to expose the individual quaternion components to the user for arbitrary manipulation without breaking the math. For animation this may become obsolete as better approaches are added, but for rigging I think erring on the side of allowing low-level access like this whenever possible is a good thing.
-
It makes it really straightforward to apply the same tools to quaternions as other animation curves (e.g. working with tangent handles, applying fcurve modifiers, etc.). Other approaches will hopefully also allow for this, but naively adding slerp and squad won’t.
Of these, I think #2 is the most important benefit. I think #3 is also important in the short-to-mid-term, but I’m excited about finding alternate ways to work with rotations (and perhaps transforms generally) that would make #3 more-or-less obsolete.