fix: repair thigh weights too, and keep the gun shouldered at low-ready

Legs: the previous pass deliberately stopped at the knee, on the reasoning that
cross-leg weighting above it is legitimate for skirts. It is — but the LEGS
themselves are up there too, and 122 vertices on Taila's thigh mesh carry up to
35% of the opposite leg. Running and jumping are exactly what splits the legs
far enough for that to show, which is why the cuffs came good while the legs
kept squashing.

The repair now runs above the knee as well, but only on vertices that belong to
a leg. Limb membership is decided by distance to that leg's own bone chain, not
by height and not by surface name: a thigh vertex hugs its bone, while a skirt
vertex hangs clear of both chains and is left blended so it can still drape over
the two legs. The radius is half the gap between the thigh bones, so it scales
with the character rather than being a magic number. Taila now snaps 1217
vertices (was 720), Miku 370 (was 214).

Weapons: at low-ready the stock was dropped 0.20 m below the shoulder joint down
to the ribs, with the muzzle pitched 22 degrees down. That pulls the whole
weapon off the shoulder and out of the supporting arm — it read as dangling
from the hands rather than being carried. Low-ready now stays in the shoulder
pocket and merely relaxes out of it (0.07 m drop), with a shallow 9 degree
muzzle tilt. All six weapons now sit in the shoulder with both hands on them.

FSM tests 11/11, spawn smoke test 0 failures.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Nicholas Butzke
2026-07-22 02:08:07 -04:00
co-authored by Claude Opus 4.8
parent f60941d1fb
commit a6e009d24a
2 changed files with 76 additions and 17 deletions
+7 -2
View File
@@ -940,11 +940,16 @@ class ShooterPoseModifier extends SkeletonModifier3D:
# the handguard, instead of both arms waving at art-directed angles near it.
# Skeleton space: character faces +Z, up +Y, character-right -X.
const GUN_PITCH_HIP := 0.38 # muzzle tilts down this much at low-ready
# Muzzle tilt at low-ready. Kept shallow: at the old 0.38 rad (22 degrees)
# the gun read as dangling from the hands rather than being carried.
const GUN_PITCH_HIP := 0.16
# Where the butt of the stock sits, relative to the right shoulder joint.
# The pocket is on the FRONT of the shoulder, slightly inboard of the joint.
# Low-ready used to drop the butt 0.20 m to the ribs, which pulled the whole
# weapon off the shoulder and out of the arms — it never looked held. It now
# stays in the pocket and only relaxes slightly out of ADS.
const POCKET_ADS := Vector3(0.05, 0.01, 0.07) # in the shoulder pocket
const POCKET_HIP := Vector3(0.02, -0.20, 0.05) # tucked down at the ribs
const POCKET_HIP := Vector3(0.03, -0.07, 0.06) # still shouldered, relaxed
# Elbow bend hints (skeleton space). At the hip the firing elbow rides
# down by the ribs; shouldered it flares OUT and level (the classic
# "chicken wing"), which is what keeps the tight fold from folding the