From 007c59c966dad206f1ce76e6941173ecd653c30d Mon Sep 17 00:00:00 2001 From: fOuttaMyPaint Date: Sun, 19 Jul 2026 16:09:53 -0400 Subject: [PATCH] feat: add lod-decimate-chain example witnessing the modifier LOD contract Game engines consume LOD chains, and the modifier-based chain is where AI-generated code drifts: baking the reduction into the base mesh, stacking ratios, or losing silhouette-critical extremes. A closed-form retro rocket evaluated at LOD0/1/2 through the depsgraph pins all three: non-destructive evaluation, ratio-bounded triangle counts, and bbox preservation. The Decimate API is stable across 4.5 LTS and 5.1; the example demonstrates that by producing identical measured values on both, and documents the aggressive-ratio nose-tip collapse as the caught silhouette failure mode. Signed-off-by: fOuttaMyPaint --- .cursor-plugin/plugin.json | 1 + .github/workflows/blender-smoke.yml | 11 + README.md | 23 +- ROADMAP.md | 1 + .../assets/lod-decimate-chain-hero.webp | Bin 0 -> 16054 bytes .../lod-decimate-chain-contact-sheet.webp | Bin 0 -> 39276 bytes docs/gallery/index.html | 11 + docs/gallery/lod-decimate-chain/index.html | 672 ++++++++++++++++++ examples/gallery.json | 12 + examples/lod-decimate-chain/README.md | 50 ++ .../lod-decimate-chain/lod_decimate_chain.py | 427 +++++++++++ examples/lod-decimate-chain/preview.webp | Bin 0 -> 14080 bytes 12 files changed, 1205 insertions(+), 3 deletions(-) create mode 100644 docs/gallery/assets/lod-decimate-chain-hero.webp create mode 100644 docs/gallery/contact-sheets/lod-decimate-chain-contact-sheet.webp create mode 100644 docs/gallery/lod-decimate-chain/index.html create mode 100644 examples/lod-decimate-chain/README.md create mode 100644 examples/lod-decimate-chain/lod_decimate_chain.py create mode 100644 examples/lod-decimate-chain/preview.webp diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index acefbd4..1d8dca7 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -72,6 +72,7 @@ "examples/gn-sdf-remesh", "examples/grease-pencil-rosette", "examples/image-pixels-testcard", + "examples/lod-decimate-chain", "examples/parent-inverse-orrery", "examples/png-exr-alpha", "examples/shader-node-group", diff --git a/.github/workflows/blender-smoke.yml b/.github/workflows/blender-smoke.yml index 5499cea..97eba6b 100644 --- a/.github/workflows/blender-smoke.yml +++ b/.github/workflows/blender-smoke.yml @@ -382,3 +382,14 @@ jobs: # bindings within float tolerances. Exits non-zero on failure. xvfb-run -a "$BLENDER" --background \ --python examples/gltf-export-roundtrip/gltf_export_roundtrip.py -- + + - name: Shipped example - LOD decimate chain (depsgraph + ratio bounds) + run: | + set -euo pipefail + # Check only (no render): a lathed retro rocket evaluated at LOD0/1/2 + # through the Decimate modifier; asserts closed-form base topology and + # bbox, evaluated-vs-original non-destructiveness (obj.data unchanged), + # evaluated triangle counts within 5% of ratio*base, and silhouette + # (bbox) preservation within 1e-3. Exits non-zero on failure. + xvfb-run -a "$BLENDER" --background \ + --python examples/lod-decimate-chain/lod_decimate_chain.py -- diff --git a/README.md b/README.md index 9e2322f..febd367 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@

- 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  24 examples + 12 skills  •  6 rules  •  2 templates  •  17 snippets  •  25 examples

@@ -36,7 +36,7 @@ ## Overview -This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 24 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 25 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. @@ -466,7 +466,7 @@ round-trips through the raw `POINT` buffer.

-Game asset pipeline — 1 example +Game asset pipeline — 2 examples @@ -485,6 +485,23 @@ loop), V-flipped UVs, and per-triangle material bindings — all against the depsgraph-evaluated mesh. The exporter/importer RNA signatures are probed byte-identical on 4.5.11 and 5.1.2 and guarded against future renames. + + + + +
+LOD decimate chain: three retro rockets side by side on a dark studio floor - cream body, red nose and fins, teal porthole - showing smooth LOD0, halved LOD1, and visibly crunched LOD2 with a hexagonal porthole + + +### [lod-decimate-chain](examples/lod-decimate-chain/) + +One recognizable asset at three LODs via `DECIMATE` modifiers evaluated through +the depsgraph. Asserts the reduction is non-destructive (the original datablock +keeps its closed-form counts), each LOD's evaluated triangle count lands within +5% of `ratio x base` (measured 0.0–0.44%), and the silhouette-critical bbox +survives within 1e-3 — with the aggressive-ratio nose-tip collapse documented +as the caught failure mode. +
diff --git a/ROADMAP.md b/ROADMAP.md index 35d089d..ff3ec84 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -104,6 +104,7 @@ Not committed; target list for the next content version. (v0.3.0 shipped the smo - Light-linking collection witness: object light linking / receiver collections so a key illuminates only the hero (common AI miss when staging multi-light studios) - ~~VSE sequences-to-strips witness~~ **SHIPPED** as `examples/vse-cut-list/` — `.sequences` removed on 5.x (4.5 bridges to `.strips`), `new_effect` end kwarg `frame_end=` (4.5) vs `length=` (5.x), `frame_final_*` deprecated in favor of `left_handle`/`right_handle`/`duration`, TRANSFORM effect type removed, GAMMA_CROSS clamps to the source overlap, effect strips consume inputs only when stacked above them, same-scene scene strips render transparent; save/reload round-trip + tiny-render pixel witness - ~~glTF export round-trip witness~~ **SHIPPED** as `examples/gltf-export-roundtrip/` — `export_yup` bakes `(x,y,z)→(x,z,−y)` into vertex data with no node rotation (probed identical on 4.5.11 and 5.1.2), `export_apply` ships the evaluated mesh (one disk vertex per evaluated loop), TEXCOORD_0 is V-flipped on disk, per-triangle material bindings survive; exporter/importer RNA signatures byte-identical between 4.5.11 and 5.1.2 (guarded against future renames); `Mesh.calc_normals()` removal on 5.x surfaced during authoring +- ~~LOD decimate chain witness~~ **SHIPPED** as `examples/lod-decimate-chain/` — Decimate COLLAPSE evaluated through the depsgraph is non-destructive (obj.data keeps closed-form counts), evaluated tris hit `ratio × base` within 5% (measured 0.0–0.44%), silhouette bbox survives within 1e-3 (measured 7.7e-6); a stacked Decimate halves the effective ratio, an aggressive 0.02 ratio collapses the nose tip — both caught failure modes - GAMMA_CROSS blend-curve witness: the cross blend is not the naive linear mix (mid-cross measured (0.341, 0.349, 0.463) from crimson (0.85, 0.10, 0.22) and teal (0.06, 0.75, 0.80)) — derive and assert the gamma-space closed form per frame; follow-up to `vse-cut-list` - Falsy `bpy_prop_collection` trap snippet: an empty collection is falsy, so `editor.strips or editor.sequences` silently falls through to the legacy accessor on an empty timeline — always branch on `hasattr`; likely generalizes across the API (found authoring `vse-cut-list`) diff --git a/docs/gallery/assets/lod-decimate-chain-hero.webp b/docs/gallery/assets/lod-decimate-chain-hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..6e7d7c454ab857efc76c1eaac6eae666a0b825ff GIT binary patch literal 16054 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 literal 0 HcmV?d00001 diff --git a/docs/gallery/contact-sheets/lod-decimate-chain-contact-sheet.webp b/docs/gallery/contact-sheets/lod-decimate-chain-contact-sheet.webp new file mode 100644 index 0000000000000000000000000000000000000000..f7954bd20e736085ad09085e736d3f96642d9f95 GIT binary patch literal 39276 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 literal 0 HcmV?d00001 diff --git a/docs/gallery/index.html b/docs/gallery/index.html index c753c1c..ac03ee7 100644 --- a/docs/gallery/index.html +++ b/docs/gallery/index.html @@ -469,6 +469,17 @@

gltf-export-roundtrip

View example +
+ + lod-decimate-chain — A retro rocket at LOD0/1/2 via the Decimate modifier evaluated through the depsgraph. + +
+

lod-decimate-chain

+

A retro rocket at LOD0/1/2 via the Decimate modifier evaluated through the depsgraph. The check proves the reduction is non-destructive, the triangle count hits ratio x base within bounds, and silhouette-critical dimensions survive.

+

witnesses Evaluated-vs-original: the depsgraph carries the reduction while obj.data keeps the closed-form counts. A stacked Decimate halves the effective ratio (caught); an aggressive ratio collapses the nose tip (caught).

+ View example +
+