diff --git a/.github/workflows/blender-smoke.yml b/.github/workflows/blender-smoke.yml
index 8437253..22cb32c 100644
--- a/.github/workflows/blender-smoke.yml
+++ b/.github/workflows/blender-smoke.yml
@@ -198,9 +198,10 @@ jobs:
- name: Shipped example - temp-override join (context override)
run: |
set -euo pipefail
- # Frame-independent check only (no render): three cubes joined under
+ # Frame-independent check only (no render): three-step staircase joined under
# bpy.context.temp_override; asserts one mesh remains, sources are gone,
- # and topology is verts=24 faces=18. Exits non-zero on failure.
+ # topology verts=24 faces=18, and local Z spans all steps. Exits non-zero
+ # on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/temp-override-join/temp_override_join.py --
@@ -208,17 +209,18 @@ jobs:
run: |
set -euo pipefail
# Frame-independent check only (no render): generative GN tree instances a
- # cube on a 3x3 grid and realizes; asserts eval verts=72 faces=54 and Set
- # Material carries Lime. Exits non-zero on failure.
+ # cube on a 3x3 grid and realizes; asserts eval verts=72 faces=54, Set
+ # Material carries Lime, and corner center matches the grid. 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.
+ # Frame-independent check only (no render): relative Tall key lifts+flares
+ # at value=0.5; asserts undeformed mesh stays at Basis and every evaluated
+ # vert matches basis + value*(key-basis). Exits non-zero on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/shape-key-blend/shape_key_blend.py --
@@ -226,7 +228,7 @@ jobs:
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.
+ # curve data API; asserts 8 points, bevel_depth=0.15, fill caps, eval
+ # verts=1044 faces=1028, tube rests on floor. Exits non-zero on failure.
xvfb-run -a "$BLENDER" --background \
--python examples/curve-bevel-arc/curve_bevel_arc.py --
diff --git a/README.md b/README.md
index d7cc82c..fa352c5 100644
--- a/README.md
+++ b/README.md
@@ -165,15 +165,15 @@ materials with different Tint values. Witnesses the grouping contract: shared da
-
+
### [temp-override-join](examples/temp-override-join/)
-Three unit cubes joined into one L-shaped mesh under `bpy.context.temp_override` — the
-supported replacement for the removed `context.copy()` dict-pass form. Asserts one mesh
-remains, sources are gone, and topology is verts = 8 × blocks, faces = 6 × blocks.
+Three unit cubes joined into a staircase under `bpy.context.temp_override` — the supported
+replacement for the removed `context.copy()` dict-pass form. Asserts one mesh remains,
+sources are gone, and local Z spans all three steps.
@@ -193,16 +193,15 @@ verts = 72, faces = 54, and `Set Material` carries the lime accent.
-
+
### [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)`.
+A relative Tall shape key that lifts and flares the top face — authored through
+`shape_key_add` / `key_blocks` / `.value`. Witnesses that shape keys do not rewrite
+`mesh.vertices`: every evaluated vert matches `basis + value × (key − basis)`.
@@ -215,9 +214,9 @@ A relative shape key authored through the data API — `shape_key_add`, per-vert
### [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.
+`bezier_points`, `bevel_depth`, `use_fill_caps` — so the curve renders as a solid tube
+without a prior mesh conversion. Asserts eight points, `bevel_depth == 0.15`, and
+evaluated topology 1044 verts / 1028 faces.
diff --git a/docs/gallery/assets/curve-bevel-arc-hero.webp b/docs/gallery/assets/curve-bevel-arc-hero.webp
index 0a65f1b..5620709 100644
Binary files a/docs/gallery/assets/curve-bevel-arc-hero.webp and b/docs/gallery/assets/curve-bevel-arc-hero.webp differ
diff --git a/docs/gallery/assets/gn-instance-grid-hero.webp b/docs/gallery/assets/gn-instance-grid-hero.webp
index e0e97fa..4a19136 100644
Binary files a/docs/gallery/assets/gn-instance-grid-hero.webp and b/docs/gallery/assets/gn-instance-grid-hero.webp differ
diff --git a/docs/gallery/assets/shape-key-blend-hero.webp b/docs/gallery/assets/shape-key-blend-hero.webp
index 000dc7d..6ecfd93 100644
Binary files a/docs/gallery/assets/shape-key-blend-hero.webp and b/docs/gallery/assets/shape-key-blend-hero.webp differ
diff --git a/docs/gallery/assets/temp-override-join-hero.webp b/docs/gallery/assets/temp-override-join-hero.webp
index cc7e9f2..6428d88 100644
Binary files a/docs/gallery/assets/temp-override-join-hero.webp and b/docs/gallery/assets/temp-override-join-hero.webp differ
diff --git a/docs/gallery/curve-bevel-arc/index.html b/docs/gallery/curve-bevel-arc/index.html
index ccfeff0..dc67c9c 100644
--- a/docs/gallery/curve-bevel-arc/index.html
+++ b/docs/gallery/curve-bevel-arc/index.html
@@ -4,18 +4,18 @@
curve-bevel-arc — Examples — Blender Developer Tools
-
+
-
+
-
+