Body-physics research (hugs + Nimso Hybrid Presence + Box3D facts), mark grab v5.3.1 validated, note Box3D fork
This commit is contained in:
1 parent
5d2c5bf265
commit
9c676f49d3
3 files changed
+64
-29
No files matched your search
+24
-26
@@ -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).
|
||||
|
||||
Reference in new issue
Block a user