Body step 2: the player is a muscle-driven ragdoll (Project TX)
PlayerRagdoll: 9 bodies, spine/neck ball joints, shoulder drives (girdle + muscle), elbow hinges, torque-capped motor PDs toward the True Body, chest->hand guides, implicit balance motor, mass-scaled ground control. PlayerRig: XR driver with stick move / snap turn and Bonelab-style push-back (eye->camera sphere sweep). Replaces the chase bodies in main.tscn; RagdollSpike regression (14 phases). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d0b50fbc41
commit
d83273dd2f
16 files changed
+1487
-28
No files matched your search
@@ -103,8 +103,9 @@ Four layers, bottom-up, applied per frame in this order:
|
||||
project: chain budgets, screen-size/distance LOD, simplified colliders. If the per-bone C#
|
||||
loop profiles hot, the hot loop moves to a GDExtension — profile first, don't pre-optimize.
|
||||
|
||||
Do NOT build anything that needs 6DOF/cone-twist joints between tracked bodies (the wrapper lacks
|
||||
them; velocity steering replaces them). Scene objects stay standard nodes (`RigidBody3D`,
|
||||
SUPERSEDED for the player (2026-10-02): the fork now maps Generic6DOFJoint3D (ball/drive/weld), and the
|
||||
player body is a jointed muscle ragdoll (item 11). Layer 3 above describes the legacy chase bodies, which
|
||||
remain valid for non-player things (and their spikes). Scene objects stay standard nodes (`RigidBody3D`,
|
||||
`StaticBody3D`, `CharacterBody3D`) so arbitrary imported scene content works and the Jolt fallback
|
||||
stays real.
|
||||
|
||||
@@ -289,10 +290,15 @@ device only; the editor has an XR simulator for dev. Trackers/action map: see `x
|
||||
gitignored `prefs.json` next to the executable (forced gate on launch, `Recalibrate()` via group
|
||||
"calibration"), `BodyProfile` (Winter anthropometry, arm stored 1.5 cm short), shared `ArmSolver`, and the
|
||||
TRUE BODY solver (`TrueBody.cs`: neck, chest yaw + crouch lean, lagging pelvis, moving shoulder girdle, arms)
|
||||
with a debug skeleton. Arm-length decisions: `research/vr-avatar-arm-length.md`. Next: step 2 = the
|
||||
muscle-driven ragdoll player (ball joints + torque-capped motors toward the True Body), replacing the
|
||||
chase-body chest/arms/hands; ground control; then legs. Owner scope: thumbstick locomotion only, no jump,
|
||||
avatar scaling and NPCs later.
|
||||
with a debug skeleton. Arm-length decisions: `research/vr-avatar-arm-length.md`. **Step 2 DONE 2026-10-02
|
||||
(awaiting owner playtest): the player IS a muscle-driven ragdoll** — `PlayerRagdoll.cs` (9 bodies, BALL/hinge/
|
||||
DRIVE joints with torque-capped motor PDs toward the True Body, chest→hand guides, implicit balance, ground
|
||||
control) + `PlayerRig.cs` (XR driver: stick move/snap turn, Bonelab push-back via an eye→camera sphere sweep,
|
||||
discrete origin jumps carry the body). It REPLACED PhysicsHands/PhysicsTorso/PhysicsArms/BodyRig in
|
||||
`main.tscn` (legacy files kept for their spikes). Record + measured rules:
|
||||
`research/ragdoll-player-step2.md` — **never put a light (< ~1 kg) body between two strong motors** (Box3D
|
||||
one-iteration substeps oscillate). Regression `scenes/ragdoll_spike.tscn`. Next: procedural legs, 144 Hz,
|
||||
climbing. Owner scope: thumbstick locomotion only, no jump, avatar scaling and NPCs later.
|
||||
10. **Body physics Stage 2 — PHYSICAL ARMS, implemented 2026-10-02, awaiting owner playtest.**
|
||||
`PhysicsArms.cs`: per side an upper-arm + forearm RigidBody3D (2.0 / 1.2 kg, layer 5) that
|
||||
PD-chase their analytic 2-bone IK pose, solved each physics tick from the PHYSICAL chest
|
||||
|
||||
Reference in new issue
Block a user