(This page is a quick edit of a blog post I did in June 2007 and is a quick overview, rather than a tutorial)
Use it to nudge keyframes forwards and backwards and to scale animation curve values relative to a selection of pivot points. What is really cool is the "curve pivot" mode. For example you can specify the pivot to be "max" and activate "curve pivot". When you "push up" or "push down" the curves are each scaled relative to their own maximum value.
The "absolute" flag plays an important roll in how the scaling works. Setting the "absolute" flag means the keyframe value is always decreased when pushing down and increased when pushing up. If "absolute" is NOT set, then "push down" means scale the keys to be closer to the value of the pivot. This can be a little confusing until you see it in the graph editor, but essentially it means that a keyframe whose value is less than that of the pivot will increase in value (moving it closer to the pivot value) if you "push down".
I discovered that the "absolute" flag was ignored when the "curve pivot" flag was set, so I made a small modification to the code to fix that. You can download it at the end of this post.
This is a marking menu that can be created from the zooToolboxUI. To take full advantage of this wonderful menu you need to use weighted tangents with unlocked weights. You can then use it to sharpen/unsharpen or tighten/untighten tangents in increments, which is much less trouble that manipulating the tangent handles directly. But the best function of all is "make sensible tangents".
"make sensible tangents" pulls your animation curves into shape by minimising the exagerated over-shoot that often results from spline tangents, but it avoids the jerky feel of using linear tangents. You specify a "sensible factor" so the curve reshaping is incremental. When the marking menu is assigned to a key, holding that key and left-mouse-click brings up the menu, but tapping the key once, with no mouse click does a "make sensible tangents".Â Â So it becomes a simple matter to iron out those kinks with a few key taps.
zooSetKey.mel & zooKeyCommands.mel
Together this pair of scripts make the marking menu shown above. This menu provides some really powerful animation tools. (note: The picture shown here varies slightly from the original zooToolbox version. The menu items highlighted in yellow are my own modifications)
For example sometimes I animate something and think in hindsight that I would actually like the pose at one keyframe to be a bit closer to the look of the previous keyframe. So I step back a few frames in the timeslider and use "copycat value towards next" to copy this inbetween pose to the next keyframe.
A more complicated example involves the concept of "space switching" or "dynamic parenting". Rigs built with zooCST have space switching capability on most of their control objects. You can animate the parenting of the control objects and their transforms are automatically recalculated to maintain orientation under the new parent. The "setParent" functions in this marking menu allow you to take an existing animation that has animated parenting and to reparent the control objects. The values of all the keyframes are recalculated to work under the new parent. This is heavy duty stuff, but once you get the hang of it its quite easy to use.
In the code I have commented any changes that I made with the "DJ MOD" flag. To use these scripts you will need to also download the rest of the zooToolbox from Hamish McKenzie .