Skip to content
← Back to Blog 3d-modeling

Blender to Godot 4: The Complete Skeletal Animation Export Guide

By BitSoul3D5 min read531 views

Skeletal animation in Blender is straightforward—until you try to export it to Godot 4 and your character stands in a T-pose wondering what went wrong. The Blender-to-Godot pipeline via GLTF/GLB is powerful, but it has sharp edges: action naming conventions, NLA editor setup, rest pose mismatches, and bone roll differences all bite developers who don't know the rules.

Blender to Godot 4: The Complete Skeletal Animation Export Guide

This guide walks you through the complete workflow: armature setup, action management in the NLA editor, shape key export, and GLTF export settings that produce clean, engine-ready assets every time.

Why GLTF/GLB Is the Right Format for Godot 4

Godot 4's importer was rebuilt around GLTF 2.0. Unlike FBX—which requires Godot to run a conversion layer—GLB is parsed natively with full support for skeletal animations, morph targets (shape keys), multiple animations per file, and PBR material properties.

Key advantages over FBX for this pipeline:

FeatureFBXGLB
Native Godot 4 supportPartial (via FBX2glTF)Full
Multiple animationsRequires Actions bakedNLA tracks export cleanly
Shape keys / morph targetsUnreliableFully supported
PBR materialsManual reassign often neededAuto-mapped
File sizeLarger (ASCII option)Compact binary
Open standardNo (Autodesk)Yes (Khronos)

The takeaway: use GLB. FBX is a legacy fallback for pipelines that require it.

Setting Up Your Armature Correctly in Blender

Before animating, your armature needs to follow conventions Godot expects.

Bone roll and axis alignment are the most common source of broken animations. In Blender, select all bones in Edit Mode and run Armature > Bone Roll > Recalculate Roll > Global +X Axis. This aligns bone axes consistently and prevents Godot from interpreting rotations incorrectly.

Rest pose matters. Your mesh's rest pose in Blender becomes the reference frame Godot uses. Never apply a visual pose and call it the rest pose mid-project—this shifts bone transforms and breaks every animation referencing the old rest state.

Naming conventions: Godot 4's Humanoid skeleton retargeting expects bone names like Hips, Spine, LeftUpperArm, etc. (Mixamo/standard naming). If you're building a custom rig, be consistent—Godot 4 also supports SkeletonProfileHumanoid automap if your names are close enough.

Setting Up Your Armature Correctly in Blender — illustrated

Managing Actions in the NLA Editor

This is where most Blender-to-Godot exports break. Blender stores animations as Actions, but the GLTF exporter reads from the NLA (Non-Linear Animation) editor. If your actions aren't pushed to NLA strips, they won't export correctly—or at all.

Workflow for each animation clip:

  1. Create or select your Action in the Action Editor (e.g., char_idle, char_run, char_attack).
  2. In the NLA Editor, click the Push Down button (downward arrow) next to the action. This creates an NLA strip.
  3. Name the strip to match the action—Godot uses the strip name as the AnimationPlayer clip name.
  4. Mute all strips except one when you want to preview/edit a specific action. Unmute all before export.

Critical: Do NOT leave a stashed or active action outside the NLA. The exporter will pick up the currently active action as an additional unnamed clip, causing duplicates in Godot.

# Blender Python: Push all actions to NLA for the active armature
import bpy

obj = bpy.context.object  # Must be the armature
if obj.type == 'ARMATURE':
    for action in bpy.data.actions:
        # Assign action, then push to NLA
        obj.animation_data.action = action
        track = obj.animation_data.nla_tracks.new()
        track.name = action.name
        strip = track.strips.new(action.name, int(action.frame_range[0]), action)
        print(f"Pushed: {action.name}")

Run this script once to batch-push all actions to NLA if you've been working in the Action Editor only.

Exporting Shape Keys (Morph Targets) for Facial Animation

Godot 4 supports morph targets via GLTF, but Blender's export settings need to be correct.

In the GLTF export dialog (File > Export > glTF 2.0):

Shape key animations must be keyframed on the mesh object, not the armature. In Godot, they appear as a separate AnimationPlayer track targeting the MorphTarget properties on the MeshInstance3D.

Exporting Shape Keys (Morph Targets) for Facial Animation — illustrated

GLTF Export Settings Checklist

Use this checklist every time you export for Godot 4:

The single most important setting is Animation Mode: NLA Tracks. Without it, Blender either exports all actions merged or only the active one.

Importing and Using Animations in Godot 4

After importing your GLB, Godot creates an AnimationLibrary resource attached to the scene's AnimationPlayer. Each NLA strip becomes a named animation clip.

# GDScript: Play animation by name from imported GLB
extends CharacterBody3D

@onready var anim_player: AnimationPlayer = $AnimationPlayer

func _ready():
    # List available animations
    for anim_name in anim_player.get_animation_list():
        print(anim_name)  # Should print: char_idle, char_run, char_attack, etc.
    
    anim_player.play("char_idle")

func transition_to(anim_name: String, blend_time: float = 0.2):
    anim_player.play(anim_name, -1, 1.0, false)
    # For blending, use AnimationTree with AnimationStateMachine

For production characters, connect the AnimationPlayer to an AnimationTree with a StateMachine node—this gives you blend trees, transition conditions, and one-shot animations without manually managing playback state in GDScript.

Hosting and Distributing Your Animated Assets

Once your pipeline is solid, keeping assets organized and accessible across your team matters. BitSoul provides hosted 3D asset storage with direct GLB delivery—your animated characters stay version-controlled and shareable without bloating your repository. Whether you're a solo dev iterating fast or a small studio sharing assets across branches, BitSoul keeps your pipeline clean.


The Blender-to-Godot 4 animation pipeline rewards developers who understand how the NLA editor and GLTF exporter interact. Get the armature setup right, push every action to an NLA strip, and use the correct export settings—then your animations arrive in Godot exactly as authored, ready to wire into an AnimationTree and ship.


This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.


Build with real assets: grab the 98-model Character Pack on the BitSoul marketplace and drop them straight into your project.

Tags: characters

Skip the modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 → or start free (2 downloads a month)