Skip to content

Commit 45e45e0

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add fern-mossy-rock (nature)
The ninth piece in the nature category: a shaded woodland corner, 2.29 x 2.22 m and 0.86 m high, on a soil bank that rises 190 mm per metre toward the back. A gritstone boulder (1.2 x 1.0 m in plan, 0.5 m out of the bank) is an ellipsoid cut by ten cleavage planes through weathering bevels, with seven chipped facets, and split across its top by a crack: a V 124 mm wide and 220 mm deep along a plane through the field's origin, closing on the low flanks. Its cube-sphere lattice is turned so one family of lines runs along the crack and drawn in toward it, so the narrow V and its lip are resolved. It is bedded sector by sector until each of eight sectors' most buried flank vertex is 40 mm under the soil, its underside cut flat 40 mm over Z = 0. Four moss cushions are conforming lens shells snapped to the stone as built: the main one over the larger block's crown, draped down its shaded front, hummocks up to 58 mm deep along the stone's normal, a scalloped rim tucked 5 mm into the stone, stopping short of the soil and, on a ragged line, of the crack's lip. At the downhill foot a male fern's scaly rootstock, bedded in the soil with seven old stipe bases, carries a shuttlecock crown of eleven bipinnate fronds (0.96-1.14 m): one tapering tube each, scaly stipe then green rachis, with 15 alternate pinnae a side, longest a third of the way up and tapering to the tip, each a closed thin shell cut almost to its costa into up to five alternate pinnules a side. Three fiddleheads unroll as logarithmic spirals (1.65 turns). A four-frond fern grows from a rootstock wedged down the crack. 56 beech leaves drift against the boulder among 16 pebbles, a twig and eight clumps of wood sorrel. Ten materials; fronds and sorrel carry a translucent lobe. Budgets (measured, 5.2.1): 77176 tris (76800-77600), LOD 0.5000/0.2200, 10 materials with face floors, UVs 0..1 no overlap, AABB 2.2896x2.2209x 0.8601 (+-0.01), collider 128 (<=200), hygiene 0 incl. 0 coplanar cross-shell pairs, zmin 0; 25 stalks >=0.0085 m inside their rootstock (>=0.004), 434 pinnae >=0.0013 m inside their rachis (>=0.0004), rootstock sealed 8/8 (worst 0.0322, >=0.010); moss top 0.0111-0.0568 m over the stone (0.006-0.080), rim and underside >=0.0040 inside it; boulder sealed 8/8 (worst 0.0400, >=0.020); moss facing 0.8982 (>=0.85); crack fern bite 0.0192, in the cleft, walls 0.0100 (<=0.060); 15 fronds alternate, gaps 0.442-0.575 (0.25-0.75), peak 0.223-0.468 (0.10-0.60), tip <=0.326 (<=0.40), base <=0.647 (<=0.88); fiddleheads 1.697-1.722 turns (>=1.20), curvature ratio >=2.901 (>=1.80); 102 cover pieces bedded, 186 shells joined. Two default runs identical; 4.5.11 and 5.1.2 print the same measurements (export differs by 8 bytes). Heavier than broadleaf-oak (77176 vs 68350 tris): 65% is pinnae, and the point of the piece is geometric pinnule detail at hero size. Fixes found on the way: 216 coplanar cross-shell pairs on the first build, 211 within one frond - pinnae along a rachis are translated copies in one blade plane. Pinnae are now flat (costa 0.12% of the pinna's length proud, floored so tiny tip pinnae do not weld top to bottom: that gave 6 doubles), twisted in a +-0.20 rad three-step cycle, and the plan turns each in 0.04 rad steps until its plane is 8 deg off every pinna whose faces can come within the coplanar range; all 434 clear. Sorrel leaflets sharing a petiole point are turned apart the same way (14 deg); beech leaves are rolled 0.20-0.32 rad so none lies in a soil face's plane. The boulder first sank 0.28 m through the disc's base (zmin -0.277); its underside is now cut flat. The moss seat audit caught spokes aimed at the crack floored at a quarter length, putting top vertices down the V 27 mm inside the far block; every ring on a spoke now clears the lip. The moss and then the crack fern tied for the top of the envelope, so --float-moss and --perch-rock exited 8; the crack fern now stands 81 mm over the moss. --perch-rock first passed: the boulder was bedded on a coarser lattice than the audit reads; it is now bedded on the shipped lattice. --stray-vert first exited 8 (vertex above the box). A first --sunny-moss turned every cushion rigidly and overlapped two (exit 15); it now moves the main cushion alone. Falsifiers (flag -> measured -> exit), 5.2.1 and 4.5.11 identical; tris 77176 and envelope unchanged in all: --skip-decimate LOD1 1.0000 9 --stray-vert loose_v 1 15 --lift-z zmin 0.05000 16 --float-fronds shallowest stalk base -0.0484 m 17 --lift-crown rootstock worst sector -0.0178 m 17 --float-moss top to 0.0967 m, rim -0.0360 m 18 --perch-rock worst sector -0.0166 m, 7/8 20 --sunny-moss facing 0.4250 21 --perch-crack-fern centre not in cleft, walls 0.1557 m 22 --flat-taper tip ratio 0.996 23 --opposite-pinnae gaps 0.0026-0.9976, not alternate 23 --open-crozier 0.932 turns, curvature ratio 1.128 24 --float-cover -0.046 m, 186 shells loose 25 tests/check_falsifier_targets.py --run --only fern-mossy-rock 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.766, y 0.728, margins left 0.131 right 0.103 bottom 0.094 top 0.178; asset-quality floors pass (10 materials, edge90 0.007). Default stage, hero yaw -50 deg about Z so the fern stands in front of the mossy, cracked face. Asset sheet (docs/gallery/asset-sheets/fern-mossy-rock.webp): not the least-designed object; the hydrant is plainer. Isolated, it reads as a mossy cleft boulder with a lush fern clump at its foot. Weak point: the piece is wide and low (frond tips set the box), so it sits small in its panel and pinnule detail is lost at sheet scale; the disc was pulled in toward the subject to limit that. Contact sheet (docs/gallery/contact-sheets/fern-mossy-rock-contact-sheet.webp): luma 0.2401 against 0.2369-0.2428 (in band, after relighting from 0.3509, 0.2487 and 0.2431); stage 0.2425 against 0.1919-0.2517; wedge warmth +0.0546 (calibration -0.144..+0.105); saturation 0.2116 against 0.1525-0.2367; subject fill 0.766 horizontal. Thumbnail legible: a fern clump in front of a moss-covered boulder reads at a glance. Also updated: README, CLAUDE.md, AGENTS.md counts (65 -> 66), ROADMAP Nature list (fern & mossy rock shipped), asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (121 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 832a317 commit 45e45e0

81 files changed

Lines changed: 10297 additions & 141 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
@@ -203,6 +203,7 @@
203203
"showcase/mushroom-stump",
204204
"showcase/go-kart",
205205
"showcase/broadleaf-oak",
206-
"showcase/farm-tractor"
206+
"showcase/farm-tractor",
207+
"showcase/fern-mossy-rock"
207208
]
208209
}

‎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 65 showcase pieces (counts are CI-enforced against README.md)
24+
examples, and 66 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, 65 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 66 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>65 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>66 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 65 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 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.
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>65 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>66 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>
@@ -174,6 +174,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
174174
<a href="showcase/go-kart/"><img src="showcase/go-kart/preview.webp" width="24%" alt="Go-kart: yellow go-kart on a patch of track asphalt before a red and white kerb: bent red tube chassis, black seat, finned engine with chain to the rear axle, slick tyres on silver rims." /></a>
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>
177+
<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>
177178
</p>
178179

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

303304
[`farm-tractor`](showcase/farm-tractor/) — the ninth `vehicles` piece: procedural mid-century utility tractor standing in the ruts of a muddy farmyard with a puddle between its wheels (a cast-iron backbone of engine, bell housing, gearbox and rear axle housing with trumpets; a front axle oscillating on a pivot pin through the front support's lugs and two bushings, kingpins, spindles and a tie rod; 1.240 m rear tyres with 44 chevron bars rooted in the carcass and handed for forward travel, on dished rims with welded clamp lugs and cast-iron half-moon weights; ribbed front tyres; a grille shell with radiator and headlamps, a louvred bonnet, fuel tank and dash; a vertical exhaust stack with a hinged rain cap and an oil-bath pre-cleaner bowl; a raked steering column, a pan seat on a leaf spring, pedals and footplates; mudguards with a tail lamp and a work lamp; a three-point linkage with lift arms, lift rods, lower links, a stowed top link and the drawbar, and a PTO stub under its shield; paint chipped to primer at its edges, rust-streaked, sun-faded and mud-splashed). Asserts 122272 tris, twelve materials with face floors, zero coplanar cross-shell pairs, every tyre sunk 18–45 mm into the mud, hubs and the pivot pin coaxial, 14 link eyes on their pins, beads seated, 88 bars rooted and evenly pitched with their apex leading, body and wheels mirrored, wheelbase, tracks and rear-tyre diameter at their stated size, the mass centre inside the support triangle of the rear contacts and the front pivot by a quarter of the track, and one connected assembly; `--float-tyre` exits 16, `--cock-hub`, `--cant-pin` and `--unpin-link` 17, `--sink-tyre` and `--float-lugs` 18, `--skew-wheel`, `--wide-track`, `--tall-lugs` and `--odd-fender` 19, `--bunch-lugs` 20, `--reverse-lugs` 21, `--offset-pivot` 22, `--loose-lamp` 23, while the envelope holds.
304305

306+
[`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.
307+
305308
</details>
306309

307310
## Examples

0 commit comments

Comments
 (0)