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
@@ -1075,6 +1075,32 @@ struct Builder {
|
||||
}
|
||||
|
||||
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
|
||||
// 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
|
||||
@@ -1083,9 +1109,7 @@ struct Builder {
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
// regardless of per-patch mirroring. BT_COP_FLIP=1 flips the final orientation
|
||||
// (diagnostic); BT_COP_DOUBLE=1 disables single-siding entirely (emitTri).
|
||||
if (meshIsCop) {
|
||||
static int s_flip = -1, s_dbl = -1;
|
||||
|
||||
Reference in New Issue
Block a user