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 → 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`). 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" ## 3. Decision for VR Messs (revised after owner's "embody a short avatar?" question)
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. The conflict ("fit the avatar to me" vs "I become the avatar") goes away by fixing the order of operations:
2. **Calibration (one-time, saved profile):**
- Stand straight → eye height + floor (Nimso's "stand straight, touch the ground"). **One body model, two layers, one calibration — Nimso's True Body → Scaled Body, Bonelab's "calibrate once".**
- "Arm circles" ~10 s: swing both straight arms; sphere-fit each controller trail → shoulder centres 1. TRUE BODY = you. Measured once, saved, reused for every avatar and every posture (standing/seated/lying).
(sphere centres, gives shoulder width and height) and arm length (radius − wrist-to-grip offset). Zero visible setup by default (VRChat-like): eye height + floor captured from the first standing moments; arm
- Skip / failure fallback: Winter/Drillis-Contini ratios from eye height (`nimso-project-tx.md` §3). length starts at the anthropometric estimate (0.332·H, slightly short — the safe side per Porssut) and is
- Store arm length ~1–2 cm SHORT of the measured value (Porssut: never let the real elbow lock first); the refined PASSIVELY from the furthest controller-to-shoulder distances you reach during play (high percentile,
physics hand then trails the controller by that margin only at full stretch. only ever growing toward the true value). [I] An explicit 10 s "arm circles" sphere-fit lives in settings for
3. **Stylized / anime avatar = visual skin on the fitted skeleton** (the fitted-avatar pipeline): uniform scale by people who want it exact immediately (Bonelab-style fine-tuning, done once, forgotten).
eye-height ratio, then resize the avatar's upper-arm/forearm bones to the calibrated arm length (hands not 2. SCALED BODY = the avatar you embody, derived from the True Body:
stretched). The anime look survives (head/torso/legs proportions untouched); only arm bone lengths adapt. No - **uniform scale s = avatar eye height / your eye height** applied to tracking around your body: a short avatar
bespoke player model needed — any humanoid works. makes YOU short (world looks bigger, floor still where your feet are, crouching still touches the floor),
4. **"Become a different-sized character" (Bonelab/Nimso Scaled Body)** stays on the back-burner; if built, it must camera rotation stays 1:1 — this is what "embodying" a character means and is what VRChat/Bonelab/Nimso do;
preserve the extension invariant (scale reach from the shoulder so real full stretch = virtual full stretch). - **reach remap r = avatar arm / (s · your arm)**, applied to the hand target's offset from the (scaled)
5. Shoulder girdle: model the clavicle as a driven segment (shrug/protraction ~ a few cm) so overhead/forward shoulder: your full stretch is always the avatar's full stretch (the Porssut/Ponton invariant), so anime
reach beyond the arm comes from the shoulder, as in real bodies and in Nimso's "shoulder lifts as you raise the short/long arms never cause the elbow-lock conflict nor the can't-reach problem; the residual hand offset is
arm". 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.