Sunday, February 13, 2011

Animation Editor tweaks needed...

One of the goals of the little animation exercises I've been doing in 2.5 recently have been to assess for myself the state of animation system when actually animating (as well as the more obvious ones of having fun practicing animation after doing a fair bit of reading about but not doing much of it). In the past, I've found that such exercises have been very productive + insightful experiences (usually I end up finding a fairly large cluster of bugs that nobody seems to run into or at least complain about), and this series has proved no different.

To get the ball rolling, here is a list of changes resulting from this process:
  • "Whole Character" Keying Set - perhaps the most obvious example is this Keying Set, which I coded in a morning while new vinyl was being put in around the house. This came about from noticing that it was a pain to try and get all the various controls for the Sintel rig keyed when starting to block in animation in new shot files.
  • "Only Selected" filtering option for Action Editor too - while trying to just retime animation for a particular few controllers, I figured that it would be nice to do so without the hassle of going through the DopeSheet (I was animating via the Action Editor to avoid accidentally retiming or adding keyframes for the camera/lights for example). By including such basic filtering options from the DopeSheet, the Action Editor got a lot more usable for just quickly retiming such animation
  • Fast-tracking of Bugfix [#25902] - this bugfix was basically about the animation playback operator only taking its settings from the Playback menu of the Timeline when started from the Timeline but not when started from other editors. This was due to these settings being only available per Timeline Editor instance, not globally. Changing this means that starting playback won't result in animation playback only in 3d-View + Timeline but not in Animation Editors, unless of course that's what you explicitly wanted :)
  • Quick fixes for destructive regressions arising from overzealous batching-scripted pedanticness - i.e. here. BSI Crap--; Aligorith++; Yay!

I've also noticed some annoyances which I'm now working on, or will work on in coming days:
  • Textureless OpenGL-Rendered Animations - I'm still working on it, but after tracking this down to the Mask modifiers in use there, I haven't been able to find the missing link yet...
  • "Sync Markers" option in DopeSheet (added during Durian) is currently defunct/useless as it is. IMO, it needs to be extended to cover more than just one selection case (which isn't even used that much), as there are in fact many situations which require it.
  • Trying to delete markers/keyframes and ending up deleting the wrong ones, due to being in the wrong sub-region. This is a bit of a toughie to resolve, but I agree that it doesn't quite feel right.
  • A need for more filtering tools/workflow tools/tweaks to make working with curves in the Graph Editor actually more manageable. There are several points here that need addressing, which I'll cover in a later section
There are also some other annoyances which I'm not sure whether I'll get to working on yet (or are a bit more complicated/icky to fix now):
  • Jump to next/prev keyframe operator should use PageUp/Down instead of Ctrl-PageUp/Down. Having used this option a few times in the past day or so, needing the extra Ctrl-press at times just feels like too much extra effort, and/or can get tiring. The reason I'm not resolving this yet though, is that doing so would cause a lot of keymap conflicts/other issues with things such as the Outliner "page" scrolling feature, whose hotkeys conflict with this.
  • Not being able to preview unkeyed changes in quick render tests. There's a bugreport on this in the tracker atm, but basically, it would indeed be nice to be able to do this, especially when doing facial-animation stuff, where subtle shading differences can have quite a substantial impact on the readability and acceptability of poses.
Finally, on my personal list of simple configuration tweaks/addons needed:
  • "Camera" Keying Set, which keyframes the standard camera controls as a neatly managed package. I'm currently making do with just setting up a base one, exporting to a script, and dumping this into files as I need it. If there is enough interest, I'll look at including such a Keying Set in the default set, or perhaps as an addon/part of an addon. 
  • "Propagate Pose" tool. When you've gone through and blocked out some animation, but then on playback you find that one part of the pose (that doesn't change much for the next few keyframes) was not really satisfactory enough, this tool would automate the process of copying, applying, and keyframing this change to the following keyframes so that they have these updated values. Doing a Ctrl-C, then {Ctrl-PageUp Ctrl-V} * 100 dance just isn't fun or very friendly on our pinkies...
  • "Quick-Text" Strip for Sequencer, for making simple title-cards without needing to fire up a paint app or another Blender scene and setting up camera + shadeless-text
  • Effector-based sim-free art-directable hair setups - TBH, I don't really care for running "physically correct" sims that will explode and/or be nearly impossible to tweak/get right settings for while taking hours to calculate, if I could just set up a simple effector rig to "art-direct" offending hairs into "acceptable" poses (i.e. pin a cluster behind a shoulder, or slowly drag them over said shoulder, but controlled manually instead of hoping that collision detection will catch it). 
    • I did a brief experiment the other day on this, but perhaps the forces on the effector were too strong, as the carefully sculpted "base" hair form was lost. The hair was either pushed up and away, or pulled down through the head. More tests will probably get this right eventually :)

So, what about those Graph Editor tweaks I mentioned earlier?
  1. Tool to show the curve (in the channel list) of the newly selected keyframe, expanding groups as necessary. Something like Numpad-. "Show Selected Curve" or similar, for checking what curve you've managed to select. 
    1. An alternative to this is to implement the "Draw Names" option I've had penciled in the source but not yet implemented. This option would draw the names of the F-Curves beside the respective curve in the viewport, though I haven't coded this yet, as I've been concerned about the risk of visual overload here
  2. Re-evaluating the way that the channel-list is shown, to perhaps have groups flattened out or just hidden, to make it easier to find curves to work on. 
    1. One primary concern is that opening them all or not even showing the groups would result in less structure for managing the long list of F-Curves present.
    2. Not showing the groups rules out the possibility of using those for controlling visibility of a subset of related F-Curves, though it seems increasingly that animators are more likely to want to only tweak a single F-Curve at a time instead
  3. Making Graph Editor have the "Only Selected" filter enabled by default. This would reduce the complexity factor when just opening it up and trying to figure out where the keyframes you want to tweak are.
    1. Why I didn't do this in the first place was because I didn't want people to think that, "oh, that 'new' curve editor is just like the old one... I can only see the selected data only... 'animate everything?!' yeah right!". Secondly, not filtering to only-selected keeps consistency with the other animation editors
    2. I was getting quite fond of loading up animation files, especially old ones a gauwking at the fancy art-like appearance of the Graph Editor with a mass of keyframes+curves+handles lumped together. I know, I know... it's a sad excuse... maybe I should make a post with some of these screenshots sometime... ;)
  4. Name based channel-filtering options?  I know people have been asking for it, though it's really just been some technical complications which have meant that I've largely avoided doing this so far. However, I do agree that it would be nice to be able to just grab these settings
  5. Internal-cleanups to separate "visible-in-channel-hierarchy" and "visible-keyframes" filtering states in the channel filtering code. This should eliminate two of the bugreports in the tracker currently, which are mostly about how inconvenient it is to lock channels and/or change their visibility status.
As I've once said to someone when discussing why they felt some things were "clunky" to use here, it's most likely that it's just a relatively simple tweak that's required to make it better. Really, it could be as simple as the lack or presence of an extra button somewhere that's the deal-breaker for most people (i.e. "Tweak Mode" button I added in early test builds of NLA SoC which I eventually removed)


  1. I haven't done enough animation to 'get' most of that post but as someone who is looking to get into animation more this year I certainly appreciate the effort that goes in! Any work on hair in particular will earn you (further) gratitude from a whole stack of people.


  2. Good stuff, it is hard to oversee it all at once but i am glad you are doing this! It would be cool if one could set up the graph editor to filer only x-rotation, z-translation etc. too.

  3. good ones ali, can we add fast summaries to the list? summary evaluation could be cached?

  4. colored bone grouping is needed to grouping in action window like 2.49, it´s a blessing, good job making actual animation...
    could you tell us what would be the best workflow to do it ?

  5. hey ali
    +1 for only selected in action editor
    also +1 for bone groups.

    Push,relax and the breakdowner are absolutely brilliant tools. As for adjusting curves have you seen this feature preview