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 3433333
Browse filesBrowse the repository at this point in the historyBrowse files
fix(examples): redesign vertex-weight-limit as a painted industrial arm (#264)
The gallery review singled this hero out: a stack of orange cylinders in a
mostly empty frame, and the bone influences the example is about were
invisible. The arm is now a designed six-axis-style industrial robot -
bolted plinth, turret, finned drive pack, clevis cheeks and servo drums,
box-section arms, a gas-spring balancer, wrist fork and two-jaw gripper -
in a reaching pose that fills the frame (fill 0.725x / 0.872y).
The render path now paints the post-limit weights, read back from v.groups,
as a BoneBlend colour attribute: rigid segments show their bone's colour and
the two back cables grade across each joint, so the viewer sees where bones
blend. The four-influence cap itself stays numeric-only (the pruned spill is
at most 0.0027), and the README says so.
Weights are now authored as a joint hand-over plus an auto-weight-style
spill on the cables; all checks are unchanged and pass identically on
4.5.11, 5.1.2 and 5.2.1, each re-falsified. The render path also gains the
asset-quality gate (exit 11). asset_sheet_panel.py keeps armatures so a
skinned asset is sheeted in its pose rather than its rest pose.
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -899,7 +899,7 @@ Neighbor of [`lod-decimate-chain`](examples/lod-decimate-chain/).
899
899
</tr>
900
900
<tr>
901
901
<tdwidth="46%"valign="middle">
902
-
<ahref="examples/vertex-weight-limit/"><imgsrc="examples/vertex-weight-limit/preview.webp"alt="Vertex weight limit: a posed mech arm on a dark studio floor - orange armor shells, a glowing teal flex cuff around the hex-bolted elbow hinge, long plated forearm, three-finger gripper - deformed by weights pruned to the four-influence engine cap" /></a>
902
+
<ahref="examples/vertex-weight-limit/"><imgsrc="examples/vertex-weight-limit/preview.webp"alt="Vertex weight limit: an orange industrial robot arm reaching down with a two-jaw gripper, painted with its own post-limit skin weights - each rigid segment glows in its bone colour and the back cables grade blue to teal to violet to magenta across the joints" /></a>
903
903
</td>
904
904
<tdvalign="middle">
905
905
@@ -908,9 +908,10 @@ Neighbor of [`lod-decimate-chain`](examples/lod-decimate-chain/).
908
908
The game-engine max-four-bone-influences constraint, enforced through the data
909
909
API (`v.groups` + `VertexGroup.remove` + renormalize) rather than the
910
910
`bpy.ops.object.vertex_group_limit_total` context path. Asserts the pre-limit
911
-
boots really carry five influences, no vertex ends over the cap, weights still
911
+
cables really carry five influences, no vertex ends over the cap, weights still
912
912
sum to one, the pose survives pruning, and the modifier is still exact linear
913
-
blend skinning read back from the mesh's own deform layer.
913
+
blend skinning read back from the mesh's own deform layer. The render paints
914
+
those post-limit weights onto the arm as a colour attribute.
<imgsrc="assets/vertex-weight-limit-hero.webp" alt="A segmented orange robotic arm on a round base, bent at the elbow, with teal bands at the joints." loading="lazy" decoding="async" />
643
+
<imgsrc="assets/vertex-weight-limit-hero.webp" alt="An orange industrial robot arm reaching down with a two-jaw gripper, each segment glowing in its bone colour and the cables on its back grading from colour to colour across each joint." loading="lazy" decoding="async" />
<pclass="teaches">A rigged mech arm pruned to the game-engine cap of four bone influences per vertex, through the data API. The check proves no vertex exceeds the cap, weights still sum to one, the pose survives pruning, and the modifier is still exact linear blend skinning.</p>
647
+
<pclass="teaches">A rigged industrial robot arm pruned to the game-engine cap of four bone influences per vertex, through the data API. The check proves no vertex exceeds the cap, weights still sum to one, the pose survives pruning, and the modifier is still exact linear blend skinning.</p>
648
648
<pclass="witnesses"><spanclass="tag">witnesses</span> Limit-total and normalize without bpy.ops: keep the top four groups, VertexGroup.remove the rest, renormalize. LBS is verified against the weights read back from the mesh's own deform layer, not the authoring function.</p>
Copy file name to clipboardExpand all lines: examples/gallery.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -366,8 +366,8 @@
366
366
{
367
367
"name": "vertex-weight-limit",
368
368
"dir": "examples/vertex-weight-limit",
369
-
"teaches": "A rigged mech arm pruned to the game-engine cap of four bone influences per vertex, through the data API. The check proves no vertex exceeds the cap, weights still sum to one, the pose survives pruning, and the modifier is still exact linear blend skinning.",
370
-
"alt": "A segmented orange robotic arm on a round base, bent at the elbow, with teal bands at the joints.",
369
+
"teaches": "A rigged industrial robot arm pruned to the game-engine cap of four bone influences per vertex, through the data API. The check proves no vertex exceeds the cap, weights still sum to one, the pose survives pruning, and the modifier is still exact linear blend skinning.",
370
+
"alt": "An orange industrial robot arm reaching down with a two-jaw gripper, each segment glowing in its bone colour and the cables on its back grading from colour to colour across each joint.",
371
371
"witnessesFix": "Limit-total and normalize without bpy.ops: keep the top four groups, VertexGroup.remove the rest, renormalize. LBS is verified against the weights read back from the mesh's own deform layer, not the authoring function.",
0 commit comments