Head and weapon drift in the middle of a BlendSpace2D

Godot Version

4.7.1 stable

Question

I’m making a third-person shooter like modern Resident Evil and have a blending problem with my aiming locomotion.

I have four aim walk clips (aim_walk_fwd, aim_walk_back, aim_walk_left, aim_walk_right) in a BlendSpace2D inside an AnimationTree. Each clip looks correct when played alone, and the pose is also correct when the blend position sits exactly on a point. Between points, though, the spine bends and the head and weapon drift out of place in rhythm with the walk cycle. The effect gets stronger the closer the blend position is to (0, 0), and it’s most noticeable when going from left to right. None of the clips have any spine or head movement keyed.

The character uses a Rigify rig exported from Blender as glTF.

What I’ve tried:

  • All four sync modes on the BlendSpace2D. No change.
  • Originally I had an aim idle point at (0, 0), but it caused a twitch, so I removed it. With the idle point in place, the head drift started around (0, -0.5), halfway between idle and the left walk. After removing it, the drift moved to (0, 0), where the walk clips are mixed evenly.
  • Splitting into two BlendSpace1Ds (fwd/back and left/right). Same drift at the midpoint.
  • Skipping blend spaces entirely: I used plain Animation nodes for each clip and blended fwd/back and left/right with transition nodes. At a 0.5 mix between left and right, the head still drifts.
  • Checking the clips in Blender. The head and spine are the same in all four.
  • Re-exporting with “Export Deformation Bones Only”. Same result.

Before switching to an AnimationTree, I used anim.play("aim_walk_left", 0.2) in code and never saw this, though that only mixes clips for 0.2 seconds.

Is this expected with Godot’s blending on a rig like this, or is something wrong with my animations or export? Any ideas on what to check would be appreciated.

Here’s a video showing my issue: issue