Home Animation Showcase & Critiques

Will we ever get rid of Gimbal lock?

polycounter lvl 9
Offline / Send Message
Blond polycounter lvl 9
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

  • KielFiggins
    Offline / Send Message
    KielFiggins polycounter lvl 8
    I think it would take a fundamental shift in how 3d programs handle rotation to rid this issue.  Considering top minds across multiple fields have come up with the current solution, I really don't see it changing any time soon.  Even though rotation is a core manipulator type, it's not really 'broken' enough to fix.  Like you said, there are various setups to ease the situation and tools to help further (rotation order, euler filter, ect).  Enough is there to work with, even though it's frustrating at times.

  • MiAlx
    Offline / Send Message
    MiAlx polycounter lvl 10
    Euler filter helps 90% of the time :)
    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.


  • monster
    Offline / Send Message
    monster polycounter
    Just a few things you can do to minimize gimbal lock.

    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. :p 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.
  • Flynny
    Offline / Send Message
    Flynny polycounter lvl 9
    From what I remember it is solved mostly behind the scenes with Quatorians (I think Maya and Max use Quats but only display rotations.) The issue which I think will take more time is how the hell do you display/expose control conveniently, thats where rotation orders come in, nothing beats the simplicity of the rotation order drop down.
Sign In or Register to comment.