A bit of a discussion about quaternion rotations started on this thread, but it was off-topic. For those who are interested, let’s continue it here.
Here’s the basics of quaternion rotations (may not be entirely clear, and it glosses over some stuff). Don’t be frightened by the length. It’s actually pretty simple. A proper explanation would involve much less talking, and a couple visual aids. But lacking visual aids, I have to do more talking. So here we go:
There are many ways to think of quaternion rotations, but I think the most useful for animators is to think of them as being sort of like shape keys. The W, X, Y, and Z curves represent weights. But instead of being weights for shapes, they’re weights for orientations.
W is the weight of the non-rotated (default) orientation.
X is the weight of the orientation you get when you rotate 180 degrees around the X axis.
Y is the weight of 180 around the Y axis.
Z is the weight of 180 around the Z axis.
You can play in the IPO editor to see how this works. I recommend making a bone, and parenting a monkey head to it so you can see the orientation more clearly (the bone on its own is fairly visually ambiguous when it comes to rotation). Then set a keyframe for the rotation of the bone, and play with the WXYZ values in the IPO editor.
If you set W to 1, and the rest to zero, it’s at the W position. If you set X to 1, and the rest to zero, it’s at the X position. etc.
You can also mix the orientations together. What’s important when mixing is the ratio between the weights, not their exact values. So having both W and X at 0.5 is the same as W and X both at 0.2 or 1000. In short, the weights get normalized.
If you have a mixed set of weights, and you increase or decrease just W’s weight, the object will rotate directly towards or away from W. The same goes for X, Y, and Z. It always rotates along the most direct axis of rotation. This also holds true for evenly blending between any two orientations, even if it involves all of W, X, Y, and Z. It always rotates along the most direct axis.
That’s quaternion rotations in a nutshell. It may seem a bit complex at first, but just play with it for a bit and you’ll see how simple it is. The curves actually do make sense.
I left some stuff out of this (like what negative weights mean, for example), but I’ll cover those things in the video tutorial, whenever I get it done (don’t hold your breath). Until then, feel free to play and figure it out for yourself.
The most important thing to remember is that (like I said before) the weights work based on ratios. Here’s the reason: an object can’t be 100% W and 100% X at the same time, so if both W and X are at 1.0, it has to normalize them. This is also why, for example, increasing X’s weight even beyond 1.0 won’t ever quite reach X if W still has some weight. You’d have to reduce W’s weight to zero first.
I hope this late-night tired explanation makes some sense. This really is the core of understanding quaternion rotations. It’s just blending between four base orientations. If you get this, you’re basically set. The rest is (mostly) detail and helpful hints.