feat(client): follow-facing — body commits to path, mouse drives layered head/torso look-at (T-1088)

During an RMB path-follow the body yaw locks to the leg direction (rig
commit_body_to_motion, from interpolated velocity — immune to SetFacing
interleaving between throttled steps). The mouse instead drives a layered
look-at: LookAtModifier3D pair on Head (±70°) + spine_02 (±30° torso twist
for looking far lateral/behind — past their sum the character physically
cannot look further without turning). Forward axis measured from the
armature rest pose (+Z), not guessed. Influence fades in/out on follow
start/end. Pure client presentation per D-249; SetFacing still rides the
wire, so the server vision cone follows the mouse while walking — the
character looks where the player points.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 20:35:43 +02:00
co-authored by Claude Fable 5
parent 72f88dae1d
commit cb6b39331d
7 changed files with 180 additions and 4 deletions
@@ -121,6 +121,17 @@ const TINTS := {
## Ground-plane deadzone (m) for the mouse facing provider — mirrors the 2D jitter guard.
const MOUSE_AIM_DEADZONE_M := 0.1
# -- Head/torso look-at during path-follow (T-1088 follow-facing) ---------------------
## Head bone yaw limit (deg) for the mouse look-at while the body walks a path.
const HEAD_LOOK_HEAD_LIMIT_DEG := 70.0
## Torso (spine_02) contribution limit (deg) — engages when looking far lateral/behind.
const HEAD_LOOK_TORSO_LIMIT_DEG := 30.0
## Look-at influence fade in/out (s) on follow start/end.
const HEAD_LOOK_FADE_S := 0.25
## Aim point height above the mouse ground hit (m) — roughly eye level.
const HEAD_LOOK_EYE_HEIGHT_M := 1.55
# -- Path preview / click-to-move (T-1088 live-session item 2) ------------------------
## Move-here marker fill on the hovered destination subtile — distinct accent,