Files
VR-Mess/research/vr-arm-ik.md
T

4.1 KiB
Raw Blame History

Research: VR arm IK approaches (for physics-hands rigs)

Researched by an agent for VR Messs (Godot 4.7, C#, physics hands = force-clamped rigid palm bodies chasing controllers). Superseded by nothing; see also vr-arm-ik-deep.md for the follow-up on stability and torso yaw. Label: [S] = sourced, [I] = inference.

Prior art with physics hands

Shoulder / torso handling

  • [S] Prior art FOR "idle shoulders, reach budget pulls the spine": VRIK's spine solver stage pulls the root toward hands past a reach threshold; VRChat clamped overshooting arms at arm length rather than rotating shoulders (https://docs.vrchat.com/docs/vrchat-202221); Ponton et al. 2023 self-avatar paper covers torso compensation (https://www.cs.upc.edu/~npelechano/VR2023_fittedAvatars.pdf).
  • [S] Pitfalls: wrong shoulder width/height → permanent elbow strain (VRChat calibration issues); pull torso TRANSLATIONALLY first, lean second (rotation reads as drunkenness).
  • [I] The Go-Go arm-extension alternative (stretch arms instead of leaning) is rejected for physics-hands setups — breaks hand-body consistency.

Godot 4.7 API facts (verified against docs.godotengine.org/en/4.7)

Head/neck pattern

  • [S] Point the head bone directly at the HMD; distribute residual rotation into the neck at lower weight (30–50%) with clamped pitch/yaw; LookAtModifier3D provides limits + damping natively; stack the neck modifier ABOVE the head modifier. [I] The exact weights are taste.

Chosen architecture for VR Messs

  • Kinematic spine + analytic 2-bone arms in a custom SkeletonModifier3D (when a real skeleton exists; placeholder uses raw transforms) + existing physics hands. Matches Boneworks' observable behavior without simulating the skeleton. Full-physics-body = highest fidelity but highest risk; pure IK-over-animation = where the jank lives.