You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: rebuild trough, anvil, hand-pump, and signpost (#162)
* fix: rebuild water-trough as a staved vessel with water
Solid U end-caps, a water fill, and an into-the-hollow camera so
the piece no longer reads as an underside bench of slats.
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: rebuild anvil as a London-pattern silhouette
Stepped body, 16-seg horn, torus hoops, and a side-on camera so
the piece reads as an anvil instead of a stack of dark boxes.
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: rebuild hand-pump with a gooseneck and pump head
Two-diameter column, quarter-arc spout, forked lever, and a stacked
plinth so it no longer reads as a cone on a stick.
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: rebuild signpost boards as painted planks
Thin-Y planks, diamond tips, a collar cap, and regenerated gallery
pages so the piece no longer reads as a stick with crayon arrows.
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
<pclass="teaches">A procedural blacksmith anvil on a timber stump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1038
-
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 1052 tris, two materials with 102 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.750×0.406×0.690 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 134 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1038
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 1696 tris, two materials with 274 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.746×0.410×0.682 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 162 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1039
1039
<aclass="card-link" href="anvil/">View example <spanaria-hidden="true">→</span></a>
<aclass="card-media" href="water-trough/" aria-label="water-trough example detail page">
1044
-
<imgsrc="assets/water-trough-hero.webp" alt="water-trough — A procedural staved water trough through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract." loading="lazy" decoding="async" />
1044
+
<imgsrc="assets/water-trough-hero.webp" alt="water-trough — A procedural staved water trough with water through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract." loading="lazy" decoding="async" />
1045
1045
</a>
1046
1046
<divclass="card-body">
1047
1047
<h2><ahref="water-trough/">water-trough</a></h2>
1048
-
<pclass="teaches">A procedural staved water trough through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1049
-
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 4008 tris, two materials with 168 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.136×0.482×0.470 m, LOD ratios in band, convex collider 108 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1048
+
<pclass="teaches">A procedural staved water trough with water through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1049
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 4776 tris, three materials with 168 metal and 60 water faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.162×0.528×0.488 m, LOD ratios in band, convex collider 128 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1050
1050
<aclass="card-link" href="water-trough/">View example <spanaria-hidden="true">→</span></a>
<aclass="card-media" href="hand-pump/" aria-label="hand-pump example detail page">
1077
-
<imgsrc="assets/hand-pump-hero.webp" alt="hand-pump — A procedural village hand pump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract." loading="lazy" decoding="async" />
1077
+
<imgsrc="assets/hand-pump-hero.webp" alt="hand-pump — A procedural village hand pump with a gooseneck through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract." loading="lazy" decoding="async" />
1078
1078
</a>
1079
1079
<divclass="card-body">
1080
1080
<h2><ahref="hand-pump/">hand-pump</a></h2>
1081
-
<pclass="teaches">A procedural village hand pump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1082
-
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 616 tris, two materials with 96 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.567×0.366×1.027 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 118 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1081
+
<pclass="teaches">A procedural village hand pump with a gooseneck through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1082
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 1164 tris, two materials with 222 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.610×0.364×1.049 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 110 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1083
1083
<aclass="card-link" href="hand-pump/">View example <spanaria-hidden="true">→</span></a>
<pclass="teaches">A procedural timber fingerboard signpost through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1093
-
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 388 tris, three materials with 66 metal and 22 board faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.162×0.147×1.575 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 92 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1093
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 504 tris, three materials with 66 metal and 24 board faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.368×0.201×1.566 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 56 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</p>
1094
1094
<aclass="card-link" href="signpost/">View example <spanaria-hidden="true">→</span></a>
<pclass="zoom-hint">Rendered headless by the example itself — click to zoom.</p>
256
-
<divclass="callout"><spanclass="tag">witnesses</span> Recomputed: 388 tris, three materials with 66 metal and 22 board faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.162×0.147×1.575 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 92 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</div>
256
+
<divclass="callout"><spanclass="tag">witnesses</span> Recomputed: 504 tris, three materials with 66 metal and 24 board faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.368×0.201×1.566 m, LOD ratios in band (5.2 COLLAPSE more aggressive on LOD2), convex collider 56 tris, non-empty glTF. --skip-decimate exits 9 on the LOD1 ratio budget.</div>
<p>A showcase piece, not an example. Procedural timber fingerboard signpost (square post, pyramidal cap, two painted boards, iron shoe and straps) then the shipped pipeline: unique-cell UVs, Cycles high-to-low normal bake, LOD chain, convex collider, Unity glTF export.</p>
262
+
<p>A showcase piece, not an example. Procedural timber fingerboard signpost (square post, collar and pyramidal cap, two painted planks with diamond tips, iron shoe and straps) then the shipped pipeline: unique-cell UVs, Cycles high-to-low normal bake, LOD chain, convex collider, Unity glTF export.</p>
263
263
<p>It asserts <strong>budget conformance</strong> of the generated result. It does not witness an API contract. "It rendered without error" is not a check.</p>
264
264
<p><strong>Composes</strong> skills <code>mesh-editing-and-bmesh</code>, <code>bake-high-to-low</code>, <code>depsgraph-and-evaluated-data</code>, <code>engine-export-presets</code>, and snippets <code>bake_normal_high_to_low.py</code>, <code>setup_bake_target_image.py</code>, <code>lod_chain.py</code> / <code>decimate_to_budget.py</code>, <code>convex_hull_collider.py</code>, <code>export_preset_unity.py</code> (helpers copied, not imported as a package).</p>
265
265
<h2>Budgets</h2>
266
266
<p>Declared as named constants; every gate <strong>recomputes</strong> from the mesh, materials, UVs, evaluated LOD, collider, or export file.</p>
<p>DECIMATE COLLAPSE triangle counts are <strong>not</strong> identical across series — 5.2.1 is more aggressive on LOD2. The gate is a ratio band, not an exact count. Bake pixels are stochastic; the gate is <code>has_data</code> plus operator <code>FINISHED</code>, not byte-identity. Construction uses no RNG. Export byte counts differ by 12 B on 5.2.1 (glTF serializer), not a gated axis.</p>
269
269
<p><code>--skip-decimate</code> skips the LOD DECIMATE stage so LOD1 ratio is 1.0 and exit 9 fires. That is the named budget the falsifier violates.</p>
high = build_signpost_mesh(<spanclass="s">"SignpostHigh"</span>, bevel_offset=<spanclass="n">0.004</span>, bevel_segments=<spanclass="n">4</span>)
0 commit comments