Friday, August 5, 2011

GSoC11 - Exploring and Improving Auto Clamped Handles

One of the long standing quirks of Blender's animation system for animators both new and old has been the handle types. In particular, "auto-clamped" handles...

Auto-clamped handles in action
Note how as the handles of the selected keyframe approach gradually taper off as they approach the neighbouring keyframe instead of "overshooting" (i.e. pushing the curve past the neighbouring extremes).

Perhaps the most irritating/confusing of those quirks though was that "auto clamped" handles were a weird mixture of standard "auto" handles and a per-curve setting. While all the other handle types were per handle, this per-curve setting really threw things a bit.

As of a commit last night, these are now per-keyframe settings. As can been seen in the screenshot below:
The two keyframes in the red box are "Auto-Clamped", while the two in the blue box are "Auto". Apart from the handle types, these have not been altered (i.e. they are as directly calculated by Blender after switching the handle types).

As can be seen, Auto-Clamped handles always stay horizontal when their keyframe defines an extrema, while with plain Auto handles, your handles can end up tilted and/or going in all sorts of crazy directions.

What's common about both though, is that the horizontal length of the handles varies depending on the horizontal distance between a keyframe and the surrounding ones.

Hopefully this visual guide to the variants of auto-handles currently available in Blender has helped you understand the differences between these.
Certainly as a result of working on this, I now have a better appreciation for the different types of handles, and also have a better (excuse the pun) handle on how the handle calculation stuff works. Previously I'd avoided touching this stuff, as it was kind of black magic which, if tinkered with in the wrong ways would break animation files. However, I found that this modification was not only possible, but relatively simple and straightforward to do too!


  1. Love your great explanations about all this animation "technical" stuff :D

    Keep it up! ;)

  2. Could you please add an option for equal lenth of the handles too?
    C4d has a simmilar command, which i use very often in the past..

  3. yet another great addition to one of the branches that I REALLY hope gets a merge someday soon. This is yet another feature from other packages thatI have been wanting to see in blender for some time. Thank you kindly for your efforts to better blender for the world over :-)

  4. Really helpful new auto-clamp!!! for walkcycles is crucial as no longer we will have no more overshooted pose keys (particularly when the Key pose on the contacts)... this one is very big time saver on tweaking f-curves...

    And by the way, is there any chance that in your endeavor to get a even better animation system, we will get channel grouping in the dopesheet and/ or action editors? would be a very welcome feature to have a tidy animation enviroment when you have several dozen channels in a armature or objects or even more.
    Just a wish... :) not dare to say a feature request.