Thursday, March 31, 2011

[State of the Animation Nation Address] - Reviewing the state of Animation in Blender (2.57)

So, I thought today I'd do a little "state of the nation address", but in this case, for the "Blender Animation Nation" ;)

Firstly, let's recap about some of the developments which have been occurring since 2.56. In my previous comprehensive update post here, I mentioned about some new features in 2.57 (such as the "Whole Character Keying Set" and "'Only Selected' DopeSheet filter working in the Action Editor too) inspired by workflow problems I encountered while animating a while ago. I also mentioned some bugfixes, such as [#25902].

Speaking of bugfixes, for riggers out there, it may pay to cast your eye over this announcement I made a few days ago. From comments left there, it sounds like this might've saved a whole lot of head scratching out there!

Now, getting back to the list of improvements I talked about the animation system needing...

Last week, I finally got around to coding the "Propagate Pose" tool that I talked about in that article. Based on feedback posted there in the comments, today I've made a few tweaks to this tool so that it can be even more useful:
  • "Last Keyframe" mode can now be used to propagate the pose on the current frame to the last keyframe of each F-Curve only, which is useful when trying to make some action cyclic (i.e. tillable). 
    • To do that, just move the current frame to the first/start keyframe of the action, make any tweaks as necessary, and then use the Pose -> Propagate -> Last Keyframe (Make Cyclic) menu entry to propagate these changes to the end of the action, thus making the action start/end on the same pose.
  • "Selected Markers" mode can now be used to propagate the pose on the current frame to frames where selected markers occur. This only propagates to the selected markers that occur after the current frame.
    • Tip: when combined with appropriate marker-selection tools (i.e. by creating your own macro), this can become a very powerful tool. For example, with a "select markers by pattern" operator (like for objects), you can easily hook this up so that when creating a walkcycle for instance, you can make adjustments to all left-contact poses (assuming that your markers are named in a way which makes this possible to easily automate).
  • Along with the Pose Sliding tools (i.e. Push/Relax), Pose Propagate now treats bone selections in the same way that Pose Libraries do: that is, when applying these tools, if you don't select any bones, all bones will be affected. This makes it easier to see how things are going without being flooded by a sea of blue! 
    One problem noted was that the current code doesn't work that well when auto-keyframing is turned on. This is because it happens to contradict one of the assumptions used in the heuristic for detecting which hold to propagate to. Perhaps I might still add an exception for this later, though I'll still have to think over it a bit first.


    I also mentioned the case of the Textureless OpenGL-Rendered Animations bug. Thankfully, this has now been resolved! For the curious, it was a case of a mysterious "data mask" (for the DerivedMesh voodoo to figure out what geometry data to include) getting lost, as only 3D Views had this info.

    I can also report that the "Sync Markers" option in the DopeSheet now works better now, as after all transforms have been performed (instead of just for 'extend'), the selected markers will be adjusted by the same transform as was applied to the keyframes. Although still not interactive, this is much better than a "Sync Markers" option that only really worked when doing select left/right keyframes.

    There have also been a host of other bugs fixed. But I'm just mentioning these ones since I mentioned these previously :)


    Now, regarding GSoC this year, and the Graph Editor tweaks I mentioned in that earlier post, I'll have an update on these matters in another post I've got on the way. So stay tuned for those :)


    1. While I completely misunderstood your post about propagate pose - I see you've added what I was thinking about. Thanks for adding the "Propagate > Last Keyframe (Make cyclic)!

    2. the propagate pose fixes/additions you made have just made the tool that much more useful! thank you