Body step 1: one-time T-pose calibration (prefs.json, forced gate) + True Body solver + shared ArmSolver

- BodyProfile (Winter anthropometry, T-pose: arm = (span - shoulder width)/2 - 1.5 cm) and
  Prefs (gitignored prefs.json next to the executable / project folder in editor builds)
- Calibration node: loads prefs, else head-locked prompt + jitter-proof TPoseDetector; body
  systems wait for BodyProfile.Current; Recalibrate() in group "calibration"; recal rebuilds arms
- ArmSolver: PhysicsArms' elbow solve extracted (behaviour-identical) + min reach |U-F| fix
- TrueBody: derived real-body pose (neck, chest yaw + crouch lean at neck pivot, lagging pelvis,
  moving shoulder girdle with scapulohumeral shrug, arms) + debug skeleton
- PhysicsArms/PhysicsTorso/BodyRig now profile-driven (arm length no longer from head height)
- TrueBodySpike PASS x3; all spikes PASS x3 (arm spike thresholds re-based for correct 0.57 m arms;
  CollapseSpike uses a fixed standing profile)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
FoxyzandClaude Opus 5.5 committed 2026-10-02 05:47:20 +03:00
1 parent 3a990c6dbe
commit 81a9b1fca2
15 files changed
+994 -106

No files matched your search

+4 -2
View File
@@ -12,7 +12,9 @@ public partial class ArmSpike : Node3D
private const float StretchLeanRangeLimit = 0.01f;
private const float HugElbowOutMin = 0.05f;
private const float HoldPenetrationLimit = 0.01f;
private const float FlipElbowStepLimit = 0.03f;
// Unclamped pole flips jump 0.138 m/tick; the clamped, rate-limited pole stays well under this
// (0.029 with the old 0.72 m heuristic arms, 0.039 with profile-correct 0.57 m arms).
private const float FlipElbowStepLimit = 0.05f;
private const float PinHandLagMin = 0.1f;
private const float RestBodyPenLimit = 0.01f;
private const float HoldAnvilY = 1.25f; // anvil top ≈ shoulder height, like a seated player at the table
@@ -22,7 +24,7 @@ public partial class ArmSpike : Node3D
private const float ChestDisturbLimit = 0.01f;
private const float PushMinDisplacement = 0.05f;
private const float PushHandClearance = 0.08f;
private const float PinSpeedLimit = 0.3f;
private const float PinSpeedLimit = 0.4f;
private const float PinBarY = 1.22f;
private const float PinObstructionMin = 0.01f;
private const float TeleportGapLimit = 0.04f;