Skip to content

Commit 449ad3d

Browse files
authored
fix: gallery render proof for hygiene + origin examples
Squash of mesh-hygiene-audit redesign, prop-origin-transform reframe, and README socket note.
1 parent 7954586 commit 449ad3d

15 files changed

Lines changed: 619 additions & 347 deletions

File tree

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -677,10 +677,10 @@ with the Smooth-by-Angle modifier on 5.1.
677677
The mesh-cleanliness contract a prop pipeline relies on before engine ingest:
678678
no ngons, no loose vertices, every edge bordering exactly two faces, no
679679
zero-area faces, positive signed volume, and Euler `V − E + F == 2` for a
680-
closed solid (measured 24/44/22, volume 0.989248). Companion to
680+
closed solid (measured 66/136/72, volume 0.652001). Companion to
681681
[`collision-hull-proxy`](examples/collision-hull-proxy/) (hull watertightness)
682682
and [`bmesh-gear`](examples/bmesh-gear/) (parametric closed solids). Dual-panel
683-
still: DIRTY (injected boundary + loose vert) vs CLEAN.
683+
still: DIRTY through-hole + loose-vert bead vs CLEAN manifold (same brass).
684684

685685
</td>
686686
</tr>
@@ -695,9 +695,10 @@ still: DIRTY (injected boundary + loose vert) vs CLEAN.
695695
The origin / scale-apply / MPI contract a prop pipeline relies on before
696696
engine ingest: data-API scale bake to exactly `(1,1,1)`, local bbox
697697
`min.z == 0` (origin at base), world AABB unchanged across the bake, and
698-
`matrix_parent_inverse` so a bolted accessory does not teleport. Extends
699-
[`parent-inverse-orrery`](examples/parent-inverse-orrery/) without retreading
700-
orbits. Dual-panel still: TRAP (bare parent) vs MPI KEEP.
698+
`matrix_parent_inverse` so a flanged conduit stays on its mount socket.
699+
Extends [`parent-inverse-orrery`](examples/parent-inverse-orrery/) without
700+
retreading orbits. Dual-panel still: TRAP (bare parent — empty socket +
701+
teleported flange) vs MPI KEEP.
701702

702703
</td>
703704
</tr>
-64.9 KB
Loading
25.8 KB
Loading
-1.17 KB
Loading
990 Bytes
Loading

docs/gallery/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -589,23 +589,23 @@ <h2><a href="gp-lineart-contour/">gp-lineart-contour</a></h2>
589589
</article>
590590
<article class="card" data-tags="bmesh mesh game-pipeline">
591591
<a class="card-media" href="mesh-hygiene-audit/" aria-label="mesh-hygiene-audit example detail page">
592-
<img src="assets/mesh-hygiene-audit-hero.webp" alt="mesh-hygiene-audit — Engine-ingest mesh hygiene as executable topology checks on a stepped street electrical pedestal (plinth, cabinet, drip cap)." loading="lazy" decoding="async" />
592+
<img src="assets/mesh-hygiene-audit-hero.webp" alt="mesh-hygiene-audit — Engine-ingest mesh hygiene on an octagonal street valve: no ngons, no loose verts, manifold edges, no zero-area faces, positive signed volume, Euler V-E+F==2." loading="lazy" decoding="async" />
593593
</a>
594594
<div class="card-body">
595595
<h2><a href="mesh-hygiene-audit/">mesh-hygiene-audit</a></h2>
596-
<p class="teaches">Engine-ingest mesh hygiene as executable topology checks on a stepped street electrical pedestal (plinth, cabinet, drip cap). Gates: no ngons, no loose verts, every edge borders exactly 2 faces, no zero-area faces (min_area printed), positive signed volume, Euler V-E+F==2 (24/44/22, volume 0.989248). Dual-panel dirty vs clean still marks defects.</p>
597-
<p class="witnesses"><span class="tag">witnesses</span> AI pipelines that skip topology gates ship ngons, loose verts, open boundaries, inverted winding, or non-sphere Euler into engine ingest. Injecting one defect class at a time exits non-zero (ngon=3, loose=4, boundary=5, zero-area=6, flip=7); the clean solid recovers hygiene_ok on both 4.5.11 and 5.1.2.</p>
596+
<p class="teaches">Engine-ingest mesh hygiene on an octagonal street valve: no ngons, no loose verts, manifold edges, no zero-area faces, positive signed volume, Euler V-E+F==2. Dual-panel still shows a through-hole and loose-vert bead derived from live mesh incidence — same brass on both so color alone cannot carry the proof.</p>
597+
<p class="witnesses"><span class="tag">witnesses</span> Pipelines that skip topology gates ship open boundaries, loose verts, or non-sphere Euler into engine ingest. The still makes the boundary hole and loose vert readable; ngon / zero-area / full winding invert remain check-only.</p>
598598
<a class="card-link" href="mesh-hygiene-audit/">View example <span aria-hidden="true">&rarr;</span></a>
599599
</div>
600600
</article>
601601
<article class="card" data-tags="transform parenting game-pipeline">
602602
<a class="card-media" href="prop-origin-transform/" aria-label="prop-origin-transform example detail page">
603-
<img src="assets/prop-origin-transform-hero.webp" alt="prop-origin-transform — Street pedestal origin-to-base-center + data-API scale apply + matrix_parent_inverse for a bolted accessory." loading="lazy" decoding="async" />
603+
<img src="assets/prop-origin-transform-hero.webp" alt="prop-origin-transform — Street pedestal origin-to-base-center + data-API scale apply + matrix_parent_inverse for a flanged conduit accessory." loading="lazy" decoding="async" />
604604
</a>
605605
<div class="card-body">
606606
<h2><a href="prop-origin-transform/">prop-origin-transform</a></h2>
607-
<p class="teaches">Street pedestal origin-to-base-center + data-API scale apply + matrix_parent_inverse for a bolted accessory. After bake: scale exactly (1,1,1), local min.z==0, world AABB delta 0. Bare parent jumps the accessory (~0.43 m); MPI restores world location (~3e-8). view_layer.update() before reading matrix_world.</p>
608-
<p class="witnesses"><span class="tag">witnesses</span> AI code parents with child.parent = parent alone (accessory teleports), skips view_layer.update() before matrix_world, or leaves non-uniform scale / centered origin for engine ingest. Skipping apply, origin bake, or MPI each fails a closed-form gate.</p>
607+
<p class="teaches">Street pedestal origin-to-base-center + data-API scale apply + matrix_parent_inverse for a flanged conduit accessory. After bake: scale (1,1,1), local min.z==0, world AABB unchanged. Bare parent jumps the accessory off an empty mount socket; MPI keeps it seated.</p>
608+
<p class="witnesses"><span class="tag">witnesses</span> Bare child.parent = parent teleports accessories off their mounts; skipping view_layer.update() before matrix_world, or leaving non-uniform scale / centered origin, breaks engine ingest placement.</p>
609609
<a class="card-link" href="prop-origin-transform/">View example <span aria-hidden="true">&rarr;</span></a>
610610
</div>
611611
</article>

0 commit comments

Comments
 (0)