71 lines
6.2 KiB
Markdown
71 lines
6.2 KiB
Markdown
# Research: avatar arm length vs the player's real arm length (2026-10-02)
|
||
|
||
Question (owner): get arm length right first time — should the player's body be fitted to the player, or should
|
||
the player embody an existing (stylized/anime) avatar with its own proportions, VRChat-style? Decide once.
|
||
[S] = sourced, [I] = inference.
|
||
|
||
## 1. What the research says
|
||
|
||
- [S] **The one mismatch that breaks embodiment: the REAL arm reaching full extension while the virtual arm is
|
||
still bent** (virtual arm longer than real, or offset forward). Porssut et al., *Reaching articular limits can
|
||
negatively impact embodiment in VR*, PLOS ONE 2022 (https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0255554):
|
||
a 5.5 cm offset; ownership fell from ~0.66 to 0.45 and "more than one body" feelings rose when the real elbow hit
|
||
its limit first; the opposite (avatar arm straight, real arm bent) was tolerated. Advice: "the user never reaches
|
||
full arm extension by surprise"; if calibration can't be perfect, "choose to have the virtual limbs slightly
|
||
SHORTER than the real ones". The elbow's own end-stop is "internal haptic feedback" the brain trusts.
|
||
- [S] **Virtual arm shorter than real → the hand can't reach the controller.** Ponton et al., *Stretch your reach*,
|
||
CHI 2024 (https://arxiv.org/html/2407.08011, https://dl.acm.org/doi/10.1145/3613904.3642268): avatars scaled
|
||
uniformly from height left an average 26.3 cm (SD 4.7) reach shortfall; of five strategies, STRETCHING the arm
|
||
to keep the hand on the controller was best for embodiment, proprioception and preference; a free-floating
|
||
controller kept location but broke continuity; capping the hand at avatar reach was worst. Rendering the
|
||
controller doesn't matter. A too-LONG virtual arm (untested there) only bends the elbow — reach is unaffected.
|
||
- [S] **Fitted skeletons beat uniform scaling.** Ponton et al., *Fitted avatars: automatic skeleton adjustment for
|
||
self-avatars in VR*, Virtual Reality 2023 (https://arxiv.org/pdf/2307.09558): uniform scaling by eye height
|
||
"assume[s] … the same ratios between bone lengths as the user" → controller-to-wrist errors; their fitting
|
||
reduced hand error by 4–14 cm (male) / 2.6–8 cm (female). Method: (1) uniformly scale the avatar by eye-height
|
||
ratio, (2) resize upper-arm/forearm bones to the measured arm length. **Arm length measurement: the user swings
|
||
both STRAIGHT arms in circles; a sphere fitted to the controller positions gives the SHOULDER JOINT centre (sphere
|
||
centre) and ARM LENGTH (radius, shoulder→wrist).** Neck from head rotations. Embodiment gains appeared "only when
|
||
the initial avatar proportions differed from the user's" — i.e. exactly the stylized-avatar case. Some avatars
|
||
needed arms stretched by 12–23 cm.
|
||
- [S] Body ownership tolerates large DELIBERATE changes when movement stays synchronous — up to ~3× arm length
|
||
(Kilteni et al., *Very Long Arm Illusion*, PLOS ONE 2012, https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0040867).
|
||
Proportion is not the problem; a reach/extension mismatch is.
|
||
- [S] **VRChat** measures avatars by ARM SPAN by default (scales so the avatar's arms match yours — hands right,
|
||
floor/feet often wrong, worse with long-legged anime/MMD avatars) or by HEIGHT (feet right, recommended for
|
||
full-body tracking) (https://docs.vrchat.com/docs/ik-20-features-and-options). Community limb-scaling prefabs
|
||
stretch avatar arm/leg bones to the user (https://nanochip.gumroad.com/l/avatarlimbscaling); shoulder-mobility
|
||
add-ons extend reach when real arms exceed the avatar's.
|
||
- [S] **Bonelab** asks height + T-shirt size with fine-tuning of wingspan, chest, waist, hips, inseam, and runs a
|
||
"body remapping system" so differently-shaped avatars keep a realistic range of motion
|
||
(https://www.uploadvr.com/bonelab-avatar-system/, https://roadtovr.com/bonelab-custom-avatar-mod-levels-items-vehicles/).
|
||
Players report: arms too short for them → "my arm held straight out keeps wanting to lift my character up off the
|
||
ground" and climbing feels broken because hands aren't 1:1 — the PHYSICS-BODY version of the Ponton shortfall.
|
||
- [S] **Nimso (Project TX)** keeps a TRUE BODY from the user's metrics (height, floor, arm length = shoulder joint
|
||
→ 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
|
||
|
||
**The physics body is the player's real body; any avatar is a skin fitted onto it.**
|
||
|
||
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".
|