Body physics Stage 1: PhysicsTorso chase chest (30 kg PD + yaw servo), collision layers reworked (3=body, 4=hands, no self-collision), BodyRig visual-only, BodySpike regression (PASS 3x, all spikes green)

This commit is contained in:
Foxyz1302 committed 2026-10-01 23:05:31 +03:00
1 parent d46a742b66
commit 4fdfcfd928
11 files changed
+586 -83

No files matched your search

+19 -3
View File
@@ -215,7 +215,10 @@ device only; the editor has an XR simulator for dev. Trackers/action map: see `x
**Grab v5.3.1 VALIDATED in-headset (owner: "it just works") — grab saga closed.**
`PhysicsHands.cs`: physical palm bodies (0.4 kg, 90 N chase, rotation lock, stuck-safety
snap — SUSPENDED for a hand while it grips, HAND ghosts > 10 cm lag). Collision layers:
1 = world, 2 = UI (panel mask 0 — props pass through even when shown); layers live on
**1 = world+props, 2 = UI, 3 = player body (PhysicsTorso chest), 4 = player hands** —
chest↔own hands excluded BOTH ways (no self-collision, Nimso/VRChat precedent); props
mask 1|3|4, floor/table mask 1|3|4, hands 4/1|4, chest 3/1|3; panel stays 2/0 (props pass
through even when shown); layers live on
CollisionObject3D, NOT CollisionShape3D. Panel = prop-UI prototype (ax_button summon,
contact-press knobs, Reset). Laser/distant grab REMOVED (user never knew it existed);
grab = palm-proximity only, per-hand palm-face offset (left +X, right −X — taste).
@@ -225,7 +228,20 @@ device only; the editor has an XR simulator for dev. Trackers/action map: see `x
(arm IK, IK stability/deep, grabbing, two-handed grab/Box3D internals, addon weld patch,
body physics hugs, body physics Godot facts) — READ before re-researching or changing
grab/IK/body. Stink-O's box3d-godot (custom components) = documented plan-B.
7. **Getting a body (rig) — placeholder v1.2 (cube character, agent-built).** `BodyRig.cs`:
8. **Body physics Stage 1 — PHYSICAL CHEST, implemented 2026-10-01.** `PhysicsTorso.cs`:
one chase-driven RigidBody3D (30 kg box, gravity off, CCD) toward an HMD-derived target —
the PhysicsHands PD pattern at body mass (2400 N budget), orientation = slewed
angular-velocity servo (self-rights, holds yaw), 2 m snap safety, torso-yaw spring moved
here from BodyRig. Camera stays KINEMATIC — torso chases the head, never the reverse
(Boneworks sickness lesson). No self-collision with own hands (layer scheme above).
`BodyRig.cs` is VISUALS-only now (head cube + 2-bone analytic arms, soft IK, elbow pole,
reach budget feeding `PhysicsTorso.ReachOffset`). Headless regression:
`scenes/body_spike.tscn` must print "BODY: overall PASS" (also proves the Box3D pair
rules: one-way contact, hand-through-chest exclusion, prop contact). Stage 2 (physical
arm chains + hierarchical per-joint budgets, Nimso/Boneworks tier) awaits the owner's
Stage-1 feel verdict; design + prior art in `research/vr-body-physics-hugs.md`,
stack facts in `research/vr-body-physics-godot.md`.
9. **Getting a body (rig) — placeholder v1.3 (cube character, agent-built).** `BodyRig.cs`:
all-BOX primitives (owner preference) — head 0.15³ behind the eyes, slim torso retracted,
wrist-anchored 2-bone arms. **Soft IK applied**: shoulder→hand distance clamped to
reach×0.98 before the solve (the straight-arm singularity was the overextension shake; if it
@@ -236,7 +252,7 @@ device only; the editor has an XR simulator for dev. Trackers/action map: see `x
Reach budget hysteresis unchanged. Full sourced findings in `research/vr-arm-ik.md` and
`research/vr-arm-ik-deep.md` (HL:Alyx went hands-only on purpose; SkeletonIK3D deprecated →
custom SkeletonModifier3D when a real skeleton arrives; LookAtModifier3D for head→neck).
Physical torso/head capsules later. EMBODYING (view-from-character-perspective) comes after
EMBODYING (view-from-character-perspective) comes after
the head/neck look override exists. **HANDOFF.md at project root is the takeover document**
(constant table verified against code — code wins on drift); keep it updated when systems
change.