Body-physics research (hugs + Nimso Hybrid Presence + Box3D facts), mark grab v5.3.1 validated, note Box3D fork

This commit is contained in:
Foxyz1302 committed 2026-10-01 21:54:34 +03:00
1 parent 5d2c5bf265
commit 9c676f49d3
3 files changed
+64 -29

No files matched your search

+24 -26
View File
@@ -198,15 +198,16 @@ PropShop, PropGrabber, PhysicsHands, BodyRig, FadeLayer/Fade. Action map: `openx
## 5. Known issues / open questions
- **Grab v5.3 feel NOT yet validated in-headset** — v5.2's playtest rejected the whole
point-joint + servo category ("hanging on a winch": ball orbits the palm, anvil surface
drifts, palms clip). v5.3 replaces it with a solver-owned rigid weld (locally patched addon,
ConeTwistJoint3D → b3WeldJoint). Headless: grab spike (rigidity under drag + fast spin,
two-handed, takeover), weld spike, physics spike — all PASS 3× deterministic. Known honest
physics, not bugs: ~1.2° elastic sag on off-center grabs under gravity (lever-dependent,
mass-independent), ~15 cm of give if the second hand pulls at full force (recovers; 0.25 m
break is the backstop), and a heavy prop genuinely strains/drags the 0.4 kg hand (that IS
the weight feel; > 2 m hand-controller lag = "grip dragged off" break).
- **Grab v5.3.1 — VALIDATED in-headset (owner: "it just works")** — the grab saga is closed.
Solver-owned rigid weld via the locally patched addon (ConeTwistJoint3D → b3WeldJoint),
rigid two-handed, takeover automatic. Headless: grab/weld/physics spikes all PASS 3×.
Known honest physics, not bugs: ~1.2° elastic sag on off-center grabs under gravity
(lever-dependent, mass-independent), brief ~3° ring when one hand of a two-handed hold
releases, and a heavy prop genuinely strains/drags the 0.4 kg hand (that IS the weight
feel). Angular hold strength on heavy props one-handed = Box3D's solver stiffness floor
(0.25×tick clamp ≈ 22.5 Hz at 90 Hz) — the documented next lever is raising
`Engine.PhysicsTicksPerSecond` above the refresh rate (global experiment, only with
owner go-ahead).
- **Hand reaction / weight-through-hand** — restored for real in v5.3: the weld transmits
prop weight/forces through the solver into the 0.4 kg hand's 90 N chase budget. Validate
the heft in-headset.
@@ -258,25 +259,22 @@ PropShop, PropGrabber, PhysicsHands, BodyRig, FadeLayer/Fade. Action map: `openx
## 7. Next steps (in order)
1. **Body physics milestone (player arms + chest, for hugs)** — designed in
`research/vr-body-physics-hugs.md` §5 + verified against the stack in
`research/vr-body-physics-godot.md`. Phase 1: torso = one RigidBody3D chase-driven toward an
HMD-derived target (PD, force-clamped — the PhysicsHands pattern at bigger mass), camera stays
kinematic (Boneworks sickness lesson), arms stay analytic IK + palm bodies, collision layer 3
for the body. Phase 2 (only if arms clip on contact): active-ragdoll arm segments on Box3D
hinge velocity motors, per-tick PD toward the analytic IK angles. Hug detection = contact
events (palms + chest vs NPC torso, sustained ~0.5 s), NPC reactivity on top. NOT STARTED —
awaiting owner go-ahead + grab v5.3.1 playtest verdict.
2. **Validate grab v5.3.1 in-headset** — rigid-rigid two-handed welds (secondary no longer
gives ~10 cm; expect hands to strain instead when demands conflict, plus a brief ~3° ring
when one hand releases). Watch for jitter under opposed wrist twist — if it appears,
`RigidWeldBias` on the secondary is the fallback knob. "Angular strength underwhelming" on
heavy props one-handed is the Box3D solver stiffness floor (0.25×tick clamp ≈ 22.5 Hz at
90 Hz) — next lever if it still bothers: raise `Engine.PhysicsTicksPerSecond` above the
refresh rate (the clamp scales with tick), an experiment with global consequences.
1. **Full physics body track — DECISION PENDING (owner holds implementation)** — the owner
wants to pursue a full physics VR body (also as reusable tech for a second project idea);
the hug should be mostly physics with detection for future interactivity. Research done:
`research/vr-body-physics-hugs.md` (prior art + phased design; §6 = Nimso's "Hybrid
Presence", the closest known implementation, closed-source, only videos) and
`research/vr-body-physics-godot.md` (verified stack facts: no Generic6DOF, hinge velocity
motors work, PD-follow proven by the hands). Owner offered video-extraction of Nimso's
deep-dive videos — pending. Recommendation shape: staged torso → 2-segment arm chains
(chase-driven, Boneworks/Nimso tier, NOT per-bone skeleton sim), test hugging props.
Character model: keep boxes for the physics work (owner asked; see research §5-6).
2. **Grab points on special objects** — grab is palm-proximity to the prop origin today;
special objects may want authored grab anchors (see `research/vr-grabbing.md` taxonomy).
2. **Grab points on special objects** — grab is palm-proximity to the prop origin today; special
objects may want authored grab anchors (see `research/vr-grabbing.md` taxonomy).
3. **Physical torso/head capsules** — replace the mesh-only placeholders with physics bodies.
3. **Physical torso/head capsules** — folded into the body-physics track (item 1): the torso
chase body IS the capsule replacement; head/body colliders join it in the same stage.
4. **Hand tracking spike** — `XRHandTracker` through WiVRN; controller tip and fingertip must feed
the same cursor concept (interaction must not assume controllers).
5. **Neck/head look system** — `LookAtModifier3D` head→neck distribution (needs a real skeleton).