Arm-length research: Nimso shoulder evolution + girdle anatomy; revised decision (True Body -> Scaled Body: uniform eye-height scale + shoulder-based reach remap, passive zero-setup calibration)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
FoxyzandClaude Opus 5.5 committed 2026-10-02 04:34:16 +03:00
1 parent 4c27d68e84
commit 329b7bf143
1 file changed
+49 -21
+49 -21
View File
@@ -45,26 +45,54 @@ the player embody an existing (stylized/anime) avatar with its own proportions,
→ wrist, set so real full stretch = in-game full stretch) and a separate SCALED BODY for avatars, scaling reach
from the shoulder so full stretch still maps to full stretch (see `nimso-project-tx.md`).
## 2. Decision for VR Messs
## 2. Shoulders — Nimso's evolution (all shoulder mentions in the transcripts) and real anatomy
**The physics body is the player's real body; any avatar is a skin fitted onto it.**
- [S] 2017: hands limited to "shoulder arm length". 2018 (hzShV7qqbAE): derived from 3 points only — "you put
your hand up, you can see your shoulder moves up and down", "he puts his shoulders into" punches. 2019 Test
Chamber: "I haven't got a shoulder system yet". 2019 ragdoll: the shoulder is a physical surface (lean hammers/
guns on it). 2021 rewrite: "derived elbow positions, logical sort of shoulder control … the shoulder rotation
based on all of that structure including the head, the chest position and rotation". 2022 (yPsCuuNM3lM): rewrote
the body because of "the lack of shoulder control" — before, "the shoulder just kind of stays straight and the
arm becomes very folded up"; now "the shoulders … actually care about where the elbow is and the arm is just about
pushing on the limits of the shoulder". 2024 (i7F4V9K6SlU): "it's not just an arm length — as you lift your arm
the shoulder moves up and down, it lifts, so you have to figure out all the mechanical structures … as accurate as
possible in order for the limit of your arm to be accurate"; crouching tilts the shoulders with the chest.
Calibration still sets ARM LENGTH = shoulder joint → wrist ("these two bones"); the shoulder motion is DERIVED
on top. Avatar mapping scales "from the shoulder point" off a chest centre line so hands still meet.
- [S] Anatomy: the arm hangs off the shoulder girdle (clavicle + scapula); the glenohumeral joint itself moves —
elevation (shrug), protraction/retraction (reach forward/back) — and arm raising is shared between glenohumeral
and scapular rotation (the classic "scapulohumeral rhythm", ≈2:1 above the first ~30° of abduction; Inman et al.
1944). Winter Table 4.1 lists the "shoulder mass" segment as sternoclavicular joint → glenohumeral axis; Fig 4.1
gives neck→shoulder 0.129H. [I] Girdle motion adds very roughly 5–10 cm of reach (forward/up) over a fixed
shoulder — the part of "arm length" a straight-arm calibration does NOT include, which is correct: it must be
modelled as motion, not as longer bones.
- [I] VR Messs: arm length (bones) from calibration; shoulder girdle as its own derived + physical segment
(sternoclavicular ball joint with tight limits and a muscle): elevates with arm raise (rhythm), protracts toward
far reach targets, tilts with the chest; only past the girdle's limits does the chest lean (current "lean").
1. **Physics ragdoll proportions = the player's calibrated metrics** (Nimso's True Body; the research's "fitted"
method). Shoulder joint positions and arm length come from measurement, never from current head height, so
standing, seated or lying play all use the same body.
2. **Calibration (one-time, saved profile):**
- Stand straight → eye height + floor (Nimso's "stand straight, touch the ground").
- "Arm circles" ~10 s: swing both straight arms; sphere-fit each controller trail → shoulder centres
(sphere centres, gives shoulder width and height) and arm length (radius − wrist-to-grip offset).
- Skip / failure fallback: Winter/Drillis-Contini ratios from eye height (`nimso-project-tx.md` §3).
- Store arm length ~1–2 cm SHORT of the measured value (Porssut: never let the real elbow lock first); the
physics hand then trails the controller by that margin only at full stretch.
3. **Stylized / anime avatar = visual skin on the fitted skeleton** (the fitted-avatar pipeline): uniform scale by
eye-height ratio, then resize the avatar's upper-arm/forearm bones to the calibrated arm length (hands not
stretched). The anime look survives (head/torso/legs proportions untouched); only arm bone lengths adapt. No
bespoke player model needed — any humanoid works.
4. **"Become a different-sized character" (Bonelab/Nimso Scaled Body)** stays on the back-burner; if built, it must
preserve the extension invariant (scale reach from the shoulder so real full stretch = virtual full stretch).
5. Shoulder girdle: model the clavicle as a driven segment (shrug/protraction ~ a few cm) so overhead/forward
reach beyond the arm comes from the shoulder, as in real bodies and in Nimso's "shoulder lifts as you raise the
arm".
## 3. Decision for VR Messs (revised after owner's "embody a short avatar?" question)
The conflict ("fit the avatar to me" vs "I become the avatar") goes away by fixing the order of operations:
**One body model, two layers, one calibration — Nimso's True Body → Scaled Body, Bonelab's "calibrate once".**
1. TRUE BODY = you. Measured once, saved, reused for every avatar and every posture (standing/seated/lying).
Zero visible setup by default (VRChat-like): eye height + floor captured from the first standing moments; arm
length starts at the anthropometric estimate (0.332·H, slightly short — the safe side per Porssut) and is
refined PASSIVELY from the furthest controller-to-shoulder distances you reach during play (high percentile,
only ever growing toward the true value). [I] An explicit 10 s "arm circles" sphere-fit lives in settings for
people who want it exact immediately (Bonelab-style fine-tuning, done once, forgotten).
2. SCALED BODY = the avatar you embody, derived from the True Body:
- **uniform scale s = avatar eye height / your eye height** applied to tracking around your body: a short avatar
makes YOU short (world looks bigger, floor still where your feet are, crouching still touches the floor),
camera rotation stays 1:1 — this is what "embodying" a character means and is what VRChat/Bonelab/Nimso do;
- **reach remap r = avatar arm / (s · your arm)**, applied to the hand target's offset from the (scaled)
shoulder: your full stretch is always the avatar's full stretch (the Porssut/Ponton invariant), so anime
short/long arms never cause the elbow-lock conflict nor the can't-reach problem; the residual hand offset is
only the proportion difference (typically a few %, Ponton/Kilteni say tolerable);
- the PHYSICS ragdoll uses the avatar's proportions (Mario is physically Mario-sized; Nimso's scaled ragdoll).
3. "Your own body" avatar (default) = an avatar generated/fitted to your True Body → s = r = 1, zero offsets.
Any stylized avatar can alternatively be shown "fitted to you" (arm bones stretched) — that's just r = 1 with
visual bone scaling; one flag per avatar, no new system.
So no box goes unchecked: true scale and floor come from s, reach and extension from r, perfect hands when the avatar
matches you, and setup is invisible by default with optional exact calibration.