Thursday, May 9, 2013

Blender 2.67 Released

You've probably heard by now that Blender 2.67 was released yesterday. If not, you now know :)

As usual, I'll be giving a quick overview of some main features in this release, but also highlighting some of the animation-related features and goodies that you'll find.

As you can see from the splash, one of the main features in this release is the Freestyle integration. This is a basically a NPR (non-photorealistic) rendering engine, which allows you to create achieve a number of rendering styles typically not associated with CG renders. While I'm personally not too fond of the so-called "cartoon" and "manga/anime/whatever-enthusiasts-want-to-call-it" NPR styles, seeing some of the entries to the splash screen contest (but also just the release log examples) has been quite eye opening as to what other things the Freestyle integration can actually be used for. Some personal favourites include:

Sketch/hash style renders - from the other renders I've seen in this style, the n.l band-mapping stuff could still do with some work to have smoother transitions. AFAIK, it is in fact possible to get a rather smooth intensity gradient out of ballpoint pens, and even quite a wide range of intensities.

Technical Illustrations - Nice and clear to read

Blueprints - 'nuff said

Anyways, congrats to Tamito and all the others who've been involved in getting this project into Blender over the past 5 or so years. It takes some serious dedication to keep performing weekly merges with trunk as the sole developer on a project :)

Animation Features
I've already discussed a few of these in an earlier post, but I'll repeat those here for completeness...

--- From "Driver Debugging Tools" ---
1) Driver Value Indicators
In r.55489, I've just committed a way of showing the relationship between the "driver value" (i.e. result of the stuff in NKEY panel) and the values applied to properties being driven (i.e. sliders). This is shown in the screenshot below:

The x-axis in this mode is in terms of "driver values" (instead of frames, as for animation). Hence, we find the point along the x-axis where the driver value lies, and we draw a line upwards from that (vertical dotted line) to look for where this intersects the F-Curve associated with the driver (light red line). The y-value of this intersection point (horizontal dotted line, which we take back to the vertical/y-axis) is the property value.

2) Error Filter
Instead of checking the console or scrolling and expanding the entire list to see whether there were any broken drivers, there is now an easier way. Simply activate the "broken drivers" filter (the help/lifesaver-ring) to see just the drivers which are currently disabled or have some unresolved errors that need cleaning up.

NOTE: this option also works for animation, and can be used to identify F-Curves which have invalid RNA-Paths (perhaps as a result of stuff being removed or renamed).

3) Invalid Driver Targets are now Highlighted
In conjunction with the Error Filter, invalid targets are now indicated in the UI using the "red alert" highlights. So now, there isn't any need to bring up the console to try and guess what went wrong.

For example:

No target object specified...

Two target objects required, but only the first was set...

We need bones (and in the same armature), not just any old objects!

Of course, these are not all of the errors that can occur here, though they give a good taste of what's expected here. Also, although it might still help to have explanations about the exact cause of the errors in each case, these indicators already go a long way towards making things better by already showing where the errors are/were detected.
--- End of "Driver Debugging Tools" Content ---

In addition to these features, I made a number of other small tweaks in response to requests from various users:

4) Ctrl-Click on the "name" of a broken F-Curve now allows you to fix the RNA Path in-place (r.55069
From the commit-log:
For F-Curves that are disabled or marked as having errors because their paths
are invalid (indicated with a red line underneath their names), it is now
possible to use the Ctrl-Click renaming functionality to bring up a textbox for
fixing the offending RNA Path "in place" (i.e. in the channels list) without
having to bring up the properties region first.

This makes it easier to fix the paths if you know what you're doing. However,
caution is still advised for most people. In particular, be aware that this uses
a separate "RNA Array Index" for indexing into array properties (i.e. location,
rotation, color) which will not be shown here, and can only be edited from the
panel (or datablocks editor/scripts).
5) NLA Editor: Various workflow improvements for adding predefined actions to un-animated objects 
For the past few years, the NLA Editor implementation has tried to "strongly encourage" animators into the habit of simply animating normally instead of first creating zero-length actions that then need to be stretched numerous times as keyframes are gradually added to these.

One side effect of this is that it was a bit more difficult for animators to create libraries of actions, and then import these in to shot files to quickly block out animation sequences (i.e. suitable for broadcast TV standards). Since I've been starting to see a few more of these examples appearing in the forums, it's probably time we started to improve this use case again. Several features have been put in place to make this workflow smoother...

5a) Add -> "Include Selected Objects" (r. 55267)
From the commit-log:
This commit introduces an operator in the Add menu - this operator ensures that
all selected objects have AnimData attached to them (even if they don't have any
actions/drivers yet). By doing this, these objects can at least appear in the
NLA Editor, which will allow them to have strips added to them in future without
having to create throwaway actions first.
5b) NLA Tracks can be added to empty AnimData blocks  (r.55329)
In order to add NLA strips to these empty AnimData blocks, it is now possible to add NLA Tracks to AnimData blocks by selecting the relevant channels first, and then adding tracks in the normal way (i.e. Shift-A over the Channels Region, or Add -> Add Tracks). Currently, you still need to manually add NLA Tracks to empty AnimData blocks before you can add strips. This had been on my todo list, but those plans had to abandoned due to the well publicised downtime I had last month :(

5c)  AnimData Editing
In the channels region, the light and dark blue channels are AnimData channels. When their names are white, they are selected. It is also possible to select AnimData channels by clicking in the Active-Action channels right below these.

The "active" AnimData block can be seen by checking the Properties Region under the "Animation Data" panel, where the ID-Block which owns this AnimData block lives.

In fact, this stuff is not really any new functionality, but rather stuff that somehow broke along the line and/or was somewhat incomplete. But now everything should work a lot smoother.

5d) Strips can be made to sync their length to be the same as the length of the action when leaving TweakMode (r.56314)
From the commit-log:
Bugfix [#34645] NlaStrip Tweak Mode - No automatic action length sync on exit

Originally I was thinking of not restoring this functionality (see report for
further details). However, upon rechecking the code, it seems that there was
actually a define set up for this already, but which wasn't actually hooked up
yet. So, this commit basically exposes this option ("Sync Length") which ensures
that when exiting tweak mode on a NLA Strip, that strip instance (and not other
users of the same action) will be updated to include the newly added keyframes.
This option is not enabled by default, and shouldn't really be needed in most
("intended") workflows.
5e) Bugfix: Filtering option in NLA Editor to include AnimData blocks with no actions or NLA data attached was broken (r. 55266)
Dunno when it broke, but this now works again. This is needed when trying to animate un-animated objects using library actions

6) Important Bugfixes
Bugs bugs bugs. It's always nice when we manage to squash a few! Here are a few important ones that may be relevant (especially if still working with older Blender versions)

6a) Bugfix [#34836] Crash when driver variable has path == 'data'  (r. 56206)
This bug meant that if you were halfway through typing out a path for a driver variable and then you left to check on some reference material to see what you should type in next, Blender would crash when it could evaluate the path but not find a property as expected.

6b) Bugfix [#34688] Auto-Keying doesn't include custom properties when pasting poses (r.55457)
From the commit-log:
Previously, Paste Poses only used the LocRotScale Keying Set for autokeyframing
purposes. This was fine for most purposes, but with many rigs these days also
using custom properties for important posing functions, it's important that we
include those here too.
6c) Bugfix [#34541] Sketching bones created bones with 0 radius for envelope (r. 55105)Although Skeleton Sketching doesn't really seem to be used that much, this bug could at times cause havok.

6d) Bugfix: Transform autokey warning indicator text was getting clipped prematurely (r. 55461)
This is a largely cosmetic tweak - it seems to have been caused by some missing DPI conversion stuff

6e) UI Tweak: Instead of silently failing, an error message is now saying that a property cannot be animated if IKEY over a button fails (r.55104)

General Fixes
  • UI Tweak: "Add to Group" button creates new group if no groups exist (r.55435)
  • UI Tweak: Added descriptions for each constraint type, including common usage restrictions/limits to reduce confusion (r.55349)
  • Any ID Selector Template: ID Type dropdown now shows icon only as originally intended  (r.55328)


  1. Thank you very much for all your fixes and commits!

  2. Big thank! Your coding and enthusiasm is really great.
    Would be great for the next release or GSC if someone pick up pre-2.5 3d manipulation widget functionality back. As I remember you have done some analysis regarding this feature. Current one have nearly zero help for animation (no real time gimbal lock visualisation, no reference of beggining state for translations etc.), old one was much better.
    PS: Good luck with malware removal!