You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a12a6bf
Browse filesBrowse the repository at this point in the historyBrowse files
This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 20 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support.
39
+
This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 21 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support.
40
40
41
41
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.
42
42
@@ -171,7 +171,7 @@ non-destructive path.
171
171
</details>
172
172
173
173
<details>
174
-
<summary><strong>Mesh, curves & text</strong> — 6 examples</summary>
174
+
<summary><strong>Mesh, curves & text</strong> — 7 examples</summary>
175
175
176
176
<table>
177
177
<tr>
@@ -186,6 +186,20 @@ A 14-tooth gear built entirely with bmesh — with `bm.free()` in a `try`/`final
186
186
ownership contract demands. Asserts the closed-form vert/edge/face counts and that the
187
187
result is watertight (every edge borders exactly two faces).
188
188
189
+
</td>
190
+
</tr>
191
+
<tr>
192
+
<tdwidth="46%"valign="middle">
193
+
<ahref="examples/uv-layer-grid/"><imgsrc="examples/uv-layer-grid/preview.webp"alt="UV layer grid: two easel panels on a dark studio floor — left a flat teal square from a missing UV layer sampling texel (0,0), right a magenta/cyan neon checker proving pre-create + calc_uvs" /></a>
194
+
</td>
195
+
<tdvalign="middle">
196
+
197
+
### [uv-layer-grid](examples/uv-layer-grid/)
198
+
199
+
`bmesh.ops.create_grid(..., calc_uvs=True)` is a silent no-op unless a UV layer already
200
+
exists — without one an Image Texture samples texel (0, 0) everywhere. Asserts the hazard,
201
+
the pre-create repair against closed-form grid UVs, and an explicit assignment fallback.
- Gallery coverage follow-ups from the GPv3 review: light-linking, VSE sequences-to-strips witness (`grease-pencil-rosette`, `armature-bend`, `text-version-stamp`, and `image-pixels-testcard` shipped first)
101
-
- UV-layer authoring witness: `bmesh.ops.create_grid(calc_uvs=True)`silently creates no UV layer unless one already exists, and an Image Texture without UVs samples texel (0,0) everywhere (found while authoring `image-pixels-testcard`)
101
+
-~~UV-layer authoring witness~~**SHIPPED** as `examples/uv-layer-grid/` — `create_grid(..., calc_uvs=True)`silent no-op without a pre-existing UV layer; closed-form UV fill + explicit assignment fallback; dual-panel render (flat texel (0,0) vs neon checker)
102
102
- Image save-format witness: float images saved to PNG with varying alpha suffer premultiply quantization (~0.98 worst-case round-trip error at 8-bit alpha extremes); EXR vs PNG storage contract
103
+
- 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`
<pclass="teaches">The UV-layer authoring hazard — bmesh.ops.create_grid(..., calc_uvs=True) is a silent no-op unless a UV layer already exists; without one an Image Texture samples texel (0,0) everywhere.</p>
433
+
<pclass="witnesses"><spanclass="tag">witnesses</span> calc_uvs=True alone leaves 0 UV layers; pre-create + calc_uvs fills loops to the closed-form grid UVs ((x/size+1)/2, (y/size+1)/2) within 1e-6; explicit loop assignment is the calc_uvs-free fallback.</p>
434
+
<aclass="card-link" href="uv-layer-grid/">View example <spanaria-hidden="true">→</span></a>
0 commit comments