Skip to content

Commit ef32c01

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add palm-tree (nature)
The sixth piece in the nature category: a coconut palm on a raised disc of rippled beach sand, 3.1 x 2.8 m. A 4.47 m trunk rises from a swollen, seven-lobed bole with a mat of 24 roots that drop onto the sand, run out half buried and dive under it, reaching furthest on the side the palm leans toward; it leans along a curve and comes back upright under the crown (0.81 m off the foot), tapering, with 25 leaf-scar rings at an even pitch. A fibrous boss of leaf bases carries 18 pinnate fronds in a golden-angle spiral, each a drooping rachis with 36 pairs of folded, V-hung, twisted leaflets; two dead fronds hang on the camera's side, two spear leaves stand at the centre, twelve green and ripening coconuts sit in four bunches under the frond bases. Two fallen coconuts, a fallen frond, driftwood, scallops, augers and sea grass lie on the sand. Eight materials. Budgets (measured, 5.2.1): 45196 tris (44600-45800), LOD 0.5000/0.2200, 8 materials with face floors, UVs 0..1 no overlap, AABB 5.2645x5.1503x6.0258 (+-0.01), collider 44 (<=60), hygiene 0 incl. 0 coplanar cross-shell pairs, zmin 0; 22 fronds and spears seated 0.0871-0.1217 m in the boss (0.060-0.160); 12 coconuts biting 0.0229-0.0297 m (0.012-0.045), all below the boss centre; trunk 4.4735 m (4.47 +- 0.05), crown offset 0.8056 m (0.60-1.00), volume-weighted mass centre of trunk and crown 0.5555 m off the foot and 0.2081 m inside the hull of the root entry points (min 0.080); 25 rings, pitch 0.14498 m, spread 0.00136 m (max 0.006); trunk bedded 0.0990 m (0.030-0.200), root tips 0.0644-0.0716 m (0.020-0.100); fallen coconuts resting 0.0198-0.0207 m in the sand (0.010-0.050); 1566 shells joined to the sand. Two default runs print identical measurements. Falsifiers (flag -> measured -> exit), run against this code: --skip-decimate LOD1 1.0000 -> 9; --stray-vert loose_v 1 -> 15; --lift-z zmin 0.05000 -> 16; --short-petioles seats 0.0175-0.0422 m -> 17; --drop-coconut bite 0.0037 m -> 18; --short-roots margin -0.3507 m (roots 0.2059-0.3502 m) -> 19; --bunch-rings spread 0.08992 m -> 20; --perch-trunk shallowest sector 0.0123 m -> 21; --float-nuts 0.0038-0.0047 m -> 22; --float-cover 120 of 1566 shells loose -> 23. Tris stay 45196 in every run; each piece falsifier's budget_fails lists only its own budget; the envelope moves at most 0.1 mm. Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe, reports "Blender 5.2.1 LTS". 4.5 LTS left to CI. Render: render_hero.py wrote hero and preview; framing fill x 0.394, y 0.867, margins >= 0.050; asset-quality floors pass (edge90 0.087). Asset sheet (docs/gallery/asset-sheets/palm-tree.webp): not the least-designed object; the hydrant is plainer. Isolated it reads at once as a coconut palm: curved ringed trunk, drooping pinnate crown, coconut bunches, dead frond, beach litter. Weak points: a tall thin subject is small in its panel, so the beach details and root mat read only as texture, and the trunk is the plainest surface. Contact sheet (docs/gallery/contact-sheets/palm-tree-contact-sheet.webp): luma 0.2372 against 0.2369-0.2428 (in band, after relighting from 0.2903); stage 0.1800 against 0.1919-0.2517 (slightly darker than the floor); saturation 0.1274 against 0.1525-0.2367 (greens kept dusty); wedge warmth +0.1091 inside -0.1440/+0.1052/+0.0921 range spread. Thumbnail legible. Also updated: README, CLAUDE.md, AGENTS.md counts (57 -> 58), ROADMAP Nature list (palm tree struck as shipped), asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (113 pages, 0 failures), check_falsifier_targets, 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 37a3050 commit ef32c01

73 files changed

Lines changed: 8399 additions & 125 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
@@ -195,6 +195,7 @@
195195
"showcase/cactus-garden",
196196
"showcase/espresso-machine",
197197
"showcase/road-bicycle",
198-
"showcase/skate-ramp"
198+
"showcase/skate-ramp",
199+
"showcase/palm-tree"
199200
]
200201
}

‎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 57 showcase pieces (counts are CI-enforced against README.md)
24+
examples, and 58 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, 57 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 58 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>57 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>58 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 57 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 58 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>57 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>58 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>
@@ -166,6 +166,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
166166
<a href="showcase/espresso-machine/"><img src="showcase/espresso-machine/preview.webp" width="24%" alt="Espresso machine: a brushed stainless E61 espresso machine with twin gauges, a chrome group head and a walnut-handled portafilter over a shot cup, cups on its warmer tray, beside a tamper, milk pitcher and knock box on a stone counter" /></a>
167167
<a href="showcase/road-bicycle/"><img src="showcase/road-bicycle/preview.webp" width="24%" alt="Road bicycle: a deep red lugged-steel road bicycle leaning on its kickstand, with chromed lugs and fork socks, tan-wall 700c wheels, a honey leather saddle, cream-taped drop bars and a chain over a double crankset" /></a>
168168
<a href="showcase/skate-ramp/"><img src="showcase/skate-ramp/preview.webp" width="24%" alt="Skate ramp: a plywood quarter-pipe with a steel coping and kicker plate, screw rows, sheet seams and a red stencilled roundel, its open side showing studs and sills, a skateboard on the deck" /></a>
169+
<a href="showcase/palm-tree/"><img src="showcase/palm-tree/preview.webp" width="24%" alt="Palm tree: a coconut palm leaning on a raised disc of beach sand, its ringed trunk curving up to a crown of drooping pinnate fronds over green coconuts, fallen coconuts, a frond and driftwood below" /></a>
169170
</p>
170171

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

279280
[`skate-ramp`](showcase/skate-ramp/) — the sixth `sports` piece: procedural backyard quarter-pipe, 1.2 m on a 1.8 m transition (five plywood transition templates on 2x4 sills with sistered studs and a back post, nine 2x4 stringers under a two-layer plywood skin with joints offset between layers and landing on stringers, screw rows over every stringer, a steel coping pipe on welded, bolted tabs, a steel kicker plate ground to a lip on a toe block, a worn stencilled roundel and wheel marks; a skateboard on the deck with a seven-ply concave deck, kicktails, grip tape, two trucks and four wheels on bearings), whose sills on the floor, templates seated on sills and under the skin, wheels on the deck, circular transition, coping reveal, flush kicker plate, staggered seams, screws over stringers, coaxial wheels and one connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--float-sill` exits 16, `--short-rib` 17, `--small-wheel` 18, `--sag-skin` 19, `--sink-coping` 20, `--proud-plate` 21, `--stack-seams` 22, `--miss-screws` 23, `--skew-wheel` 24, `--lift-grip` 25.
280281

282+
[`palm-tree`](showcase/palm-tree/) — the sixth `nature` piece: procedural coconut palm on a raised disc of rippled beach sand (a 4.47 m trunk rising from a swollen, lobed bole with a mat of 24 roots flaring out into the sand, leaning along a curve and coming back upright under the crown, tapering, ringed with 25 leaf scars at an even pitch; a fibrous boss of leaf bases carrying eighteen pinnate fronds in a golden-angle spiral, each a curved, drooping rachis with 36 pairs of folded leaflets hanging below it in a V, young fronds rising and old ones hanging; two dead fronds, two spear leaves and twelve green and ripening coconuts in bunches under the frond bases; two fallen coconuts, a fallen frond, driftwood, seashells and sea grass), whose fronds seated in the crown, coconuts attached under it, trunk height and lean with the crown's mass inside the root plate, leaf-scar rings at an even pitch, trunk and roots bedded in the sand, fallen coconuts resting in it and beach litter joined to it are recomputed from the mesh, through the same pipeline. Falsifiers `--short-petioles` exits 17, `--drop-coconut` 18, `--short-roots` 19, `--bunch-rings` 20, `--perch-trunk` 21, `--float-nuts` 22, `--float-cover` 23.
283+
281284
</details>
282285

283286
## Examples

0 commit comments

Comments
 (0)