revert(render): #113 - un-apply the DrawingBSP poly filter (door regression); keep helper + dat pins
User gate 2026-06-11: the filter (e46d3d9) removed the phantom staircase everywhere (verified) but DOORS disappeared across Holtburg - the naive PosNode/NegNode walk evidently misses polygons some models reference another way. Doors > phantom stairs: filter application removed; the CollectDrawingBspPolygonIds helper and the dat-fact tests (hall orphans 0+1, cottage 0..7) stay as apparatus for the holistic building-render port. First diagnostic for re-landing: run the DrawingBSP histogram on a door GfxObj. See docs/research/2026-06-11-building-render-holistic-port-handoff.md. Branch state after this commit: outdoor-scoped shell clip (927fd8f+9ce335e) + retail straddle gate (414c3de) + all diagnostics; phantom staircase VISIBLE again (known, documented); doors functional. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e46d3d9273
commit
124c6cb2af
1 changed files with 13 additions and 7 deletions
|
|
@ -1023,16 +1023,22 @@ namespace AcDream.App.Rendering.Wb {
|
||||||
// The Holtburg meeting hall (0x010014C3) keeps its walkable exterior
|
// The Holtburg meeting hall (0x010014C3) keeps its walkable exterior
|
||||||
// stair-ramp as dictionary polys {0,1}: in the PhysicsBSP (NPCs walk
|
// stair-ramp as dictionary polys {0,1}: in the PhysicsBSP (NPCs walk
|
||||||
// it) but absent from every DrawingBSP node — retail shows a plain
|
// it) but absent from every DrawingBSP node — retail shows a plain
|
||||||
// wall; iterating the dictionary drew the "phantom staircase"
|
// wall; iterating the dictionary draws the "phantom staircase"
|
||||||
// (invisible-but-walkable in retail, visible in acdream). The hill
|
// (invisible-but-walkable in retail, visible in acdream). The hill
|
||||||
// cottage (0x01000827) carries 8 such orphans. Filter to the BSP-
|
// cottage (0x01000827) carries 8 such orphans.
|
||||||
// referenced set when a drawing BSP exists; models without one draw
|
//
|
||||||
// everything (unchanged).
|
// ⚠️ FILTER NOT APPLIED (e46d3d9 un-applied same day): naively
|
||||||
var drawnPolyIds = CollectDrawingBspPolygonIds(gfxObj);
|
// filtering to CollectDrawingBspPolygonIds(gfxObj) made DOORS
|
||||||
|
// disappear across Holtburg (user gate 2026-06-11) — the naive
|
||||||
|
// PosNode/NegNode walk evidently misses polys some models reference
|
||||||
|
// another way (portal-type nodes? leaf indexing? DatReaderWriter
|
||||||
|
// parse gap?). Diagnose with the histogram fact in
|
||||||
|
// Issue113PhantomStairsDumpTests on a door GfxObj BEFORE re-landing.
|
||||||
|
// The full retail draw is BSP-TRAVERSAL ORDER drawing, not a
|
||||||
|
// dictionary iteration with a filter — see the holistic port handoff
|
||||||
|
// docs/research/2026-06-11-building-render-holistic-port-handoff.md.
|
||||||
foreach (var polyEntry in gfxObj.Polygons) {
|
foreach (var polyEntry in gfxObj.Polygons) {
|
||||||
ct.ThrowIfCancellationRequested();
|
ct.ThrowIfCancellationRequested();
|
||||||
if (drawnPolyIds is not null && !drawnPolyIds.Contains(polyEntry.Key)) continue;
|
|
||||||
var poly = polyEntry.Value;
|
var poly = polyEntry.Value;
|
||||||
if (poly.VertexIds.Count < 3) continue;
|
if (poly.VertexIds.Count < 3) continue;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue