Skip to content

Commit fd8f0ca

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add sea-stack-arch (nature)
The tenth piece in the nature category: a coastal diorama tile, 2.54 x 1.92 m and 1.62 m high. A fragment of a horizontally bedded sandstone headland stands on a wave-cut platform: sixteen layers, hard beds 42-168 mm thick alternating with soft beds 20-56 mm, at one set of heights in every column so the strata run on from the arch into the stack. The soft beds are undercut behind the hard beds either side, the undercut coming and going along a face (all but flush in places, deepest at each leg's foot, the wave-cut notch). The fin is cut by twelve vertical joint faces shared by both legs and the lintel; each bed sets each face back by its own amount, drifting coherently with height, and vertical joints split the beds into blocks that stand back by their own amounts, the joints opened as narrow V's, with fallen-out blocks and chipped corners. The arch: two legs whose beds step in toward the opening (0.50 m at the foot, 0.26 m under the roof) under a lintel of four hard beds whose lowest is whole but for the crown joint. A twelve-layer stack stands on its own island in the bay. The platform carries a bay, a channel through the arch, two tide pools and the same joint sets as cracks; the sea is a rippled sheet at 0.105 m with its rim run under the platform, foam lies at the waterline round the bay and the island, and five fallen blocks and eight boulders rest on the platform. Turf with sea grass and sea thrift (pink heads on stalks) covers the tops. Eight materials; the littoral zones (weed, barnacles, black lichen), orange lichen and bird lime are in the shaders. Every column is sampled on one fixed set of rays from its centre; a bed's outline on a ray is where the ray leaves the intersection of its half-planes, each set in by the bed's set-back, so a soft bed is inside both hard beds either side by construction. Budgets (measured, 5.2.1): 78182 tris (77600-78800), LOD 0.5000/0.2200, 8 materials with face floors, UVs 0..1 no overlap, AABB 2.5440x1.9225x 1.6184 (+-0.01), collider 342 (<=380, five hulls so players pass under the arch), hygiene 0 incl. 0 coplanar cross-shell pairs, zmin 0; beds bite 0.0026-0.0142 m over 35 joints (0.002-0.040), the lintel's lowest bed 0.0120 into each leg; stack mass centre 0.1220 m inside its foot notch (>=0.050); legs and stack sealed 8/8 (worst 0.0373, >=0.020); aperture 0.3680 wide x 0.7370 high (>=0.20 x 0.60); 18 bed tops level (0.00 deg, <=0.8) and continuous (spread 0, <=0.004); 19 soft beds undercut 0.0133-0.0290 (0.008-0.090); sea 0.10500 m, ripple 0.00238 (0.0015-0.0090), pools flat; rims 0.01226 under the platform (>=0.008); foam 0.0043 off the waterline (<=0.006), land edge 0.0140 under the rock (>=0.004); 13 loose rocks sealed (worst 0.0050, >=0.003), 0 overlaps; 289 roots 0.0078-0.0189 in turf or stone (0.004-0.060), none loose. Two default runs identical; 4.5.11 and 5.1.2 print the same measurements (export differs by 8 bytes). Fixes found on the way: the first outlines cut the soft beds with planes applied as insets along the base normal, which threw a lintel vertex to y=-0.12 (bite -0.22); outlines are now true half-plane intersections sampled on shared rays. Clipping by projection folded rings onto plane corners (166 zero-area faces, 39 doubles). Early renders read as stacked masonry: rounded slabs, every soft bed undercut all round; the joint faces are now shared through all beds, the undercut patchy, the arrises 3.5 mm and creased at 18 deg. The flat beds were a coplanar hazard (up to 448 pairs, then isolated soft-band/arris coincidences): each bed's walls batter by their own degree or two and turn slightly, arrises carry a sub-mm wear per ray, and a final pass draws any soft facet still in another bed's plane 1.5 mm in and turns any blade or head 3 deg about its root. The seal audit first read "flank" vertices in notched sectors and failed a sealed foot; it now takes each sector's most-buried vertex. Pool levels are read off the built platform (the analytic surface left a rim 4 mm over its water). Tile edge kept out of the tide-zone shaders. Falsifiers (flag -> measured -> exit), 5.2.1 and 4.5.11 identical; tris 78182 and envelope unchanged in all: --skip-decimate LOD1 1.0000 9 --stray-vert loose_v 1 15 --lift-z zmin 0.05000 16 --gap-lintel left leg under the lintel -0.0150 m 17 --lean-stack mass centre 0.0048 m inside footprint 19 --cut-pillar worst sector -0.0269 m, right leg 0/8 20 --close-arch width 0.0000 m, height 0.4490 m 21 --tilt-beds 2.536 deg 22 --flush-beds undercut 0.0061-0.0068 m 23 --flat-sea ripple 0.00000 m 24 --short-sea rim -0.05304 m 25 --lift-foam 0.02430 m off, land edge -0.00597 m 26 --perch-talus worst sector -0.0393 m 27 --pile-talus 3 pairs overlap 28 --float-cover roots -0.0173 m, 315 loose 29 tests/check_falsifier_targets.py --run --only sea-stack-arch passes. Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe, reports "Blender 5.2.1 LTS"; default and every falsifier also run on .scratch\blender-4.5.11-windows-x64 ("Blender 4.5.11 LTS"); default on .scratch\blender-5.1.2-windows-x64 ("Blender 5.1.2"). Render: render_hero.py wrote hero and preview; framing fill x 0.625, y 0.861, margins left 0.172 right 0.203 bottom 0.028 top 0.111; asset-quality floors pass (8 materials, edge90 0.033). Default stage, no yaw; camera 13 deg left of the arch's axis so the opening reads against the wedge on the wall. Asset sheet (docs/gallery/asset-sheets/sea-stack-arch.webp): not the least-designed object; the hydrant is plainer. Isolated, it reads as a bedded rock arch and stack with water, foam and flowering tops. Weak point: the stepped legs under a thick roof bed still lean toward a stylised, tidy geometry rather than a ragged natural cliff. Contact sheet (docs/gallery/contact-sheets/sea-stack-arch-contact-sheet.webp): luma 0.2384 against 0.2369-0.2428 (in band, after relighting from 0.2852, 0.2550, 0.2209, 0.2334, 0.2357); stage 0.2125 against 0.1919-0.2517; wedge warmth +0.0451 (calibration -0.144..+0.105; +0.1525 before the wedge was raised off the floor); saturation 0.2073 against 0.1525-0.2367; subject fill 0.861 vertical. Thumbnail legible: an arch and a stack over blue water read at a glance. Also updated: README, CLAUDE.md, AGENTS.md counts (66 -> 67), ROADMAP Nature list (sea stack & rock arch shipped), asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (122 pages, 0 failures), check_falsifier_targets (static and --run), check_exit_code_readme, check_engine_id, check_gallery_images and check_import_export_rules pass. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent a6bc246 commit fd8f0ca

82 files changed

Lines changed: 10966 additions & 143 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.cursor-plugin/plugin.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@
204204
"showcase/go-kart",
205205
"showcase/broadleaf-oak",
206206
"showcase/farm-tractor",
207-
"showcase/fern-mossy-rock"
207+
"showcase/fern-mossy-rock",
208+
"showcase/sea-stack-arch"
208209
]
209210
}

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ classifies it as a `cursor-plugin`. This is content the AI loads when the user
2121
asks Blender questions or works on Blender add-ons in Cursor or Claude Code.
2222

2323
The content base is 16 skills, 9 rules, 3 templates, 27 snippets, 60
24-
examples, and 66 showcase pieces (counts are CI-enforced against README.md)
24+
examples, and 67 showcase pieces (counts are CI-enforced against README.md)
2525
and the manifest). The full inventory tables and per-item purposes live in
2626
`CLAUDE.md`. Example anatomy and authoring rules: copy `examples/bmesh-gear/`;
2727
showcase conventions: `showcase/README.md`. The render look is specified

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ rules/<rule-name>.mdc - Anti-pattern rules, 9 total
2222
templates/<template-name>/ - Starter projects, 3 total
2323
snippets/<snippet-name>.py - Standalone code patterns, 27 total
2424
examples/<name>/ - Runnable smoke-gated examples, 60 total (+ gallery.json)
25-
showcase/<name>/ - Budget-conformance props, 66 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 67 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
2626
scripts/build_gallery.py - Regenerates docs/gallery/ from examples/gallery.json + showcase/gallery.json
2727
scripts/site/ - Vendored landing-page build (Jinja2); tokens.css is the shared palette
2828
tests/check_site_links.py - Internal link/anchor/alt gate over the built site (docs/)

‎README.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</p>
1919

2020
<p align="center">
21-
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>66 showcase pieces</strong>
21+
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>67 showcase pieces</strong>
2222
</p>
2323

2424
<p align="center">
@@ -37,7 +37,7 @@
3737

3838
## Overview
3939

40-
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 66 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, 60 examples, and 67 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.
4141

4242
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.
4343

@@ -106,7 +106,7 @@ per-script exit-code model, are in
106106
Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](showcase/README.md).
107107

108108
<details>
109-
<summary><strong>66 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>67 showcase pieces</strong> — click to expand the preview grid</summary>
110110

111111
<p align="center">
112112
<a href="showcase/shipping-crate/"><img src="showcase/shipping-crate/preview.webp" width="24%" alt="Shipping crate: a wooden slat crate stencilled PORT ROYAL and NO 17, with iron corner brackets and an end handle, on a dark studio floor, warm wedge on the back wall" /></a>
@@ -175,6 +175,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
175175
<a href="showcase/broadleaf-oak/"><img src="showcase/broadleaf-oak/preview.webp" width="24%" alt="Broadleaf oak: a broad oak with a short fluted trunk and crooked spreading limbs under a domed crown of lobed green leaves, on a grassy soil disc with surface roots, tufts, fallen leaves and acorns" /></a>
176176
<a href="showcase/farm-tractor/"><img src="showcase/farm-tractor/preview.webp" width="24%" alt="Farm tractor: green farm tractor in muddy ruts beside a puddle: long bonnet, barred grille, rusty exhaust stack, big lugged rear tyres on cream rims with weights, small ribbed fronts." /></a>
177177
<a href="showcase/fern-mossy-rock/"><img src="showcase/fern-mossy-rock/preview.webp" width="24%" alt="Fern and mossy rock: a male fern's arching crown of finely cut fronds, with curled fiddleheads, in front of a cleft boulder cushioned in moss on a soil bank with fallen beech leaves, pebbles and wood sorrel" /></a>
178+
<a href="showcase/sea-stack-arch/"><img src="showcase/sea-stack-arch/preview.webp" width="24%" alt="Sea stack and arch: a layered sandstone sea arch on a wave-cut rock platform, a sea stack beside it on its own island, foam at the waterline, fallen blocks, and grass and pink sea thrift on the tops" /></a>
178179
</p>
179180

180181
[`shipping-crate`](showcase/shipping-crate/) — procedural crate through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets. Falsifier `--skip-decimate` exits 9.
@@ -305,6 +306,8 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
305306

306307
[`fern-mossy-rock`](showcase/fern-mossy-rock/) — the ninth `nature` piece: procedural shaded woodland corner on a sloping soil bank (a gritstone boulder cleaved into broken, weathered faces and split by a deep crack, sunk into the bank all round, a thick moss cushion over its crown draped down its shaded front as a conforming shell with a lumpy rim tucked into the stone, a male fern's shuttlecock crown of eleven bipinnate fronds whose 434 alternate pinnae are cut into pinnules and taper to the tip, three fiddleheads unrolling as logarithmic spirals from a scaly rootstock bedded in the soil, a smaller fern growing out of the crack, and beech litter, pebbles, a twig and wood sorrel at the foot), whose rooted fronds and rootstock, moss thickness over the stone, boulder sealed in the bank, moss facing up or into the shade, crack fern wedged in the cleft, pinna alternation and taper, true spirals and ground cover are recomputed from the mesh, through the same pipeline. `--float-fronds` and `--lift-crown` exit 17 on every frond rooted in its crown and the crown sealed in the soil, `--float-moss` 18 on the moss cushion's thickness band on the stone, `--perch-rock` 20 on the boulder sealed all round, `--sunny-moss` 21 on moss facing up or into the shade, `--perch-crack-fern` 22 on the crack fern rooted in the cleft, `--flat-taper` and `--opposite-pinnae` 23 on pinnae alternating and tapering along the rachis, `--open-crozier` 24 on every fiddlehead a real spiral, `--float-cover` 25 on the ground cover joined to the soil, while the envelope holds.
307308

309+
[`sea-stack-arch`](showcase/sea-stack-arch/) — the tenth `nature` piece: procedural coastal diorama tile (a fragment of a horizontally bedded sandstone headland on a wave-cut rock platform: sixteen hard and soft beds at one set of heights in every column, the soft beds undercut so the hard beds project as ledges, vertical joint faces shared by both legs and the lintel, blocks set back and fallen out between the joints; a natural arch of two stepped legs carrying a lintel over a channel; a sea stack of the same beds on its own island; a rippled sea at a declared level with its rim under the platform, foam at the waterline, two tide pools, fallen blocks and boulders, and turf with sea grass and sea thrift on the tops), whose beds biting each other and the lintel biting both legs, stack over its footprint, feet sealed in the platform, clear aperture, level continuous bedding, undercut soft beds, sea level and ripple, contained water, seated foam, loose rock sealed and apart, and rooted cover are recomputed from the mesh, through the same pipeline. `--gap-lintel` exits 17 on every bed biting the one it lies on, `--lean-stack` 19 on the stack's mass over its footprint, `--cut-pillar` 20 on the feet sealed all round, `--close-arch` 21 on the clear aperture, `--tilt-beds` 22 on level, continuous bedding, `--flush-beds` 23 on the undercut, `--flat-sea` 24 on the water level and ripple, `--short-sea` 25 on the water contained, `--lift-foam` 26 on the foam at the waterline, `--perch-talus` 27 and `--pile-talus` 28 on the loose rock sealed and apart, `--float-cover` 29 on the cover rooted in the tops, while the envelope holds.
310+
308311
</details>
309312

310313
## Examples

0 commit comments

Comments
 (0)