Sunday, 02 August 2026devblog

Spot the difference: baking root yaw

Two drag-back turns. One is fixed, one is not, and it took me a week to see it. The retarget never brought the root bone rotation across, so the capsule was snapping to catch up.

Day 43SPOT THEDIFFERENCE

Two drag-back turns. One of them is fixed. One of them is not. Can you spot the difference? Honestly, it took me a week.

The answer: watch the hips at the very end of the broken one. The whole body twitches back toward where he was facing before the turn, then flicks round again.

Why

My turn animations were retargeted from another skeleton, and the retarget never brought the root bone's rotation with it. So the turn's 180 degrees lived entirely in the pose. The mesh spun, but the collision capsule underneath never moved.

That meant snapping the capsule to the new heading the instant the animation ended: a discrete jump standing in for rotation that should have been continuous. Land it a frame late and you see the old facing for a frame. Land it early and the pose and the capsule are both rotated and he faces completely the wrong way. It also meant blend-out had to stay at zero, because any crossfade holds the montage's rotated pose while the capsule has already snapped. So every turn hard-cut into the run. No settle, no follow-through.

The fix

An Animation Modifier, editor tooling that rewrites the animation asset itself. Every frame it reads the pelvis's yaw, writes it into the root bone's rotation track, and takes the same yaw back out of the pelvis. The visible pose is bit-for-bit identical, but the rotation is now real root motion. The capsule turns through the animation instead of catching up at the end. No snap to schedule, and blend-out is a free choice again, so turns finally settle into the run instead of cutting to it.

Yaw only, by the way. The retargeter's own "rotate with pelvis" option copies the full pelvis rotation including pitch and roll, and your character swims. A heading is yaw.

Shipped: root-yaw Animation Modifier · turns blend into the run