BT410 5.3.67: pose_chase was upside down -- harness bug, wire exonerated

The operator caught it: the 5.3.65 image showed the mech hanging from its own
ground-shadow plate (-y is up in the bridge world).  The follow-up pinned down
what was and wasn't wrong, and the reconstruction survives untouched.

Right, by three independent wire-level proofs: MAD.SKL offsets are a coherent
Y-up model (hip +5.29, knees descending, torso ascending -- anatomical only
read +Y-up); the BGF vertex extents agree (foot meshes extend -1.0 below their
ankle to the sole, torso +3.8 up to the missile pods); and the SHIPPED pod's
wire carries the same signs (hip +6.21, knees negative, vehicle root a pure
yaw with det +1).  Our wire and shipped's are convention-identical -- no flip
exists between game and board in either game.

Wrong: the ad-hoc chase camera.  It borrowed the aerial up-hint from the
calibrated live-bridge world (where -y is up) and applied it to a raw
scene-space render of Y-up wire data; the symmetric checkerboard ground
disguised the inversion.  The shipped capture rendered upside-down through the
same harness, which is what cleared the wire.

Both conventions now documented in the roadmap: wire/scene space is Y-up in
both games; the live bridge presents -y-up via its calibrated mirror family
(FP_RIGHT_SIGN / CAGE_TWIST_SIGN, COCKPIT-CAGE-NOTES.md).

Tooling: pose_probe.py replaces the throwaway harness (updir=+1 scene space
default, -1 for the bridge sense).  pose_chase_upfixed.png is the corrected
milestone image: the MadCat right side up -- chicken-walker legs, purple knee
actuators, feet planted, shadow under the feet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-29 10:41:34 -05:00
co-authored by Claude Fable 5
parent 1233a1d5f6
commit f30acc6a94
3 changed files with 150 additions and 0 deletions
@@ -1352,3 +1352,44 @@ ISR and LBE4ControlsManager are archive code, but the mapper (BT/MECHMPPR.CPP)
and the entire event/receiver plumbing (MUNGA/APP.CPP, RECEIVER.CPP) are ours.
RIO_TAP produced no file on this path -- byte-level dialogue comparison needs
a different tap point.
--------------------------------------------------------------------------------
CORRECTION FROM THE OPERATOR: pose_chase.png WAS UPSIDE DOWN -- HARNESS, NOT WIRE
--------------------------------------------------------------------------------
The operator caught it immediately ("-y is up here"): the 5.3.65 milestone
image showed the mech hanging from its own ground-shadow plate. The follow-up
established exactly what was and wasn't wrong, and the reconstruction survives
untouched:
WHAT IS RIGHT (three independent proofs, wire-level):
* MAD.SKL offsets are a coherent Y-UP model: hip +5.29 above ground, thigh
+0.24, knee -1.97 and ankle -2.39 descending, torso/missile mounts/eye
ascending. Anatomically consistent ONLY read +Y-up.
* The BGF vertex extents agree with the offsets: foot meshes extend -1.0
below their ankle joint (the sole), toe meshes -0.65 below their joints,
the torso mesh +3.8 above shakey (to the missile-pod tops), thigh meshes
reach down past the knee joint. One space, both data families.
* THE SHIPPED POD'S WIRE CARRIES THE SAME SIGNS. bt4.raw.bin's mech
skeleton: hip node (0,+6.21,0), knees negative, paired thighs +/-1.71,
and the vehicle root (df1) is a PURE YAW (+1 on the Y diagonal, det +1) at
its world position -- no flip anywhere between game and board, in either
game. Our wire and shipped's are convention-identical.
WHAT WAS WRONG: the ad-hoc chase camera in the 5.3.65 render. It borrowed
fifobridge's aerial up-hint ([0,-1,0], correct for the calibrated LIVE-bridge
world where -y is up) and applied it to a raw scene-space render of Y-up wire
data -- screen-up landed on model-down, mech hangs from its shadow, and the
symmetric checkerboard ground disguised it. The shipped capture rendered
upside-down through the same harness, which is what cleared the wire.
THE TWO CONVENTIONS, so nobody trips on this again:
* WIRE / scene space: Y-UP. Both games, models and skeletons alike.
* LIVE bridge presentation: -y is up. The calibrated path (fp_cam, the
mirrored det -1 root basis, FP_RIGHT_SIGN / CAGE_TWIST_SIGN family) maps
between them; COCKPIT-CAGE-NOTES.md documents that machinery.
TOOLING: pose_probe.py replaces the throwaway harness -- updir=+1 default
(scene space), updir=-1 reproduces the bridge-world sense. Verified:
pose_chase_upfixed.png shows the MadCat right side up -- chicken-walker legs,
purple knee actuators, feet planted, shadow quad UNDER the feet, weapon-pod
arms. The milestone stands, now with the correct picture.