An addon for Blender 2.8+ that runs
Push Down on all animations, creating NLA tracks for each.
This is useful if you have an object with many animations, and you need to convert them all to NLA tracks, say for GLTF export for a game engine. Godot Engine currently requires animations baked as NLA tracks.
Install PushDownAll.py into your script directory. e.g. “C:\Users\
In Blender, select Edit, Preferences, Add-ons. Find “Animation: Push Down All” and enable it.
- Open the
Dope Sheetand switch to the
Action Editor. You’ll also want to open
Nonlinear Animationin another window.
- Select your object in the outliner. Choose the node which is the parent of
- In the Dope Sheet window, press
Nfor the sidebar and you should see the
Push Down Allpanel.
- If there are no NLA channels (i.e. the NLA window is completely empty), you may need to select one of the animations, which will create an NLA channel. The addon should alert you as below. Select the animation from the middle button on the header bar.
Exclude: You can enter a regular expression (Python
search()) in the exclude box to skip animations. e.g. ‘alk’ or ‘[wW]alk’ would match animations named ‘walk_forward’ and ‘FastWalk’.
Search & Replace: Search takes a regular expression and will replace any matching parts of names with whatever is found in the replace box (including nothing to erase the matching part). e.g. Search: ‘alk’, Replace: ”, will turn the previous animations into ‘w_forward’ and ‘FastW’. This will change the name of the animation, not just the NLA track.
- Finally, click
Push Down Allto get your NLA tracks.
- If you wish to do it again, move your mouse to the NLA window, and press
A, Xto delete all NLA tracks.
Turn on the console (Window -> Toggle System Console). This addon prints the name of every animation it pushes down. Error messages will appear here.
Quick Regex Primer
Really basic searches will work just fine. Regex is for power users. If you are having trouble matching symbols, try prefacing the symbol with a
\. to match a period.
^ = match the beginning
$ = match the end
[a-zA-Z] = match one character,
A-Z. Can also do numbers,
^ as the first character to negate the match.
[^0-9]4 = match 4 characters, none of which are 0-9
. = match any single character
.4 = match any 4 characters
.* = match any number of characters including none
.+ = match at least 1 of any character
\. = match the period
. Use \ before any symbols you want to match like
()$^\.*+ etc. e.g.
| = match anything on the left, or anything on the right. Logical OR.
( ) = container that limits the scope of the logical OR above.
^Key -> Matches
Key only at the beginning of the name
_RM$ -> Matches
_RM only at the end of the name
^Key\..*_RM$ -> Match names that start with
Key., end with
_RM, and have anything or nothing in the middle
^([^K]|Key\.) -> Matches names that either don’t begin with
K, or start with
Key.Apple would match,
Key would not.
Full regex syntax: https://docs.python.org/3/library/re.html