Gumroad version updated.
The information and videos in this post are still mostly accurate, however there are multiple differences.
You can find a free beta version very similar to the gumroad version here but definitely not the same.
NLA Additive Animation Layers are built into Blender 2.80 (See this post for details) so this addon is essentially being deprecated. You can still use it with Blender 2.7x but while “some” features will get updated to 2.80, it’s not really the same addon.
(Old free version from videos): or if you don’t want to go to gumroad (29.1 KB)
This script adds functions that automatically fixes new keyframes, to properly work with NLA Blend Types.
(Add / Subtract / Multiply, ie Additive Layers)
Here’s a video example, showing an additive layer.
And this video shows what happens if you try to animate the same way for additive layers, without this addon
if you move the additive strip around, the offset will continue to apply on lower actions:
Note: If you have a lot of selected bones/objects with keyframes, performance may drop, so either deselect them or disable the Add button.
This function will be ran continuously when enabled and any of the selected objects have an active action.
(Because it’s only supposed to run on new keyframes)
The X button attempts to insert a blank keyframe of the selected items (and chain for any bone selected with IK constraint). It will only add keys for items already keyed in the active action.
This is for clearing pose/animation, because Alt+G/R/S will calculate a different value, and not “reset” them (Maybe when official layers are built in).
If you click Bake, a dialog will open, similar to the built-in bake animation operator.
However, if you set your Action Blending type to anything other than “Replace”, a custom bake operation will run, that will apply the animation with keyframes appropriate for the Blend type.
The built-in baker only bakes for Replace, ignoring the Blend mode, making it useless for additive layers.
It also has an option to add bones in the IK chain to your bake, for baking FK chains without having to either bake to every bone in the rig, or select all the bones in the chain.
These buttons are added to the NLA header.
By default, Add is enabled, so you can just enable the script, then forget about it.
If you prefer to have it not run by default, you can change the animation_add_check property’s default value from True to False. or use this (29.1 KB)
What are NLA Animation Layers?
NLA = Non-Linear Animation.
What the NLA Editor does is allow you to re-arrange actions on your objects, in whatever order you want.
You can for example, create several animations for your character (ie, Stand / Walk / Sit / Run / Jump) and have them loop separately
But if you want to have them run in a sequence (ie, Stand >> Run >> Jump >> Sit), if you use the Dopesheet/Graph Editor, you will have to manage a lot of keyframes to get them in order, and you can’t use modifiers to for example, automatically loop anything.
Using the NLA Editor makes it simple to put the animations together, and re-order their timing and locations, without needing to select the individual keyframes.
The way it does this is it combines the keyframes into a single box (strip), that holds the action/animation.
When you re-arrange the time that animations occur, you’re doing it on just one layer.
You determine when one action starts/ends, and when the next start/end.
However, if you want to blend between different animations at the same time (ie. Breathing <> Heavy Breathing <> Deep Breaths),
you will have to either create a new animation based on the result you want,
you can take those different animations and put them on different layers, and blend between them.
This way, you can combine the animations to have a new animation that you can easily tweak.
Additive Animation Layers
The way blender gets the final animation you see on screen is it goes through all the Animation Layers and combine their values together.
There are basically two types of layers:
Replace/Override and Add/Additive.
Replace is the default mode Blender uses for animations.
They way it works is it takes the current animation layer (above), then discards all the lower layers.
Additive layers take previous layers, and add the current layer’s result on top.
Add / Subtract / Multiply
- These 3 modes basically work toward the same goal, for “additive”, except the math they use to get there.
You can use these modes interchangeably for different purposes/results.
Examples/Why Animation Layers:
Basic conversion of an action to the NLA Editor:
Basic manipulation of NLA strips:
Default result of animating on a higher layer:
Default result of animating on an additive layer (without this addon):
Animating WITH this addon:
Blender’s AutoIK and the addon’s X button (reset keyframes):
Add an IK onto an chain, then Bake it to an Additive Layer:
This is what happens if you bake to an Add layer without this addon:
This is what happens if you want to keep the constraint instead of baking, vs bake then removing it:
This is when you Bake to a Replace strip instead of Add
The result is visually the same., however the blending mode still applies, so you can move and layer the would-be result of the bake.
You can add constraints to an item, then bake the animation on an additive layer, and remove the constraint.
This will apply the offsets from the constraint, without needing to keep the constraint.
For example, you can lock a bone’s Global Rotation for a period of time, then go back to animating normally, in the same Additive layer, without having to switch to new actions or keep the constraint (and animate it).
If you bake an additive layer, you can duplicate the strip, to double the effect of the offset.
If you switch the duplicated strip to a different mode (ie Add >> Subtract), you can “reduce” the offset.
You can also change the strip’s influence, to lower the amount of reduction/offset.
Note: this is mostly theoretical, I haven’t done extensive testing to verify amount of usefulness for this method.
Feel free to experiment and share other uses / methods. (especially for multiply/subtract)