Rebuild the NPC hands and add a hand capture
Full build / Import + headless tests (push) Successful in 50s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-02 19:14:55 +01:00
1 parent 48082c3dfa
commit 24c939d388
27 files changed
+107 -57

No files matched your search

+21 -9
View File
@@ -813,16 +813,28 @@ def _hands_and_shoes(mats, spec):
w = BUILDS[spec.get("build", "average")][0]
for s in (-1.0, 1.0):
x = 0.275 * s * w
parts.append(sphere("Palm", 0.045, (x, -0.01, 0.735), skin, seg=10, rings=6,
scale=(0.55, 0.95, 1.25)))
parts.append(sphere("Thumb", 0.018, (x - 0.014 * s, -0.048, 0.752), skin,
seg=8, rings=6, scale=(1.0, 1.0, 1.7), rot=(0.4, 0, 0)))
# four fingers: relaxed, slightly curled forward, outer ones shorter
# Wider and shallower than the old ball: a palm, not a wrist knob.
parts.append(sphere("Palm", 0.046, (x, -0.012, 0.742), skin, seg=10, rings=6,
scale=(0.80, 0.62, 0.88)))
# Four bent, tapering fingers with rounded tips. The two segments keep
# the hand readable at conversation distance without adding a full
# finger skeleton; the outer fingers are slightly shorter.
for index, offset in enumerate((-0.024, -0.008, 0.008, 0.024)):
length = (0.046, 0.052, 0.050, 0.040)[index]
parts.append(cyl("Finger", 0.011, 0.009, length,
(x + offset * s, -0.030, 0.714 - length * 0.5), skin,
seg=6, rot=(math.radians(14), 0, 0)))
fx = x + offset * s
tip_z = (0.692, 0.681, 0.684, 0.694)[index]
radius = 0.0115 if index in (1, 2) else 0.0105
parts.append(tube("Finger", [(fx, -0.018, 0.758),
(fx, -0.030, 0.726),
(fx, -0.042, tip_z)],
radius, skin, seg=6, caps=False))
parts.append(sphere("Fingertip", radius, (fx, -0.042, tip_z), skin,
seg=6, rings=4))
parts.append(tube("Thumb", [(x - 0.010 * s, -0.018, 0.758),
(x - 0.028 * s, -0.040, 0.740),
(x - 0.034 * s, -0.055, 0.718)],
0.012, skin, seg=6, caps=False))
parts.append(sphere("ThumbTip", 0.012, (x - 0.034 * s, -0.055, 0.718), skin,
seg=6, rings=4))
parts.append(box("Shoe", (0.10, 0.25, 0.075), (0.12 * s, -0.045, 0.04), shoe,
bevel=0.028, segs=1))
parts.append(box("Sole", (0.106, 0.262, 0.02), (0.12 * s, -0.045, 0.01),