Skip to content

Commit 2205044

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add archery-target (sports)
The fifth piece in the sports category: an archery range target on a turf patch. A 1.10 m compressed-straw boss coiled from seventeen rope courses (relief on its back, edge and face annulus; fibres run round the coil from a per-vertex coil coordinate, a tone per course), eight doubled jute bindings drawn tight over the crests; an 80 cm ten-zone World Archery face in aged inks with ring lines, an X ring, a printed X and four target pins. A timber easel leans it back 12 degrees: front legs tenoned into toe skids with toe and heel knee braces, a ledge with a stop lip on a bolted rail and gussets, a butt board numbered 12, a head block, a strap hinge (two leaves, three knuckles, riveted pin) to a rear leg in a steel ferrule on a steel foot, a stretcher and a taut splay chain between eye bolts. Five carbon arrows in the face (points, cresting, nocks, three vanes with a cock vane), one glancing into the edge, one snapped in the black with its fletched half on the grass; a leather quiver with a belt loop and three arrows lies among grass tufts. Sixteen materials. 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 and 5.1 are left to CI (not run locally). Recomputed budgets (5.2.1): - 42908 tris (band 42000-44000); LOD1 0.5000, LOD2 0.2200 - 16 materials, every face floor met; UVs in 0..1, overlap 0 - AABB 2.0071 x 2.6887 x 2.0538 m, zmin 0; collider 1083 tris (ceiling 1150); bake FINISHED; glTF 3288248 B - hygiene all 0, zero coplanar cross-shell pairs. The first draft had 741 (binding end caps on one plane, vane rear edges square to the shaft, quiver nocks on one plane, side-by-side bolt domes, a hinge leaf edge on a knuckle end), all fixed by staggering the model, never by bands. - supports: 2 skids + rear tread bedded 2.0 mm (band 1-4 mm) - hinge: 3 knuckles 0.000 mm off the pin axis (tol 0.3 mm) - boss seat 2.5 mm into the ledge, lean 2.0 / 2.0 mm on the legs (1-4 mm) - gold centre 1.3000 m above the turf (1.30 +- 0.05), boss 1.100 x 0.280, face 0.800 m, tilt 12.000 deg (10-15) - 7 points buried 0.119-0.149 m (band 0.08-0.20), straw ahead >= 0.051 - vanes >= 0.419 m clear of the boss (min 0.25); 10 fletched shafts x 3 vanes within 0.002 deg of 120 (tol 1) - ring lines on the 4 cm table, 0.000 mm off (tol 0.5 mm), 0 wrong inks - 73.85 kg; mass centre 0.349 m inside the supports; forward tip 27.83 deg (min 20) - one connected assembly, 722 shells; two default runs identical Falsifiers (flag -> measured -> exit); tris and AABB unchanged under all: - --skip-decimate -> LOD1 ratio 1.0000 -> 9 - --stray-vert -> loose_v 1 -> 15 - --lift-z -> zmin 0.05000 -> 16 - --float-foot -> rear tread bite -0.004 m -> 16 - --offset-hinge -> knuckles 0.0025 m off the pin -> 17 - --lift-boss -> seat -0.0035 m (lean unchanged) -> 18 - --high-boss -> gold centre 1.3783 m -> 19 - --shallow-arrow -> point buried 0.0287 m -> 20 - --short-arrow -> vane 0.1420 m from the straw -> 21 - --skew-vane -> spacing 15.000 deg off -> 22 - --wide-gold -> gold/red line at 0.09 m -> 23 - --short-skids -> forward tip 15.20 deg (CoM still 0.289 m inside) -> 24 - --loose-pin -> 2 components -> 25 Render: render_hero.py wrote the hero and preview. Framing fill y 0.856, x 0.503, margins >= 0.033. Asset-quality floors pass (edge90 0.028); a violation remaps to 26. Asset sheet (docs/gallery/asset-sheets/archery-target.webp): not the least-designed object in the lineup; the hydrant and the wheelbarrow are plainer. Isolated it reads at once as a range target: coiled courses and bindings, ringed face with arrows, braced easel, numbered board. Weak point: the 2.7 m turf patch makes the panel small, and the quiver hides behind a skid from the sheet's angle. Contact sheet: luma 0.2389 against calibration 0.2369-0.2428 (in band; first draft 0.2492). Stage 0.1984 against 0.1919-0.2517 (in band). Saturation 0.1998 against 0.1525-0.2367 (in band). Wedge warmth +0.0978 against -0.1440/+0.1052/+0.0921 (inside the spread). Thumbnail legible. Also updated: README, CLAUDE.md, AGENTS.md counts (52 -> 53), ROADMAP Sports list (archery target struck as shipped), asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (108 pages, 0 failures), check_falsifier_targets, check_exit_code_readme, check_engine_id, check_gallery_images and the count check pass. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent d766fe0 commit 2205044

68 files changed

Lines changed: 8609 additions & 115 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
@@ -190,6 +190,7 @@
190190
"showcase/bowling-pins",
191191
"showcase/pond-edge",
192192
"showcase/stand-mixer",
193-
"showcase/cargo-loader"
193+
"showcase/cargo-loader",
194+
"showcase/archery-target"
194195
]
195196
}

‎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 52 showcase pieces (counts are CI-enforced against README.md)
24+
examples, and 53 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, 52 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 53 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>52 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>53 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 52 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 53 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>52 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>53 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>
@@ -161,6 +161,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
161161
<a href="showcase/pond-edge/"><img src="showcase/pond-edge/preview.webp" width="24%" alt="Pond edge: a dark rippled pond on a raised soil disc, cattails with brown seed heads and rush tufts on the far bank, notched lily pads and two pink-white water lilies, wet stones and a branch at the waterline, on a dark studio floor" /></a>
162162
<a href="showcase/stand-mixer/"><img src="showcase/stand-mixer/preview.webp" width="24%" alt="Stand mixer: a slate-blue retro tilt-head stand mixer with a chrome trim band and a brushed steel bowl on a stone countertop, beside a wire whisk, a steel measuring cup and two brown eggs in a terracotta dish, on a dark studio floor" /></a>
163163
<a href="showcase/cargo-loader/"><img src="showcase/cargo-loader/preview.webp" width="24%" alt="Cargo loader: a yellow bipedal powered-lift exoframe in a crouch, hydraulic rams and pinned clevises on its legs and arms, an open roll-cage cockpit with a seat, harness and amber beacon, a power pack behind, holding a corrugated blue-grey crate on two forks, on a dark studio floor" /></a>
164+
<a href="showcase/archery-target/"><img src="showcase/archery-target/preview.webp" width="24%" alt="Archery target: a straw boss with a gold, red, blue, black and white face and five arrows, leaning on a timber easel numbered 12 with a hinged rear leg and a splay chain, on a turf patch with a leather quiver and a snapped arrow in the grass, on a dark studio floor" /></a>
164165
</p>
165166

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

264265
[`cargo-loader`](showcase/cargo-loader/) — the fourth `vehicles` piece: procedural sci-fi industrial cargo loader, a bipedal powered-lift exoframe (broad flat feet with rubber soles, grip cleats and toe bumpers; hydraulic legs of lofted box-section shins and thighs pinned at the ankle, knee and hip; arms hung from shoulder yokes on towers; every joint a clevis with a chrome pin through two lug bushings and an eye bushing; eight rams, each a collared cylinder with a chromed rod, a pinned bracket at each end and a hose; fork carriages with hazard-striped faces and forged L-tines; an open roll-cage cockpit with a bucket seat, four-point harness, joystick consoles, amber beacon and work lights; a power pack with a slatted grille, cooling fins, hazard bands, exhaust stacks and cable looms; a corrugated cargo crate held on the tines), whose soles grounded, clevis pins coaxial with their bushings, crate resting on both tines, soles level, ram rods coaxial with their cylinders, rod strokes, mass centre of loader and crate inside the soles' support polygon and single connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--float-foot` exits 16, `--offset-pin` 17, `--lift-crate` 18, `--tilt-sole` 19, `--skew-rod` 20, `--bottom-ram` 21, `--overload` 22, `--loose-light` 23.
265266

267+
[`archery-target`](showcase/archery-target/) — the fifth `sports` piece: procedural archery range target (a compressed-straw boss coiled from rope courses that show on its back and edge, bound with doubled jute twine tight over the crests; an 80 cm ten-zone World Archery face with ring lines, an X ring and a printed X, held by target pins; a timber easel leaning it back 12° on toe skids with knee braces, a ledge with a stop lip on a bolted rail and gussets, a numbered butt board, a strap hinge pinned to a rear leg in a steel ferrule and foot, a splay chain between eye bolts; five arrows in the face, one glancing into the edge, one snapped with its fletched half on the grass, a leather quiver of arrows among grass tufts on a turf patch), whose supports bedded in the turf, hinge pin coaxial with its knuckles, boss seated on its ledge and leaning on both legs, regulation gold height and size, points buried in the straw, fletching clear of the face, vanes at 120°, ring radii of the scoring table, forward tip angle and single connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--float-foot` exits 16, `--offset-hinge` 17, `--lift-boss` 18, `--high-boss` 19, `--shallow-arrow` 20, `--short-arrow` 21, `--skew-vane` 22, `--wide-gold` 23, `--short-skids` 24, `--loose-pin` 25.
268+
266269
</details>
267270

268271
## Examples

0 commit comments

Comments
 (0)