Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,13 @@
],
"examples": [
"examples/bmesh-gear",
"examples/curve-bevel-arc",
"examples/depsgraph-export",
"examples/driver-wave",
"examples/gn-instance-grid",
"examples/gn-sdf-remesh",
"examples/shader-node-group",
"examples/shape-key-blend",
"examples/swatch-grid",
"examples/temp-override-join",
"examples/turntable",
Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/blender-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,3 +212,21 @@ jobs:
# Material carries Lime. Exits non-zero on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/gn-instance-grid/gn_instance_grid.py --

- name: Shipped example - shape-key blend (data API + evaluated mesh)
run: |
set -euo pipefail
# Frame-independent check only (no render): relative Tall shape key at
# value=0.5; asserts undeformed mesh stays at Basis and evaluated z matches
# basis + value*(key-basis). Exits non-zero on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/shape-key-blend/shape_key_blend.py --

- name: Shipped example - curve bevel arc (Bezier + bevel_depth)
run: |
set -euo pipefail
# Frame-independent check only (no render): beveled Bezier semicircle via
# curve data API; asserts 8 points, bevel_depth=0.12, eval verts=850
# faces=840, tube rests on floor. Exits non-zero on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/curve-bevel-arc/curve_bevel_arc.py --
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,36 @@ A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realiz
attached as a `NODES` modifier with no Group Input. Asserts evaluated topology is
verts = 72, faces = 54, and `Set Material` carries the lime accent.

</td>
</tr>
<tr>
<td width="46%" valign="middle">
<a href="examples/shape-key-blend/"><img src="examples/shape-key-blend/preview.webp" alt="Shape-key blend: a tall violet rectangular block on a dark studio floor, stretched by a relative Tall shape key at value 0.5" /></a>
</td>
<td valign="middle">

### [shape-key-blend](examples/shape-key-blend/)

A relative shape key authored through the data API — `shape_key_add`, per-vertex
`key_blocks` data, and `.value`. Witnesses that shape keys do not rewrite
`mesh.vertices`: undeformed top stays at Basis, evaluated z matches
`basis + value × (key − basis)`.

</td>
</tr>
<tr>
<td width="46%" valign="middle">
<a href="examples/curve-bevel-arc/"><img src="examples/curve-bevel-arc/preview.webp" alt="Curve bevel arc: a rose beveled Bezier semicircle tube resting on a dark studio floor" /></a>
</td>
<td valign="middle">

### [curve-bevel-arc](examples/curve-bevel-arc/)

A beveled Bezier semicircle authored on `bpy.types.Curve` — `splines.new('BEZIER')`,
`bezier_points`, `bevel_depth` — so the curve renders as a tube without a prior mesh
conversion. Asserts eight points, `bevel_depth == 0.12`, and evaluated topology
850 verts / 840 faces.

</td>
</tr>
</table>
Expand Down
Binary file added docs/gallery/assets/curve-bevel-arc-hero.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/gallery/assets/shape-key-blend-hero.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
451 changes: 451 additions & 0 deletions docs/gallery/curve-bevel-arc/index.html

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions docs/gallery/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,10 @@ <h1>Examples Gallery</h1>
<div class="chips" role="toolbar" aria-label="Filter examples by topic">
<button class="chip active" data-tag="" type="button">All</button>
<button class="chip" data-tag="animation" type="button">animation</button>
<button class="chip" data-tag="bevel" type="button">bevel</button>
<button class="chip" data-tag="bmesh" type="button">bmesh</button>
<button class="chip" data-tag="context" type="button">context</button>
<button class="chip" data-tag="curves" type="button">curves</button>
<button class="chip" data-tag="depsgraph" type="button">depsgraph</button>
<button class="chip" data-tag="drivers" type="button">drivers</button>
<button class="chip" data-tag="export" type="button">export</button>
Expand All @@ -188,6 +190,7 @@ <h1>Examples Gallery</h1>
<button class="chip" data-tag="operators" type="button">operators</button>
<button class="chip" data-tag="performance" type="button">performance</button>
<button class="chip" data-tag="rendering" type="button">rendering</button>
<button class="chip" data-tag="shape-keys" type="button">shape-keys</button>
</div>
<main id="main">
<div class="grid">
Expand Down Expand Up @@ -301,6 +304,28 @@ <h2><a href="gn-instance-grid/">gn-instance-grid</a></h2>
<a class="card-link" href="gn-instance-grid/">View example <span aria-hidden="true">&rarr;</span></a>
</div>
</article>
<article class="card" data-tags="mesh shape-keys">
<a class="card-media" href="shape-key-blend/" aria-label="shape-key-blend example detail page">
<img src="assets/shape-key-blend-hero.webp" alt="shape-key-blend — A relative shape key authored entirely through the data API — shape_key_add, per-vertex key_blocks data, and " loading="lazy" decoding="async" />
</a>
<div class="card-body">
<h2><a href="shape-key-blend/">shape-key-blend</a></h2>
<p class="teaches">A relative shape key authored entirely through the data API — shape_key_add, per-vertex key_blocks data, and .value — read back from the depsgraph-evaluated mesh.</p>
<p class="witnesses"><span class="tag">witnesses</span> Shape keys do not rewrite mesh.vertices: undeformed top z stays at Basis, and evaluated z matches basis + value × (key − basis).</p>
<a class="card-link" href="shape-key-blend/">View example <span aria-hidden="true">&rarr;</span></a>
</div>
</article>
<article class="card" data-tags="curves bevel">
<a class="card-media" href="curve-bevel-arc/" aria-label="curve-bevel-arc example detail page">
<img src="assets/curve-bevel-arc-hero.webp" alt="curve-bevel-arc — A beveled Bezier semicircle authored on bpy" loading="lazy" decoding="async" />
</a>
<div class="card-body">
<h2><a href="curve-bevel-arc/">curve-bevel-arc</a></h2>
<p class="teaches">A beveled Bezier semicircle authored on bpy.types.Curve — splines.new(&#x27;BEZIER&#x27;), bezier_points, bevel_depth — so the curve renders as a tube without a prior mesh conversion.</p>
<p class="witnesses"><span class="tag">witnesses</span> Curve tubes are curve datablocks: eight Bezier points, bevel_depth == 0.12, and the evaluated mesh has deterministic topology (850 verts, 840 faces) resting on the floor.</p>
<a class="card-link" href="curve-bevel-arc/">View example <span aria-hidden="true">&rarr;</span></a>
</div>
</article>
</div>
</main>
<footer>
Expand Down
Loading
Loading