3D animation like any artistic field in computer graphics has a few known limitations and unresolved mathematical constraints.
The most common one is the Gimbal Lock issue, a well know limitation. Despite the fact that some rigs found some cheap ways to work around it (by adding parent/child controllers for example), it's still pretty troublesome to get caught having intertwined/mixed axes while animating, making you lose rotation freedom in the process.
Not only that, but the fact the we animate using a Eulerian rotation system, sometimes, while animating in ''Local'' mode, we get these weird flips happening in our motions, flips that can be seen in graph editors as sudden peaks in our values.
All of it really bothers me and probably alot of you too. I'm just wondering, do you think this will always be there or there's some way to bypass it?
Replies
Some systems use quaternion rotation, which "converts" the rotation of an object into a vector of xyz and a float value that describes the angle. The way this is handled, you avoid gimbal lock completely, since it is mathematically more precise.
The issue with quaternion is that the way the interpolation is calculated, TCB, short for tension, continuity, and bias, is a lot more chaotic and harder to understand for animators (I personally had a lot of trouble working with it, when I tried it) compared to euler, where you go to the graph editor and just tweak the curves of x, y and z individually. Also it makes it quite troublesome when it comes to rigging and specifically when you are trying to connect custom attributes with a single rotation axis.
I am happy with euler, althought it can be very annoying sometimes when you run into gimbal lock.
But like Kiel said, you can adjust the rotation order of controllers to their primary rotation axis and it can reduce the chance of an axis overlapping on another causing gimbal lock.
Here's an awesome article about quaternion vs euler.
Freeze Transforms on your animation controllers in the bind pose. Constrained objects don't matter, just objects you intend to keyframe.
If your animation's starting pose is very different from the bind pose, then immediately create an animation layer to animate on. (At least in 3ds Max this creates a new zero'd animation track.)
When needed separate the rotation to different objects. (Think of a vehicle. Tire rotates on X, Axle rotates on Y, Car rotates on Z.)
When needed change the rotation order. (I've never actually had to do this.)
If all else fails use a TCB (Quaternion) Controller. Personally I'm very comfortable with TCB controllers. And as a bonus, you don't even need to use the curve editor. But really, I've had some wobbly animations, and I convert the controller to TCB and bam! Smooth as butter.
TCB controllers have their own issues. Fast rotation are difficult to control, and rotating more than 180 degrees is impossible. Ideally you wouldn't rotate more than 90 degrees without a keyframe or sub keyframes.