Quick answer: Connect the State Machine output to the Output Pose, write transition variables in BlueprintUpdateAnimation via Try Get Pawn Owner + cast, and confirm the AnimBP’s skeleton matches the SkeletalMesh assigned on the Pawn. State machines look correct but produce no motion if any of these is missing.

You wire a state machine, hit Compile, hit Play. Character T-poses. Or the locomotion plays Idle forever no matter how fast the player runs. The state machine looks fine in isolation but the anim blueprint is failing one of three integration checks.

The Symptom

State machine in the AnimGraph. Idle and Run states with a transition rule based on Speed > 10. In play, character is stuck on Idle, or T-poses, or animates wrong even when Speed clearly changes.

The Three Required Pieces

1. State Machine output connected to Output Pose. Open the AnimGraph. Drag from your State Machine node’s output to the Output Pose’s Result pin. Without this, you have a state machine that runs but its results are discarded.

2. Transition variables written in BlueprintUpdateAnimation. Event Graph → Event Blueprint Update Animation. Get Pawn Owner with Try Get Pawn Owner; cast to your character class; read Velocity / IsAirborne / etc; write to AnimBP variables.

Event Blueprint Update Animation (DeltaTime)
  -> Try Get Pawn Owner -> Cast to BP_PlayerCharacter
       ON_SUCCESS:
         -> Get Velocity -> VectorLength -> SET Speed
         -> GetMovementComponent -> IsFalling -> SET IsAirborne
       ON_FAIL:
         // Skip; Pawn not yet possessing the mesh

If the cast fails on the first frame (Pawn isn’t possessed yet), the variables stay at their defaults. That’s usually fine because the next tick succeeds — but log it once if you suspect issues.

3. Skeleton compatibility. The AnimBP is bound to a specific Skeleton asset. The SkeletalMesh you assign to the Pawn’s SkeletalMeshComponent must use that same Skeleton (or one marked Compatible Skeletons). A mismatch silently produces a T-pose.

The Fix

Open the AnimBP. Click Class Settings → Target Skeleton; note the asset. Open the SkeletalMeshComponent on your Pawn; check Skeletal Mesh Asset; open it; verify Skeleton matches. If not, either change the mesh or open the new mesh’s Skeleton and add the AnimBP’s Skeleton as Compatible.

Diagnosing the State Machine

Open the AnimBP. Hit Play in PIE. Click the eye icon next to the AnimBP debug filter and pick the live character. The state machine highlights the active state in green. Watch the bottom — transition rules show their boolean result live.

If a transition is gating on a variable that’s always 0, you know the BlueprintUpdateAnimation chain isn’t writing it.

Fast Path Warnings

Compile log shows “Fast Path: Missing” for some transitions. This is a perf warning, not a correctness bug — but it sometimes correlates with mistakes. Fast Path requires a single comparison of one variable to a constant. If your rule does math (Speed * Multiplier > Threshold), Fast Path can’t apply. Simplify the rule by precomputing the value in BlueprintUpdateAnimation.

Verifying

Run PIE. Press W to move. Speed should rise above 10. Transition Idle → Run should fire visibly. State machine highlight should hop. If not, debug the variable in the AnimBP debug panel and trace upward.

“State machine wired to output. Variables written every tick. Skeleton matches. Transitions evaluate.”

Related Issues

For T-pose on play, see T-pose on play. For animation blending choppy, see BlendSpace blending.

Output. Variables. Skeleton. Transitions fire.