#91 thor black rectangle: it's the OWN missile pod -- blakskn now material-keyed
Three testers reported a black rectangle swaying with the footsteps in the thor cockpit (Summoner = the thr1 label, same THX canopy -- no isolation). Decode: the inside view is a PER-MECH AUTHORED type-A set, not the cop alone (no fallback in EntitySegment::GetVideoObjectName -- authored data): madcat/vulture/bhk1 = cop; sunder/loki/avatar = +tor; thor = +tor +MSL (the shoulder pod, the reported rectangle); owens = +both legs +tshd. The pod/leg pilot-facing surfaces use the SAME "<pfx>skin:blakskn_dz_*" interior-structure material as the canopy frame, but the unlit frame constant was keyed on the _cop FILENAME -- identical material rendered (0.13,0.12,0.15) on the canopy and pure (0,0,0) on the pod/legs ([matlog]: owx_cop blakskn vcol=FF211F26 vs owx_lule vcol=FF000000). Fix (bgfload.cpp): the frame-constant treatment keys on meshIsCop OR material contains "skin:blakskn_dz_". mechfx:blakskn_mtl (tshd shadow quads) deliberately excluded. Verified: zero pure-black px in the lower view band across walk captures, the pod plate renders frame-toned and blends with the bar at rest (the reported anomaly dissolves), owens legs read as coherent structure, canopy/terrain un-regressed. Diags added: BT_MAT_LOG=<stem> per-batch material routing dump (bgfload), BT_HIDE_INSIDE_SEG=<substr> inside-mesh hide (btl4vid), [view] per-segment inside-roster names. KB: cockpit-view.md exactly-one claim corrected + the #91 section; bench scratchpad/night11/thorrect.sh. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
dcd8583449
commit
6180a44c64
@@ -3193,6 +3193,16 @@ int
|
||||
if (inside && nm != NULL && strstr((const char *)*nm, "_cop") != NULL
|
||||
&& getenv("BT_HIDE_COCKPIT"))
|
||||
nm = NULL;
|
||||
// #91 attribution diag: BT_HIDE_INSIDE_SEG=<substr> hides any OTHER
|
||||
// inside-view (type-A) mesh whose name contains the substring -- the
|
||||
// thor authors THREE type-A meshes (cop + thx_tor + thx_msl) and one
|
||||
// of the extras is the reported black rectangle.
|
||||
{
|
||||
const char *hide = getenv("BT_HIDE_INSIDE_SEG");
|
||||
if (inside && nm != NULL && hide && *hide
|
||||
&& strstr((const char *)*nm, hide) != NULL)
|
||||
nm = NULL;
|
||||
}
|
||||
d3d_OBJECT *obj = NULL;
|
||||
if (nm != NULL)
|
||||
{
|
||||
@@ -3224,6 +3234,14 @@ int
|
||||
else
|
||||
render_tree.segPick.erase(slot);
|
||||
if (obj) ++shown; else ++hidden;
|
||||
// Inside view: NAME what renders. The KB says the inside view is the
|
||||
// _cop alone; any OTHER type-A mesh here is a black-material stowaway
|
||||
// (the #91 rectangle investigation) -- keep the roster visible.
|
||||
if (inside && obj != NULL)
|
||||
DEBUG_STREAM << "[view] shown seg " << slot << ": "
|
||||
<< (const char *)segment->GetName()
|
||||
<< " mesh " << (nm ? (const char *)*nm : "?")
|
||||
<< "\n" << std::flush;
|
||||
}
|
||||
// This reloaded every segment mesh, so every armour-damage binding is stale.
|
||||
BindArmourDamage(viewpoint, render_tree);
|
||||
|
||||
Reference in New Issue
Block a user