Files
VR-Mess/research/vr-avatar-arm-length.md
T

71 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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".