- 1 Animation
- 1.1 Bendy Bones - Advanced B-Bones for Easier + Simple Rigging
- 1.2 Drivers
- 1.3 Animation Editors
- 1.4 Dope Sheet Editor
- 1.5 Graph Editor
- 1.6 NLA Editor
- 1.7 FModifiers
- 1.8 Keyframe Types
- 1.9 Rigging
Bendy Bones - Advanced B-Bones for Easier + Simple Rigging
This commit/patch/branch (49aeee5) brings a bunch of powerful new options for B-Bones and for working with B-Bones, making it easier for animators to create their own rigs, using fewer bones (which also means hopefully lighter + faster rigs ;) This functionality was first demoed by Daniel M. Lara (pepeland) at BConf15
Some highlights from this patch include:
- You can now directly control the shape of B-Bones using a series of properties instead of being restricted to trying to indirectly control them through the neighbouring bones. See the "Bendy Bones" panel...
- B-Bones can be shaped in EditMode to define a "curved rest pose" for the bone. This is useful for things like eyebrows and mouths/eyelids
- You can now make B-Bones use custom bones as their reference bone handles, instead of only using the parent/child bones. To do so, enable the "Use Custom Reference Handles" toggle. If none are specified, then the BBone will only use the Bendy Bone properties.
- Constraints Head/Tail option can now slide along the B-Bone shape, instead of just linearly interpolating between the endpoints of the bone.
For more details, see:
- | Blender Code blogpost about how B-Bones and Bendy Bones work
- Aligorith's posts about how the new features work - ,
Numerous changes have been made to streamline the process of setting up and editing drivers in Blender. These include:
- A new "eyedropper" tool and for setting up drivers easier
- Support for easier keyframing of how corrective drivers behave
|The hotkey for adding drivers is now CtrlD. This was changed from D, as this was causing frequent problems when drawing using Grease Pencil and the mouse passed over/near buttons. ee9898e|
Eyedropper for Faster Driver Setup
There is now an eyedropper tool for quicker and easier driver setup 0512e20. This is a long requested tool for improving the workflow for setting up drivers, as it should make it easier and faster to set up new drivers in a more interactive fashion.
The new workflow is as follows:
- Hover over the property (e.g. "Lamp Energy" or "Y Location") or properties ("Rotation") you wish to add drivers to. We'll refer to this as the "destination"
- CtrlD brings up a popup to select the way that the "Add Drivers" eyedropper will operate. Select one of these modes (as described below) to activate the eyedropper.
- Click on the property you want to use as the source/target. The property under the mouse will be used to drive the property you invoked CtrlD on.
|Important Workflow Tip|
|Due to the way that Blender's UI Context works, you'll need two Properties Panel instances open (and to have pinned one of the two to show the properties for the unselected object). It's slightly clunky, but necessary for implementing a workflow like this, as the UI cannot be manipulated while using eyedroppers to pick data. Therefore, you need to be able to see both the source and the destination properties when using the eyedropper.|
There are several different modes of operation:
- All from Target = Drive all components of the destination (e.g. X, Y, and Z of Location) using the component of the source/target under the eyedropper (e.g. "Scale Y")
- Single from Target = Drive the component of the destination under the mouse (e.g. "Rot X"), using the component of the source/target under the eyedropper (e.g. "Loc Y")
- Match Indices = Use the corresponding index to drive the corresponding component on a similar sized vector/array property. This is useful for driving "
ob1.location with ob2.location", or "
RGB color with XYZ location"
- Manually Create Later = This is the old "Add Drivers" behaviour from 2.50 - 2.77. It just adds some drivers, each with a single variable (but not filled in). No eyedropper will appear.
- Manually Create Later (Single) = This is the old "Add Single Driver" behaviour from 2.50 - 2.77. It just adds a driver, with a single variable (but not filled in). No eyedropper will appear.
- Transform properties will automatically create "Transform Channel" driver variables. Everything else will use "Single Property" ones.
- There's some magic in place to ensure that rotation units (degrees vs radians) will be work out of the box.
Keyframing for Corrective Drivers
When trying to insert a keyframe on a driven property (using I, or with autokeying enabled), the keyframes will get created on the Driver's F-Curve (instead of creating a new FCurve that goes into the active action, but will never do anything). Furthermore, the x-value of the new keyframe will be the current result of the driver expression.
This way, it becomes easier to create corrective drivers, as you can position all the targets the driver depends on, then adjust the driver value until it does what you need, and then you keyframe that value to bake it into the Driver F-Curve (in effect, "training" the computer how to behave in that case).
- The workflow is still a bit clunky, as you'll need to mute the driver before trying to set new values, or else it will be impossible to set a new value (let alone try to keyframe it)
- See 17d0c10 for more details
- Non number properties can now be referenced (vectors, arrays, strings, data-blocks etc), which the expression can access and further expand. rB82b0a9e36900c8aeb374078bd4cb3a7d7f8295e6
- Add 'self' option (allows for drivers to references their own data - bones, objects, etc). 4e845e06704bad3c11297ae8e86b400ef80b2a89
UI for Driver Editing
- Driver variable names now get validated (and flagged if invalid) to help you avoid choosing names which will not be able to be used in the expressions. (c4956fa)
If an error is detected, click on the error indicator icon to see a list of reasons why the variable name cannot be used.
- The type selector for driver variables is now located beside the name field for each driver, and each variable type is now identified using an icon in this more compact UI.
- It is now possible to copy and paste all driver variables between drivers. This makes it easier to reuse the same set of targets for multiple drivers. (69ee6c9)
Note: The paste operator has an option to replace all the variables instead of adding new ones at the end of the list.
Object datablocks are now sorted alphabetically by default
A long requested feature has been to have objects appear in alphabetical order in the animation editors, so that it is easier to find where they occur (as well as helping to keep the animation of related objects together in the NLA for instance). 92c9bdb finally implements this functionality - see commit logs for further details.
If you find that your playback speed suffers from doing this (it should only really be an issue when working with lots of objects in the scene), you can turn this off by disabling the "AZ" toggle that appears when you click on the "Filters" toggle button.
Fuzzy/Multi-Word Name Filtering
Fuzzy/Multi-Word name filtering now works in all the Animation Editors (6a4967c).
For example, the following search strings will now work:
loc rot" or "
lo ro" will now filter all location and rotation FCurves
col loc" will filter all location and color FCurves
scale" will also work as before to filter all scale FCurves
But, the following will not work:
lc rt" will NOT filter all location and rotation, as the fuzzy search only breaks down the search string based on whitespace placement
By default, this is not enabled when using name filtering (i.e. magnifying glass is checked, and some filtering text is specified). Instead, you need to enable the "AZ" toggle beside the name field. This fuzzy matching is not enabled by default as it could end up being quite a bit slower on really heavy scenes.
Dope Sheet Editor
- Added support for a "Properties Region", just like in all other animation editors (81c302b)
- Lasso and Circle Select tools now work in all modes of the Dope Sheet Editor (7e53f9f)
- Keyframe size can be adjusted as part of theme settings (095c8db)
- CtrlLMB to insert keyframes will now leave only the newly added keyframes selected, making it easier to quickly tweak the newly added keyframes. The old behaviour (i.e. all previously selected keyframes are untouched) can be accessed by using Ctrl⇧ ShiftLMB (0578d3e)
- The Properties Region now has tabs, to make it easier to navigate when there are lots of Driver Variables or FModifiers (ca935ab)
- The position of action-local markers (i.e. to the ones used to reference poses in Pose Library actions) is now drawn on NLA Strips to make it easier to synchronise timing across multiple strips (fab4b90). For example, if you need to time sound effects to hit when certain parts of various action strips occur, you can add local markers to the actions, and then use these markers as guides when lining up the strips to time them. Another example is for syncing when footsteps occur.
- Use a dropdown for selecting which type of FModifier gets created, bringing this more in line with Constraints (35a089d)
- The properties-region operators for editing FModifiers by default operate on the active data (FCurve/NLA Strip) only. However, they also have new options which allow them to operate on all selected data instead. (344c17f, c97b0b1)
- There's now a setting to control what type of keyframes will be created when inserting new keyframes (570fbba).
This is the new dropdown located between the AutoKeying and KeyingSet widgets on the timeline header.
- There are now a set of dynamically-generated preview icons for each keyframe type. These are visible in the "Keyframe Type" lists (e.g. R in the Dope Sheet, and the keyframe type selector), and will update automatically when the theme colours change. (6bf9aa3)
- Added a new type of keyframe - "Moving Hold" (f3b3eb7).
As the name suggests, this keyframe type is for tagging which keyframes form the start/end of a moving hold. Since "long keyframes" (i.e. the bars shown between keyframes when there is no motion between a pair of keyframes) are not shown if there is any change in the F-Curve value, it was previously hard to keep track of where these were. However, now with this new keyframe type, not only can you tag the keyframes as being a part of a moving hold, but tagging a pair of adjacent keyframes will also draw a long keyframe between them, helping you spot where the moving holds are too.
- When using a bone from another armature as the target for a constraint, Ctrl⇧ ShiftC will now look inside the non-active armature and use its active bone, provided that armature is in Pose Mode. This makes it easier to set up cross-armature constraints (de6064eab1)
Object Delta Transforms
- Added new operators in the Apply CtrlA menu for applying the current transform (All Transforms, or Location, Rotation, Scale only) to the Delta Transforms (2ba2860). In effect, this has some similarities to a "Freeze Transforms" tool, for use when you cannot actually change the geometry (e.g. on an Empty)
- AltG, AltR, AltS will now only clear the normal transforms
- Use Alt⇧ ShiftG, Alt⇧ ShiftR, and Alt⇧ ShiftS to clear both the normal and delta transforms
- The "Animated Transforms to Deltas" (which does a similar job, except it adjusts all existing animation data instead of the current transform) has also been moved to the Apply menu (it was in the Transform menu instead)