Cockpit: punch patches ARE the windows -- all 8 mechs authentic (task #55)
Resolved the non-Madcat blocked views. Rendering every *_COP shell offline from its mech's AUTHORED eye (SKL [jointeye] translation -- incl. the Thor's +1.13 offset cockpit) with faces coloured by punch flag showed the answer plainly: the PUNCH-tagged patches sit exactly over the window apertures in all 8 mechs. On these texture-less black-diffuse shells dpl_Punchize renders the tagged geogroup as holes -- the punch patches are the transparent WINDSHIELDS, and the visible frame is only the non-punch geometry. The loader now drops the punch batches of _cop meshes (bgfload finish(); BT_COP_KEEPPUNCH=1 keeps them for diagnosis). In-game sweep on pure defaults: - madcat: the dark dome frame (matches gameplay footage) - thor / owens / sunder: authentic brace/dash/pillar remnants - bhk1 / loki / vulture / avatar: authentically FRAMELESS (all-punch canopies -- the pod showed no frame for those mechs) (An early-session test that "disproved" drop-punch ran with the broken pre-inverse eye; its conclusion was wrong and is corrected in the KB.) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
946323b696
commit
8057c37e5b
+11
-5
@@ -87,11 +87,17 @@ inverse(eyeWorld)`. No LookAt anywhere.
|
|||||||
(pos=(0.1,0.15,0.1), neg=(−0.1,−0.15,−0.1) — same for madcat AND bhk1) → the eye equilibrium
|
(pos=(0.1,0.15,0.1), neg=(−0.1,−0.15,−0.1) — same for madcat AND bhk1) → the eye equilibrium
|
||||||
is (0,0,0) and the clamps limit gyro motion to ±0.1..0.15u. The gyro is a BOUNCE/sway
|
is (0,0,0) and the clamps limit gyro motion to ±0.1..0.15u. The gyro is a BOUNCE/sway
|
||||||
mechanism, NOT a large steady offset. The authentic resting eye = raw baseOffset for every mech.
|
mechanism, NOT a large steady offset. The authentic resting eye = raw baseOffset for every mech.
|
||||||
- **bhk1/owens/sunder/vulture (+ loki partial): STILL blocked at rest** — cause now known NOT to
|
- **RESOLVED (2026-07-11): the PUNCH patches are the transparent WINDOWS.** Rendering every
|
||||||
be the gyro. `BT_EYE_FWD=0.6` still reveals the correct bhk1 view, so the eye-vs-canopy
|
shell OFFLINE from its mech's AUTHORED eye (scratchpad/cop_eyeview.py, faces coloured by punch
|
||||||
relationship is off by ~0.6u for that group by some OTHER mechanism (candidates: a joint in the
|
flag) showed the punch panes sitting exactly over the window apertures in all 8 mechs, with the
|
||||||
siteeyepoint parent chain we don't pose, per-mech skeleton rest differences, or the canopy
|
visible frame = ONLY the non-punch geometry. The loader now DROPS the punch batches of `_cop`
|
||||||
authored for a view state we don't replicate). OPEN.
|
meshes (bgfload finish(), `BT_COP_KEEPPUNCH=1` keeps them for diag). In-game sweep on pure
|
||||||
|
defaults, all 8 mechs [T2]: **madcat** = the dark dome frame (matches footage); **thor** =
|
||||||
|
floating brace remnants (authentic; its frame bits are the small non-punch patches); **owens** =
|
||||||
|
dash strip; **sunder** = two side pillars; **bhk1/loki/vulture/avatar** = authentically
|
||||||
|
FRAMELESS (all-punch canopies — the pod showed no frame for those mechs). NOTE: an
|
||||||
|
early-session in-game test "disproving" drop-punch ran with the broken pre-inverse eye — its
|
||||||
|
conclusion was wrong and cost a detour; with the authentic eye the drop is plainly right.
|
||||||
- **Hit-bounce: LIVE and verified [T2] (2026-07-11).** The damage→gyro fan-out **FUN_004b2980**
|
- **Hit-bounce: LIVE and verified [T2] (2026-07-11).** The damage→gyro fan-out **FUN_004b2980**
|
||||||
was re-disassembled byte-exact from the raw image (capstone; scratchpad/dis_4b2980.py) and
|
was re-disassembled byte-exact from the raw image (capstone; scratchpad/dis_4b2980.py) and
|
||||||
reconstructed as `Gyroscope::ApplyDamageResponse` (gyro.cpp): zero-damage + Collision(0) no-op;
|
reconstructed as `Gyroscope::ApplyDamageResponse` (gyro.cpp): zero-damage + Collision(0) no-op;
|
||||||
|
|||||||
@@ -74,11 +74,11 @@ authentic path scoped.
|
|||||||
inverse view) + single-sided inward-wound lattice + dark `softer` ramp = the dark frame with the
|
inverse view) + single-sided inward-wound lattice + dark `softer` ramp = the dark frame with the
|
||||||
world through the openings, verified vs gameplay footage; shows by DEFAULT now
|
world through the openings, verified vs gameplay footage; shows by DEFAULT now
|
||||||
(`BT_HIDE_COCKPIT=1` hides). NOTE the old claim here ("canopy windows are punch texels") was
|
(`BT_HIDE_COCKPIT=1` hides). NOTE the old claim here ("canopy windows are punch texels") was
|
||||||
WRONG — the shell has no texture; the openings are geometry. STILL OPEN: the non-Madcat mechs'
|
WRONG — the shell has no texture; the openings are geometry. ✅ RESOLVED (2026-07-11): the
|
||||||
views render dark/blocked — NOT an eye-placement bug (disproven: the gyro equilibrium is zero,
|
PUNCH patches are the transparent WINDOWS (dropped by the loader); the frame = the non-punch
|
||||||
and the per-mech eye placement is verified EXACT against the SKL jointeye offsets, incl. the
|
geometry only. All 8 mechs render their authentic canopy — madcat's dome, thor/owens/sunder's
|
||||||
Thor's authored +1.13 lateral offset cockpit — [[cockpit-view]] §offset-cockpits). It is a
|
brace/dash remnants, and the authentically FRAMELESS bhk1/loki/vulture/avatar. Eye placement
|
||||||
canopy-RENDER question (how those shells read from inside). (b) the **3D marker
|
verified exact per-mech incl. Thor's +1.13 offset cockpit ([[cockpit-view]]). (b) the **3D marker
|
||||||
chain** ([0x31c]/[0x320] dpl objects + the PNAME1-8.bgf player-name meshes over the locked
|
chain** ([0x31c]/[0x320] dpl objects + the PNAME1-8.bgf player-name meshes over the locked
|
||||||
target — matters for MP). (c) the compass rotation SIGN is derived-not-verified [T3] (turn
|
target — matters for MP). (c) the compass rotation SIGN is derived-not-verified [T3] (turn
|
||||||
left → the stem should swing right; flip the sin sign in Draw if footage disagrees).
|
left → the stem should swing right; flip the sin sign in Draw if footage disagrees).
|
||||||
|
|||||||
@@ -1075,6 +1075,32 @@ struct Builder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void finish() {
|
void finish() {
|
||||||
|
// COCKPIT WINDSHIELD = THE PUNCH PATCHES (task #55, resolved 2026-07-11): on the
|
||||||
|
// texture-less black-diffuse canopy shells, dpl_Punchize renders the tagged
|
||||||
|
// geogroup as HOLES -- the punch patches are the transparent WINDOWS, and the
|
||||||
|
// visible frame is ONLY the non-punch geometry. Verified by rendering every
|
||||||
|
// shell from its mech's AUTHORED eye (SKL [jointeye] translation, incl. the
|
||||||
|
// Thor's +1.13 offset cockpit): the punch panes sit exactly over the window
|
||||||
|
// apertures in all 8 mechs; dropping them yields the Madcat's dome frame
|
||||||
|
// (non-punch) and the authentically FRAMELESS views of the all-punch shells
|
||||||
|
// (bhk1/loki/vulture/avatar -- the pod showed no canopy for those). (An
|
||||||
|
// early-session in-game test that "disproved" drop-punch ran with the broken
|
||||||
|
// pre-inverse eye; its conclusion was wrong.) BT_COP_KEEPPUNCH=1 keeps the
|
||||||
|
// punch panes (diagnostic).
|
||||||
|
if (meshIsCop) {
|
||||||
|
static int s_keepPunch = -1;
|
||||||
|
if (s_keepPunch < 0) { const char* e = getenv("BT_COP_KEEPPUNCH"); s_keepPunch = (e && e[0] != '0') ? 1 : 0; }
|
||||||
|
if (!s_keepPunch) {
|
||||||
|
std::vector<BgfDrawBatch> kept;
|
||||||
|
kept.reserve(mesh->batches.size());
|
||||||
|
for (const BgfDrawBatch& b : mesh->batches) {
|
||||||
|
if (b.punch && b.hasRamp && b.texPath.empty())
|
||||||
|
continue; // window pane -> transparent
|
||||||
|
kept.push_back(b);
|
||||||
|
}
|
||||||
|
mesh->batches.swap(kept);
|
||||||
|
}
|
||||||
|
}
|
||||||
// COCKPIT CANOPY WINDING ORIENTATION (task #55): the *_cop shells are OPEN strut
|
// COCKPIT CANOPY WINDING ORIENTATION (task #55): the *_cop shells are OPEN strut
|
||||||
// lattices (38-59% boundary edges, all 12 mechs) drawn SINGLE-SIDED (emitTri) so
|
// lattices (38-59% boundary edges, all 12 mechs) drawn SINGLE-SIDED (emitTri) so
|
||||||
// the openings show the world. But the authored winding is NOT globally
|
// the openings show the world. But the authored winding is NOT globally
|
||||||
@@ -1083,9 +1109,7 @@ struct Builder {
|
|||||||
// struts and the other half's BACKS (the solid-box look on BLX/OWX/VUX...).
|
// struts and the other half's BACKS (the solid-box look on BLX/OWX/VUX...).
|
||||||
// Data-driven fix: orient every canopy face INWARD, toward the mesh interior
|
// Data-driven fix: orient every canopy face INWARD, toward the mesh interior
|
||||||
// where the pilot's eye sits, so the whole shell reads correctly from inside
|
// where the pilot's eye sits, so the whole shell reads correctly from inside
|
||||||
// regardless of per-patch mirroring. (An earlier pass DROPPED the PUNCH-tagged
|
// regardless of per-patch mirroring. BT_COP_FLIP=1 flips the final orientation
|
||||||
// batches believing them the windshield glass -- verified wrong in-game: the
|
|
||||||
// punch patch IS the visible frame.) BT_COP_FLIP=1 flips the final orientation
|
|
||||||
// (diagnostic); BT_COP_DOUBLE=1 disables single-siding entirely (emitTri).
|
// (diagnostic); BT_COP_DOUBLE=1 disables single-siding entirely (emitTri).
|
||||||
if (meshIsCop) {
|
if (meshIsCop) {
|
||||||
static int s_flip = -1, s_dbl = -1;
|
static int s_flip = -1, s_dbl = -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user