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
{{ message }}
Repository navigation
Commit ce8a017
Browse filesBrowse the repository at this point in the historyBrowse files
A freestanding masonry arch: two coursed piers, projecting imposts, nine
voussoirs turning a semicircle, and a keystone standing proud at the crown.
The headline budget is the one an arch can fail invisibly. Nine wedge
blocks laid in a row are still nine wedge blocks; what makes them an arch
is that their intrados vertices sit on a circle. The piece recomputes that
circle from vertex positions rather than from the angles the generator
used, and asserts every intrados vertex lands within 4 mm of the declared
0.60 m radius over an arc of at least 168 degrees. Measured: 0.97 mm over
178.0 degrees.
Other budgets, all recomputed: 924 tris, two materials with 182 dressed and
364 ashlar faces, UVs in 0..1 with zero overlap, outer AABB
1.644x0.510x2.057 m, clear opening 1.203 m, both piers grounded, the
springing joint an overlap, all eight mortar joints at 9.70 mm inside a
6-17 mm band, 168-tri collider, non-empty glTF, and hygiene zero across
loose/non-manifold/zero-area/doubles/n-gons/coplanar-disjoint.
Seven falsifiers, each breaking one named budget, all proven on 4.5.11,
5.1.2 and 5.2.1 with identical exit codes: --skip-decimate 9, --stray-vert
15, --lift-z 16, --float-pier 16, --sink-keystone 17, --wide-mortar 18,
--off-circle 19.
Four findings the budgets forced, all documented in the README:
- bmesh.ops.bevel gives every face it creates material_index 0. Chamfering
nineteen blocks left 30 faces on the dressed slot and moved 464 to
ashlar; the slot count and the distinct-material check both still
passed. Only the per-material face floor caught it. Materials are now
re-stamped per block after the bevel.
- The impost landed exactly on the top course — same footprint, same
plane, coincident face centres. It now sits on its own mortar bed.
- BVHTree.find_nearest is unsigned, so a voussoir seated inside the pier
head reported a 5.4 mm gap where there was none. Joint gaps now test
overlap first.
- Joint gaps need measuring both ways: the keystone's radial faces are
wider in Y than its neighbours', so every keystone vertex on the joint
lies outside the neighbour and read 33 mm instead of 9.7 mm.
Three falsifiers needed the model changed rather than the budget loosened.
--sink-keystone originally shrank the Y bounding box and tripped the AABB
gate, so imposts were added to own the envelope — correct masonry the arch
was missing. --off-circle began as --flat-arch, which is 0.62 m shorter and
also fails on the bounding box, proving nothing about the circle fit.
--float-pier tripped the z-fight budget because the impost was pinned to an
absolute height while its courses rose into it.
LOD2 is the one value that differs across versions (196 tris on 5.2, 202 on
4.5 and 5.1) — DECIMATE COLLAPSE, which is why the gate is a ratio band.
Adds ~0.82 s to smoke on 4.5, ~0.85 s on 5.1, ~0.98 s on 5.2. All 28
showcase pieces together run in 20.9 s on 5.2.1.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 59 examples, and 27 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
40
+
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 59 examples, and 28 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
41
41
42
42
The content is consumed by AI coding agents reading these files directly from a checkout — **there is no MCP server in this repository, and none is required**. Cursor applies `rules/*.mdc` automatically wherever their scope globs match and takes skills by name in chat; Claude Code reads `skills/` and `rules/` from the project workspace, or from this repo kept as a referenced checkout. Any agent that can read files in a workspace can use it the same way. There is no build step for the content — edit the Markdown and Python files directly.
43
43
@@ -106,7 +106,7 @@ per-script exit-code model, are in
106
106
Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](showcase/README.md).
107
107
108
108
<details>
109
-
<summary><strong>27 showcase pieces</strong> — click to expand the preview grid</summary>
109
+
<summary><strong>28 showcase pieces</strong> — click to expand the preview grid</summary>
110
110
111
111
<palign="center">
112
112
<ahref="showcase/shipping-crate/"><imgsrc="showcase/shipping-crate/preview.webp"width="24%"alt="Shipping crate: a wooden slat crate with iron corner brackets on a dark studio floor, warm wedge on the back wall" /></a>
@@ -136,6 +136,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
136
136
<ahref="showcase/wooden-ladder/"><imgsrc="showcase/wooden-ladder/preview.webp"width="24%"alt="Wooden ladder: a raked timber ladder with six rungs and iron shoes on a dark studio floor" /></a>
137
137
<ahref="showcase/hay-bale/"><imgsrc="showcase/hay-bale/preview.webp"width="24%"alt="Hay bale: a bound straw bale with two sisal twine belts on a dark studio floor" /></a>
138
138
<ahref="showcase/crate-stack/"><imgsrc="showcase/crate-stack/preview.webp"width="24%"alt="Crate stack: three slatted shipping crates stacked and yawed, each with iron corner straps and runners, on a dark studio floor" /></a>
139
+
<ahref="showcase/stone-archway/"><imgsrc="showcase/stone-archway/preview.webp"width="24%"alt="Stone archway: a semicircular masonry arch with coursed piers, projecting imposts, nine voussoirs and a proud keystone, on a dark studio floor" /></a>
139
140
</p>
140
141
141
142
[`shipping-crate`](showcase/shipping-crate/) — procedural crate through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets. Falsifier `--skip-decimate` exits 9.
<imgsrc="assets/stone-archway-hero.webp" alt="stone-archway — A procedural masonry archway — coursed piers, projecting imposts, nine voussoirs and a proud keystone — carried through UVs, bake, LOD, collider, and Unity…" loading="lazy" decoding="async" />
<pclass="teaches">A procedural masonry archway — coursed piers, projecting imposts, nine voussoirs and a proud keystone — carried through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1192
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 924 tris, two materials with 182 dressed and 364 ashlar faces re-stamped after the chamfer, UVs in 0..1 with zero AABB overlap, outer AABB 1.644×0.510×2.057 m, clear opening 1.203 m, zmin 0, hygiene 0 including zero coplanar disjoint pairs, both piers grounded, the springing joint an overlap, all eight mortar joints at 9.70 mm inside the 6–17 mm band, and every intrados vertex within 0.97 mm of the declared 0.60 m radius over 178°. --off-circle exits 19 on the circle fit; --wide-mortar exits 18 on the joint band.</p>
0 commit comments