Blender 2.90: Animation & Rigging¶
- Many more properties and data are now overridable (all constraints and modifiers, camera objectdata, etc.).
- Overrides are now duplicated as well when copying an override data-block (e.g. if you select a whole object hierarchy and duplicate it in the 3DView, you will get a new override of the same linked data).
- Python-defined properties and custom properties can also be overridden (as long as they are defined as overridable, and belong to some data that is also overridable).
- Making override of an object or collection from the 3DView now does a complete check of dependencies and overrides everything needed (Note that this will override a lot of data-blocks in typical complex production characters e.g.).
- From the outliner, you can override the hierarchy of linked data-blocks leading to the one you selected. It will also behave similar to the 3DView operation when applied on an object or collection.
- 3DView 'make override' operator has been upgraded:
- No more need to select a 'main' object when overriding an instanced collection (this was not used anymore anyway).
- One can now override a linked, but not object-instanced, collection fro; the 3DView, by selecting one of its objects and calling the operator.
- Overrides can now be reset from the outliner (i.e. all defined override properties are removed, except for those ensuring relationships between IDs, and override data-blocks get reloaded), either individually or as a whole hierarchy.
- Overrides will now be reloaded when their linked library reference are reloaded.
- Matrices with negative scale can now be properly interpolated. This means that it is now possible to use, for example, a Copy Transform constraint and target an object with Scale X=-1, without glitches when you dial down the influence slider. (a5e176a8ed and demo videos in D8048).
- Track to constraint uses -Z as track axis and Y as up-axis by default now (be00902082). That way defaults are appropriate for the main use case of camera tracking.
- Using the scrubbing region to change the current frame only changes the frame, not the cursor (fc59febb1b).
smoothstepfunctions, inspired by GLSL
- The simple expressions subset now includes
Dependency Graph passed to Drivers¶
Drivers can now get to the current dependency graph (for example to get
to the current view layer), via the new
depsgraph variable that is
available to them. This can then be used in the driver expression, and
passed to custom driver functions (as registered in
bpy.app.driver_namespace) if necessary.
Here is an example from T75553,
where a driver function is used to determine whether the current view
layer is named
View Layer 1:
The driver can now use
is_view_layer_1(depsgraph) as its expression.
Note: As a rule of thumb, never use
bpy.context in drivers.
Drivers can be evaluated in multiple contexts at the same time, for
example when Blender is rendering in one window and showing the 3D
viewport in another. In these cases
bpy.context will return the
wrong data half the time. The
depsgraph passed to the driver will
always be correct, though.