From f298aefab0c9e5cf20d33f742ed70ba2b7510445 Mon Sep 17 00:00:00 2001 From: fOuttaMyPaint Date: Wed, 22 Jul 2026 14:07:24 -0400 Subject: [PATCH] feat: add soccer-ball-goldberg example Witness the Goldberg polyhedron as a bmesh contract: a soccer ball built by truncating a bmesh icosphere at 1/3 per edge, faces ordered by link-topology walks. Closed-form invariants asserted with printed tolerances: 60/90/32 + Euler 2, 12-pentagon/20-hexagon census, uniform degree 3, edge-length and circumsphere uniformity at the float32 noise floor, face planarity against an independent Newell normal, and panel materials bound by face vertex count rather than enumeration order. Distinct from bmesh-gear (parametric extrusion): this carries polyhedral invariants plus per-face-class material binding, and the smoothed render inverts on sight if the binding does. Signed-off-by: fOuttaMyPaint --- .cursor-plugin/plugin.json | 1 + .github/workflows/blender-smoke.yml | 13 + README.md | 24 +- ROADMAP.md | 5 + .../assets/soccer-ball-goldberg-hero.webp | Bin 0 -> 9734 bytes .../soccer-ball-goldberg-contact-sheet.webp | Bin 0 -> 41934 bytes docs/gallery/index.html | 11 + docs/gallery/prop-origin-transform/index.html | 2 +- docs/gallery/soccer-ball-goldberg/index.html | 663 ++++++++++++++++++ examples/gallery.json | 12 + examples/soccer-ball-goldberg/README.md | 78 +++ examples/soccer-ball-goldberg/preview.webp | Bin 0 -> 8704 bytes .../soccer_ball_goldberg.py | 416 +++++++++++ 13 files changed, 1222 insertions(+), 3 deletions(-) create mode 100644 docs/gallery/assets/soccer-ball-goldberg-hero.webp create mode 100644 docs/gallery/contact-sheets/soccer-ball-goldberg-contact-sheet.webp create mode 100644 docs/gallery/soccer-ball-goldberg/index.html create mode 100644 examples/soccer-ball-goldberg/README.md create mode 100644 examples/soccer-ball-goldberg/preview.webp create mode 100644 examples/soccer-ball-goldberg/soccer_ball_goldberg.py diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 755f3fe..1159229 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -85,6 +85,7 @@ "examples/shader-node-group", "examples/shape-key-blend", "examples/sky-texture-sun-elevation", + "examples/soccer-ball-goldberg", "examples/swatch-grid", "examples/temp-override-join", "examples/text-version-stamp", diff --git a/.github/workflows/blender-smoke.yml b/.github/workflows/blender-smoke.yml index c4655eb..3b85ec4 100644 --- a/.github/workflows/blender-smoke.yml +++ b/.github/workflows/blender-smoke.yml @@ -516,3 +516,16 @@ jobs: # on failure. xvfb-run -a "$BLENDER" --background \ --python examples/prop-origin-transform/prop_origin_transform.py -- + + - name: Shipped example - soccer ball Goldberg (polyhedron invariants + panel binding) + run: | + set -euo pipefail + # Check only (no render): a bmesh icosphere truncated at 1/3 per edge + # into the Goldberg polyhedron; asserts closed-form counts (60/90/32, + # Euler 2), 12-pentagon/20-hexagon census, uniform degree 3, + # watertightness, edge-length uniformity, face planarity vs an + # independent Newell normal, centroid-at-origin circumsphere, and + # panel materials bound by face vertex count. Exits non-zero on + # failure. + xvfb-run -a "$BLENDER" --background \ + --python examples/soccer-ball-goldberg/soccer_ball_goldberg.py -- diff --git a/README.md b/README.md index 4275c99..5526a24 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@

- 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  36 examples + 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  37 examples

@@ -36,7 +36,7 @@ ## Overview -This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 36 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support. +This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 37 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support. The content is consumed by AI coding agents (Cursor, Claude Code, any MCP-capable client) when working on Blender add-ons, geometry nodes scripts, batch pipelines, or animation tooling. There is no build step. Edit the markdown and Python files directly. @@ -700,6 +700,26 @@ Extends [`parent-inverse-orrery`](examples/parent-inverse-orrery/) without retreading orbits. Dual-panel still: TRAP (bare parent — empty socket + teleported flange) vs MPI KEEP. + + + + +Soccer ball Goldberg: a white soccer ball with black pentagon panels on a dark studio floor — a bmesh icosphere truncated at one-third per edge into the Goldberg polyhedron, proving closed-form counts, uniform degree, equal edges, planar faces, one circumsphere, and panels bound by face vertex count + + + +### [soccer-ball-goldberg](examples/soccer-ball-goldberg/) + +The truncated icosahedron as a bmesh contract: every icosphere edge cut at +exactly `1/3`, faces ordered by link-topology walks (nothing hand-listed), +and every invariant asserted as a closed form — `60/90/32`, Euler 2, uniform +degree 3, edge lengths within 3e-5, planar faces against an independent +Newell normal, one circumsphere, and the black pentagons / white hexagons +bound by face vertex count, never enumeration order. Sibling to +[`bmesh-gear`](examples/bmesh-gear/) (parametric extrusion): this one +witnesses polyhedral invariants plus per-face-class material binding. The +smoothed render inverts on sight if the panel binding does. + diff --git a/ROADMAP.md b/ROADMAP.md index 9c1e9ef..f5fa95f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -120,6 +120,11 @@ Not committed; target list for the next content version. (v0.3.0 shipped the smo - Volumetric scatter optical-depth witness: Volume Scatter density → Beer–Lambert transmittance along a known path (Cycles; Stage deviation) - Freestyle SVG / line-set witness: Freestyle line set on a silhouette (full render pass; prefer Line Art first) - ~~prop-origin-transform witness~~ **SHIPPED** as `examples/prop-origin-transform/` — origin to base center + data-API scale apply + `matrix_parent_inverse` for a bolted accessory; scale `(1,1,1)`, local `min.z==0`, world AABB delta 0, bare jump ~0.43 m, MPI err ~3e-8; stale `matrix_world` until `view_layer.update()`; byte-identical on 4.5.11 and 5.1.2 +- ~~Goldberg polyhedron topology witness~~ **SHIPPED** as `examples/soccer-ball-goldberg/` — soccer ball as a truncated icosahedron: bmesh icosphere cut at 1/3 per edge, faces ordered by link-topology walks; closed forms 60/90/32 + Euler 2, census 12×5+20×6, uniform degree 3, edge dev 6.5e-06, planarity 1.9e-06 (independent Newell normal), circumsphere dev 9.0e-06, panels bound by face vertex count (enumeration-order probes exit 13); float32 noise floor ~9e-6 → 3e-5 gates; byte-identical on 4.5.11 and 5.1.2 +- Mirror-modifier symmetry witness: half-model completed by Mirror evaluated through the depsgraph — evaluated-vs-original counts (2n − welded centerline), exact ±X partner for every evaluated vertex, merge-threshold weld proof, failure dramatically visible (half a subject / split seam). Strongest subject: a generic vehicle body +- Chess-piece lathe witness: a turned piece (rook/pawn) via Screw modifier or bmesh spin from an authored profile — evaluated verts == profile × steps (minus pole merges), ring radii match the profile closed form, axis of revolution exact +- Dice-pair per-face witness: material/attribute assignment driven by face normal direction, opposite-faces-sum-to-7 as an independently computed invariant, pip placement from a closed-form lattice +- Bicycle-wheel radial witness: spokes via radial Array with object offset — exact angular spacing, spoke count, hub/rim concentricity, every evaluated spoke endpoint on its computed rim coordinate - ~~mesh-hygiene-audit witness~~ **SHIPPED** as `examples/mesh-hygiene-audit/` — engine-ingest topology checklist on a stepped street electrical pedestal: no ngons, no loose verts, manifold edges (exactly 2 faces), no zero-area faces (`min_area` printed), positive signed volume, Euler `V−E+F==2` (24/44/22, volume 0.989248); byte-identical on 4.5.11 and 5.1.2; dual-panel dirty vs clean still - UV atlas pack witness — lightmap/unique UV island packing with non-overlap + utilization closed forms (deferred behind hygiene/origin; overlaps `uv-layer-grid` / `triangulate-tangents` / `gltf-export-roundtrip` UV arc) - Attribute domain witness: writing a POINT-domain color attribute and reading it as if it were CORNER (or vice versa) silently shears colors across shared verts — companion to `color-attribute-wheel` diff --git a/docs/gallery/assets/soccer-ball-goldberg-hero.webp b/docs/gallery/assets/soccer-ball-goldberg-hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..1fb6445284e15f96a586aa2ea2e7f1e07d92d7ad GIT binary patch literal 9734 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 View example +

+ + soccer-ball-goldberg — A soccer ball as a Goldberg polyhedron: a bmesh icosphere truncated at 1/3 per edge, faces ordered by link-topology walks, panels bound by face vertex count. + +
+

soccer-ball-goldberg

+

A soccer ball as a Goldberg polyhedron: a bmesh icosphere truncated at 1/3 per edge, faces ordered by link-topology walks, panels bound by face vertex count.

+

witnesses Goldberg invariants are closed forms — counts, degree 3, uniform edges, planar faces, one circumsphere — and panels bind by vertex count, never enumeration order.

+ View example +
+