UE5 Animation Blueprint: state machines, blend spaces, slots
By the Cosindra team · Updated August 7, 2026
An Animation Blueprint decides which pose a skeletal mesh is in this frame. It has two halves that behave nothing alike: an Event Graph that runs like normal Blueprint and computes values, and an Anim Graph that is a pose pipeline flowing into a final output.
This guide covers what belongs in each half, when to reach for a blend space versus a state machine, what slots are actually for, and the handful of reasons a character renders as a T-pose.
Two graphs, two jobs
The Event Graph is where you gather information: Event Blueprint Update Animation fires each frame, you read the owning pawn, and you store Speed, Direction, IsFalling and IsCrouched as variables on the Animation Blueprint.
The Anim Graph consumes those variables and never computes them. Poses flow left to right and end at the Output Pose node. Keeping the split clean is what makes an Animation Blueprint readable — logic on one side, blending on the other.
Blend space or state machine?
They solve different problems and a locomotion setup normally uses both. A blend space interpolates between animations along one or two continuous axes — Speed from 0 to 600 blending Idle, Walk and Run into each other with no visible switch point. A state machine picks between discrete states with explicit transitions and conditions — grounded, jumping, falling, landing.
The usual arrangement is a state machine whose Grounded state contains a blend space. The machine answers "what kind of thing is the character doing", the blend space answers "how fast" within that.
| Use | When | Driven by |
|---|---|---|
| Blend Space 1D | Continuous change along one axis | Speed |
| Blend Space 2D | Continuous change along two axes | Speed and Direction (strafing) |
| State Machine | Discrete modes with transitions | Bools like IsFalling, IsCrouched |
| Slot | One-off animation played on demand | Montages, from gameplay code |
What slots are for
A slot is a hole in the Anim Graph where gameplay can inject an animation at runtime. Attacks, emotes, reloads and hit reactions are montages played into a slot rather than states in the machine — you do not want a state and two transitions for every attack in the game.
A slot node sits in the pose chain and passes the underlying pose through untouched until a montage plays into it. Adding one early costs nothing and saves rebuilding the graph the first time you need a montage.
The editor calls that build it
The order follows the dependency chain: the blend space must exist before a state can contain it, and states must exist before transitions can connect them.
| # | Tool | What it does |
|---|---|---|
| 1 | create_anim_blueprint | Creates the Animation Blueprint against a skeleton |
| 2 | create_blend_space | Builds the locomotion blend space and its axis |
| 3 | add_anim_state_machine | Adds the state machine to the Anim Graph |
| 4 | add_anim_state | Adds states — Grounded, Jump, Fall, Land |
| 5 | add_blend_space_to_state | Places the blend space inside the Grounded state |
| 6 | add_anim_transition | Connects states with their conditions |
| 7 | add_anim_slot | Adds the montage slot to the pose chain |
| 8 | get_anim_blueprint_info | Reads back the assembled graph to check it |
Why your character is in T-pose
T-pose means the mesh is rendering its reference pose because nothing supplied a better one. Four causes cover nearly all of it: the Animation Blueprint is not assigned as the mesh’s Anim Class; the state machine output is not connected to the Output Pose node; the variables driving transitions are never updated because Try Get Pawn Owner returned null and the Event Graph silently did nothing; or the animations were imported against a different skeleton than the one the Animation Blueprint targets.
That last one is the expensive mistake, because it looks like an animation problem and is actually an import problem. If your character came from Mixamo or a generator, getting it onto the UE5 Manny-compatible skeleton first is what makes every stock animation just work.
Put an AI copilot inside your editor
The free Cosindra desktop app connects to your UE 5.7/5.8 project — the assistant works in your open editor, and what you generate with the web tools applies straight into it. Windows & macOS.
Download CosindraFrequently asked questions
Why is my UE5 character stuck in T-pose?
The mesh is falling back to its reference pose. Check four things in order: the Animation Blueprint is set as the skeletal mesh component’s Anim Class; the state machine actually connects to the Output Pose node in the Anim Graph; the variables your transitions read are being updated in Event Blueprint Update Animation (a null from Try Get Pawn Owner leaves them all at zero and no transition ever fires); and the animations share the same skeleton as the Animation Blueprint. A skeleton mismatch is the one that looks like something else.
Do I put the blend space inside a state or in the Anim Graph directly?
Inside a state, in almost every real setup. The blend space handles continuous variation — how fast the character is moving — while the state machine handles discrete modes like grounded, jumping and falling. Wiring a blend space straight into the Output Pose works for a character that only ever runs around on the ground, and stops working the moment you add a jump.
Where should Speed and Direction be calculated?
In the Event Graph, on Event Blueprint Update Animation, and stored as variables the Anim Graph reads. Speed is normally the owning pawn’s velocity length, and Direction comes from the Calculate Direction node using velocity and actor rotation. Keeping the maths in the Event Graph and the blending in the Anim Graph is the separation the whole asset is designed around — computing values inside the Anim Graph works but scatters your logic across the thing that is meant to be a pose pipeline.