Skip to content

Commit 2228491

Browse files
TMHSDigitalclaude
andcommitted
fix(examples): redesign armature-bend as ribbed bellows hoses on steel flanges
The tube is now lathed from an (r, z) profile: brass collars at both ends and a ribbed rubber bellows between, standing on render-only steel foot flanges with brass bolt heads. Every weight is still a function of z alone, so the closed-form LBS check is untouched; the ribs make the bend legible (open on the outside of the curl, crowded on the inside). BoneTint colours the rib crests, and a Crest attribute darkens the valleys. The render path now runs the gallery_framing gate (exit 10), which it previously skipped. Evidence (live runs, local): - .scratch/blender-5.2.1-windows-x64/blender.exe (Blender 5.2.1 LTS): check-only exit 0, bones=4 verts=6688 lbs_max_err=5.33e-07 tip_deflection=3.188. --zero-curl exits 8 ("tip only moved 0.0000"). - .scratch/blender-4.5.11-windows-x64/blender.exe (Blender 4.5.11 LTS): check-only exit 0, same numbers. - Framing: fill x=0.688 y=0.789, margins l=0.106 r=0.137 b=0.100 t=0.067. - Contact sheet (docs/gallery/contact-sheets/armature-bend-contact-sheet.webp): candidate luma 0.243 / stage 0.192 / warmth -0.144 / sat 0.237, against damped-track-aim 0.151/0.145/+0.277/0.231 and bmesh-gear 0.236/0.177/+0.303/0.250. Saturation and stage are within the set. Warmth reads negative because the teal hose bases fill the brightest tenth of the lower half; the warm wedge pool is visible on the wall. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent cbe8b90 commit 2228491

13 files changed

Lines changed: 513 additions & 90 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ toward the core (dot ≥ 0.998).
735735
</tr>
736736
<tr>
737737
<td width="46%" valign="middle">
738-
<a href="examples/armature-bend/"><img src="examples/armature-bend/preview.webp" alt="Armature bend: three tapered tubes on a dark studio floor showing rest, half, and full curl under a four-bone armature, per-bone weight bands blending teal through amber to coral at the joints" /></a>
738+
<a href="examples/armature-bend/"><img src="examples/armature-bend/preview.webp" alt="Armature bend: three ribbed bellows hoses on steel foot flanges showing rest, half, and full curl under a four-bone armature, per-bone weight bands blending teal through amber to coral at the joints" /></a>
739739
</td>
740740
<td valign="middle">
741741

‎docs/gallery/armature-bend/index.html‎

Lines changed: 322 additions & 44 deletions
Large diffs are not rendered by default.
21.7 KB
Loading

‎docs/gallery/car-mirror-symmetry/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,11 +2020,11 @@ <h3><a href="../gn-modifier-inputs/">gn-modifier-inputs</a></h3>
20202020
</article>
20212021
<article class="card mini">
20222022
<a class="card-media" href="../armature-bend/" tabindex="-1" aria-hidden="true">
2023-
<img src="../assets/armature-bend-hero.webp" alt="Three tapered tubes, coral to amber to teal, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
2023+
<img src="../assets/armature-bend-hero.webp" alt="Three ribbed bellows hoses with brass collars on steel foot flanges, banded teal to amber to coral, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
20242024
</a>
20252025
<div class="card-body">
20262026
<h3><a href="../armature-bend/">armature-bend</a></h3>
2027-
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl.</p>
2027+
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a ribbed bellows hose through rest, half, and full curl.</p>
20282028
</div>
20292029
</article>
20302030
</div>
37.7 KB
Loading

‎docs/gallery/depsgraph-export/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1639,11 +1639,11 @@ <h3><a href="../usd-export-evaluation-mode/">usd-export-evaluation-mode</a></h3>
16391639
</article>
16401640
<article class="card mini">
16411641
<a class="card-media" href="../armature-bend/" tabindex="-1" aria-hidden="true">
1642-
<img src="../assets/armature-bend-hero.webp" alt="Three tapered tubes, coral to amber to teal, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
1642+
<img src="../assets/armature-bend-hero.webp" alt="Three ribbed bellows hoses with brass collars on steel foot flanges, banded teal to amber to coral, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
16431643
</a>
16441644
<div class="card-body">
16451645
<h3><a href="../armature-bend/">armature-bend</a></h3>
1646-
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl.</p>
1646+
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a ribbed bellows hose through rest, half, and full curl.</p>
16471647
</div>
16481648
</article>
16491649
<article class="card mini">

‎docs/gallery/gltf-skin-roundtrip/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2358,11 +2358,11 @@ <h3><a href="../depsgraph-export/">depsgraph-export</a></h3>
23582358
</article>
23592359
<article class="card mini">
23602360
<a class="card-media" href="../armature-bend/" tabindex="-1" aria-hidden="true">
2361-
<img src="../assets/armature-bend-hero.webp" alt="Three tapered tubes, coral to amber to teal, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
2361+
<img src="../assets/armature-bend-hero.webp" alt="Three ribbed bellows hoses with brass collars on steel foot flanges, banded teal to amber to coral, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
23622362
</a>
23632363
<div class="card-body">
23642364
<h3><a href="../armature-bend/">armature-bend</a></h3>
2365-
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl.</p>
2365+
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a ribbed bellows hose through rest, half, and full curl.</p>
23662366
</div>
23672367
</article>
23682368
<article class="card mini">

‎docs/gallery/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -633,11 +633,11 @@ <h2><a href="grease-pencil-rosette/">grease-pencil-rosette</a></h2>
633633
</article>
634634
<article class="card" data-tags="armature depsgraph" data-kind="examples" data-name="armature-bend">
635635
<a class="card-media" href="armature-bend/" tabindex="-1" aria-hidden="true">
636-
<img src="assets/armature-bend-hero.webp" alt="Three tapered tubes, coral to amber to teal, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
636+
<img src="assets/armature-bend-hero.webp" alt="Three ribbed bellows hoses with brass collars on steel foot flanges, banded teal to amber to coral, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
637637
</a>
638638
<div class="card-body">
639639
<h2><a href="armature-bend/">armature-bend</a></h2>
640-
<p class="teaches">Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl.</p>
640+
<p class="teaches">Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a ribbed bellows hose through rest, half, and full curl.</p>
641641
<p class="witnesses"><span class="tag">witnesses</span> edit_bones exists only in edit mode (empty in object mode), vertex groups bind to bones strictly by name, and the armature modifier is exactly linear blend skinning: every evaluated vertex must equal Σ wᵢ·(pose_bone.matrix @ bone.matrix_local.inverted()) @ rest, root ring pinned, tip deflected — a straight tube fails.</p>
642642
<a class="card-link" href="armature-bend/">View example<span class="sr-only"> armature-bend</span> <span aria-hidden="true">&rarr;</span></a>
643643
</div>

‎docs/gallery/usd-export-evaluation-mode/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,11 +1118,11 @@ <h3><a href="../depsgraph-export/">depsgraph-export</a></h3>
11181118
</article>
11191119
<article class="card mini">
11201120
<a class="card-media" href="../armature-bend/" tabindex="-1" aria-hidden="true">
1121-
<img src="../assets/armature-bend-hero.webp" alt="Three tapered tubes, coral to amber to teal, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
1121+
<img src="../assets/armature-bend-hero.webp" alt="Three ribbed bellows hoses with brass collars on steel foot flanges, banded teal to amber to coral, standing straight, half curled and fully curled by an armature." width="1280" height="720" loading="lazy" decoding="async" />
11221122
</a>
11231123
<div class="card-body">
11241124
<h3><a href="../armature-bend/">armature-bend</a></h3>
1125-
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl.</p>
1125+
<p>Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a ribbed bellows hose through rest, half, and full curl.</p>
11261126
</div>
11271127
</article>
11281128
<article class="card mini">

‎examples/armature-bend/README.md‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Armature Bend
22

3-
A runnable example that rigs a tapered, segmented tube with a four-bone armature chain —
3+
A runnable example that rigs a tapered, ribbed bellows hose with a four-bone armature chain —
44
`edit_bones` construction, name-bound vertex groups with smoothstep blend zones, a posed
55
curl — and checks the depsgraph-evaluated result against closed-form linear blend
66
skinning, following [`mesh-editing-and-bmesh`](../../skills/mesh-editing-and-bmesh/SKILL.md)
@@ -25,9 +25,14 @@ with `VertexGroup.add()` dangles the attribute reference when the deform layer i
2525
allocated (hard crash on 4.5, silent luck on 5.1), so the script finishes all weight
2626
writes before creating the color attribute.
2727

28-
The render shows rest → half curl → full curl left to right, with per-bone weight
29-
bands visualized through a `BoneTint` color attribute — the smooth color blends at the
30-
joints are the same weights the LBS check asserts.
28+
The render shows rest → half curl → full curl left to right. The hose is lathed from an
29+
`(r, z)` profile — brass collars at both ends, a ribbed rubber section between — and every
30+
weight is a function of `z` alone, so the ribs change nothing the LBS check asserts; they make
31+
the deformation legible, fanning open on the outside of each bend and crowding on the inside.
32+
Per-bone weight bands are visualized through a `BoneTint` color attribute on the rib crests
33+
(a `Crest` attribute darkens the valleys) — the smooth color blends at the joints are the same
34+
weights the check asserts. Each hose stands on a render-only steel foot flange; the render path
35+
gates framing through `examples/gallery_framing.py` (exit 10) before writing the still.
3136

3237
## Run
3338

@@ -60,6 +65,7 @@ against it.
6065
| 7 | Root ring moved |
6166
| 8 | Tip did not deflect (`--zero-curl` lands here) |
6267
| 9 | `--output` produced no file |
68+
| 10 | Framing gate violation on the `--output` path (`gallery_framing`) |
6369

6470
The `blender-smoke` workflow runs the check on Blender 5.2 LTS and 4.5 LTS
6571
(5.1 on the weekly cron, the `needs-5.1` PR label, or manual dispatch).

0 commit comments

Comments
 (0)