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:
1 parent
d46a742b66
commit
4fdfcfd928
11 files changed
+586
-83
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user