Skip to content

Commit a8f82e0

Browse files
feat: add temp-override-join and gn-instance-grid smoke-gated examples
Witness the temp_override context path and generative GN Instance-on-Points topology with closed-form checks on 4.4 and 5.1. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent df3dd6d commit a8f82e0

15 files changed

Lines changed: 1520 additions & 0 deletions

File tree

.cursor-plugin/plugin.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,11 @@
6262
"examples/bmesh-gear",
6363
"examples/depsgraph-export",
6464
"examples/driver-wave",
65+
"examples/gn-instance-grid",
6566
"examples/gn-sdf-remesh",
6667
"examples/shader-node-group",
6768
"examples/swatch-grid",
69+
"examples/temp-override-join",
6870
"examples/turntable",
6971
"examples/wave-displace"
7072
]

.github/workflows/blender-smoke.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,3 +194,21 @@ jobs:
194194
# Tint values differ. Exits non-zero on failure.
195195
xvfb-run -a "$BLENDER" --background \
196196
--python examples/shader-node-group/shader_node_group.py --
197+
198+
- name: Shipped example - temp-override join (context override)
199+
run: |
200+
set -euo pipefail
201+
# Frame-independent check only (no render): three cubes joined under
202+
# bpy.context.temp_override; asserts one mesh remains, sources are gone,
203+
# and topology is verts=24 faces=18. Exits non-zero on failure.
204+
xvfb-run -a "$BLENDER" --background \
205+
--python examples/temp-override-join/temp_override_join.py --
206+
207+
- name: Shipped example - GN instance grid (Instance on Points)
208+
run: |
209+
set -euo pipefail
210+
# Frame-independent check only (no render): generative GN tree instances a
211+
# cube on a 3x3 grid and realizes; asserts eval verts=72 faces=54 and Set
212+
# Material carries Lime. Exits non-zero on failure.
213+
xvfb-run -a "$BLENDER" --background \
214+
--python examples/gn-instance-grid/gn_instance_grid.py --

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,34 @@ One reusable `TintedGloss` group declared via `tree.interface.new_socket`, insta
161161
materials with different Tint values. Witnesses the grouping contract: shared datablock
162162
(`users == 2`), parameters on the group **node** — two spheres, one group, two colors.
163163

164+
</td>
165+
</tr>
166+
<tr>
167+
<td width="46%" valign="middle">
168+
<a href="examples/temp-override-join/"><img src="examples/temp-override-join/preview.webp" alt="Temp-override join: an amber L-shaped mesh made of three joined unit cubes on a dark studio floor, viewed into the open corner" /></a>
169+
</td>
170+
<td valign="middle">
171+
172+
### [temp-override-join](examples/temp-override-join/)
173+
174+
Three unit cubes joined into one L-shaped mesh under `bpy.context.temp_override` — the
175+
supported replacement for the removed `context.copy()` dict-pass form. Asserts one mesh
176+
remains, sources are gone, and topology is verts = 8 × blocks, faces = 6 × blocks.
177+
178+
</td>
179+
</tr>
180+
<tr>
181+
<td width="46%" valign="middle">
182+
<a href="examples/gn-instance-grid/"><img src="examples/gn-instance-grid/preview.webp" alt="GN instance grid: nine lime-green cubes in a 3x3 grid on a dark studio floor, instanced via Geometry Nodes Instance on Points" /></a>
183+
</td>
184+
<td valign="middle">
185+
186+
### [gn-instance-grid](examples/gn-instance-grid/)
187+
188+
A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realize Instances —
189+
attached as a `NODES` modifier with no Group Input. Asserts evaluated topology is
190+
verts = 72, faces = 54, and `Set Material` carries the lime accent.
191+
164192
</td>
165193
</tr>
166194
</table>
18.2 KB
Loading
18.9 KB
Loading

docs/gallery/gn-instance-grid/index.html

Lines changed: 469 additions & 0 deletions
Large diffs are not rendered by default.

docs/gallery/index.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,16 @@ <h1>Examples Gallery</h1>
176176
<button class="chip active" data-tag="" type="button">All</button>
177177
<button class="chip" data-tag="animation" type="button">animation</button>
178178
<button class="chip" data-tag="bmesh" type="button">bmesh</button>
179+
<button class="chip" data-tag="context" type="button">context</button>
179180
<button class="chip" data-tag="depsgraph" type="button">depsgraph</button>
180181
<button class="chip" data-tag="drivers" type="button">drivers</button>
181182
<button class="chip" data-tag="export" type="button">export</button>
182183
<button class="chip" data-tag="geometry-nodes" type="button">geometry-nodes</button>
184+
<button class="chip" data-tag="instancing" type="button">instancing</button>
183185
<button class="chip" data-tag="materials" type="button">materials</button>
184186
<button class="chip" data-tag="mesh" type="button">mesh</button>
185187
<button class="chip" data-tag="node-groups" type="button">node-groups</button>
188+
<button class="chip" data-tag="operators" type="button">operators</button>
186189
<button class="chip" data-tag="performance" type="button">performance</button>
187190
<button class="chip" data-tag="rendering" type="button">rendering</button>
188191
</div>
@@ -276,6 +279,28 @@ <h2><a href="shader-node-group/">shader-node-group</a></h2>
276279
<a class="card-link" href="shader-node-group/">View example <span aria-hidden="true">&rarr;</span></a>
277280
</div>
278281
</article>
282+
<article class="card" data-tags="operators context">
283+
<a class="card-media" href="temp-override-join/" aria-label="temp-override-join example detail page">
284+
<img src="assets/temp-override-join-hero.webp" alt="temp-override-join — Join three unit cubes into one L-shaped mesh under bpy" loading="lazy" decoding="async" />
285+
</a>
286+
<div class="card-body">
287+
<h2><a href="temp-override-join/">temp-override-join</a></h2>
288+
<p class="teaches">Join three unit cubes into one L-shaped mesh under bpy.context.temp_override — the supported replacement for the removed context.copy() dict-pass form.</p>
289+
<p class="witnesses"><span class="tag">witnesses</span> temp_override actually applies: join consumes the sources, exactly one mesh remains, and topology is verts = 8 × blocks, faces = 6 × blocks.</p>
290+
<a class="card-link" href="temp-override-join/">View example <span aria-hidden="true">&rarr;</span></a>
291+
</div>
292+
</article>
293+
<article class="card" data-tags="geometry-nodes instancing">
294+
<a class="card-media" href="gn-instance-grid/" aria-label="gn-instance-grid example detail page">
295+
<img src="assets/gn-instance-grid-hero.webp" alt="gn-instance-grid — A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realize Instances — attached as a NODES modifier with no Group Input geometry" loading="lazy" decoding="async" />
296+
</a>
297+
<div class="card-body">
298+
<h2><a href="gn-instance-grid/">gn-instance-grid</a></h2>
299+
<p class="teaches">A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realize Instances — attached as a NODES modifier with no Group Input geometry.</p>
300+
<p class="witnesses"><span class="tag">witnesses</span> Realized instances produce closed-form topology: eval verts = grid points × cube verts (3 × 3 × 8 = 72), and Set Material carries the accent onto the evaluated mesh.</p>
301+
<a class="card-link" href="gn-instance-grid/">View example <span aria-hidden="true">&rarr;</span></a>
302+
</div>
303+
</article>
279304
</div>
280305
</main>
281306
<footer>

0 commit comments

Comments
 (0)