By | Casey Muratori |

However, to my surprise, larger rotations produced very little divergence between linear and spherical interpolation, despite substantial divergence for exponential map interpolation:

The more I played with it, the more I realized that I had been thinking about the problem all wrong: not only are linear and spherical interpolations or quaternions always exactly the same *path*, but because of the half-angle construction of quaternions, their speeds are much more similar than you would expect from linear interpolation of whole-angle rotation representations like matrices.
Even extreme differences in interpolation between spherical interpolation and the exponential map yielded substantively little difference between spherical interpolation and linear interpolation of quaternions:

This visualization-driven realization informed the entire design of the 2.0 version Granny 3D animation engine. Aided by a much better and more intuitive understanding of how quaternions really worked, I was able to develop a number of novel techniques that allowed the animation core to be much faster and more flexible.
Several years later, in 2006, I put up a makeshift video describing one of the more obscure tricks I employed. Because quaternions differentiate between 360 and 720 degree rotations (unlike matrices), with a little preconditioning you can make joints behave much more realistically under animation compositing as they would with any other orientation representation:

If you have a quaternion-based animation engine, I highly recommend using this method! It costs nothing and yields much more predictable and satisfying animation blending results for rotational joints in all cases.

For more information on my current projects, join the Molly Rocket Mailing List: