Files
VR-Mess/scenes/main.tscn
T
FoxyzandClaude Opus 5.5 7589b13aba Body physics Stage 2: physical arm segments (chase-driven upper arm + forearm, hierarchical budgets, layer 5)
- PhysicsArms: per side 2.0 kg upper arm + 1.2 kg forearm RigidBody3D PD-chasing their
  analytic 2-bone IK pose, solved per physics tick from the physical chest shoulders to the
  physical hands; no joints (Box3D has no usable shoulder/wrist joint; AGENTS forbids joints
  between tracked bodies). Budgets from a 60 kg mass stat: hand 90 < forearm 180 < upper
  arm 360 < chest 2400 N. Owns calibration + reach budget (moved from BodyRig); 1 m snap,
  non-finite reset, BodyMath.RotationError servo.
- Layer 5 = player arms (mask 1); props/table/floor masks include it; no self-collision.
- BodyRig: visuals only, arms drawn shoulder -> physical elbow -> wrist.
- ArmSpike: track gap 0, swing lag <= 6 cm, arm pushes prop with hand clear, forearm blocked
  by bar without tunneling and quiet when pinned, teleport snap, NaN reset — PASS x3.
- CollapseSpike now runs the full body (49/49 x3); all six spikes PASS x3.
- HANDOFF/AGENTS: Stage 2 entry (item 10), layers, tuning table, Stage 2b next steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 00:04:07 +03:00

136 lines
4.8 KiB
Plaintext

[gd_scene load_steps=21 format=3]
[ext_resource type="Script" path="res://scripts/Main.cs" id="1_main"]
[ext_resource type="PackedScene" path="res://scenes/teleport_marker.tscn" id="2_marker"]
[ext_resource type="Script" path="res://scripts/Locomotion.cs" id="3_locomotion"]
[ext_resource type="Script" path="res://scripts/WorldPanel.cs" id="4_worldpanel"]
[ext_resource type="Script" path="res://scripts/AnchorMoveMode.cs" id="5_anchormove"]
[ext_resource type="Script" path="res://scripts/PropShop.cs" id="6_propshop"]
[ext_resource type="Script" path="res://scripts/PropGrabber.cs" id="7_propgrabber"]
[ext_resource type="Script" path="res://scripts/PhysicsHands.cs" id="8_physicshands"]
[ext_resource type="Script" path="res://scripts/BodyRig.cs" id="9_bodyrig"]
[ext_resource type="Script" path="res://scripts/PhysicsTorso.cs" id="10_physicsTorso"]
[ext_resource type="Script" path="res://scripts/PhysicsArms.cs" id="11_physicsArms"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sky"]
sky_horizon_color = Color(0.66, 0.72, 0.81, 1)
ground_horizon_color = Color(0.66, 0.72, 0.81, 1)
[sub_resource type="Sky" id="Sky_main"]
sky_material = SubResource("ProceduralSkyMaterial_sky")
[sub_resource type="Environment" id="Environment_main"]
background_mode = 2
sky = SubResource("Sky_main")
[sub_resource type="StandardMaterial3D" id="Material_floor"]
albedo_color = Color(0.35, 0.35, 0.38, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_floor"]
material = SubResource("Material_floor")
size = Vector2(10, 10)
[sub_resource type="BoxShape3D" id="BoxShape_floor"]
size = Vector3(10, 0.1, 10)
[sub_resource type="SphereMesh" id="SphereMesh_hand"]
radius = 0.04
height = 0.08
[sub_resource type="StandardMaterial3D" id="Material_hand_left"]
albedo_color = Color(0.9, 0.3, 0.35, 1)
[sub_resource type="StandardMaterial3D" id="Material_hand_right"]
albedo_color = Color(0.3, 0.5, 0.9, 1)
[node name="Main" type="Node3D"]
script = ExtResource("1_main")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_main")
[node name="Sun" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 8, 0)
shadow_enabled = true
directional_shadow_max_distance = 10.0
shadow_bias = 0.04
shadow_normal_bias = 0.5
[node name="Floor" type="StaticBody3D" parent="."]
collision_mask = 29
[node name="FloorShape" type="CollisionShape3D" parent="Floor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0)
shape = SubResource("BoxShape_floor")
[node name="FloorMesh" type="MeshInstance3D" parent="Floor"]
mesh = SubResource("PlaneMesh_floor")
[node name="XROrigin3D" type="XROrigin3D" parent="."]
[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
[node name="LeftHand" type="XRController3D" parent="XROrigin3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1, -0.5)
tracker = &"left_hand"
pose = &"default"
[node name="RightHand" type="XRController3D" parent="XROrigin3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 1, -0.5)
tracker = &"right_hand"
pose = &"default"
[node name="WorldPanel" type="Node3D" parent="XROrigin3D"]
script = ExtResource("4_worldpanel")
[node name="SpawnPoint" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2.5)
[node name="TeleportMarkers" type="Node3D" parent="."]
[node name="Marker1" parent="TeleportMarkers" instance=ExtResource("2_marker")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
MarkerLabel = "1"
[node name="Marker2" parent="TeleportMarkers" instance=ExtResource("2_marker")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -3)
MarkerLabel = "2"
[node name="Marker3" parent="TeleportMarkers" instance=ExtResource("2_marker")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4)
MarkerLabel = "3"
[node name="Locomotion" type="Node" parent="."]
script = ExtResource("3_locomotion")
[node name="AnchorMoveMode" type="Node" parent="."]
script = ExtResource("5_anchormove")
[node name="PropShop" type="Node3D" parent="."]
script = ExtResource("6_propshop")
[node name="PropGrabber" type="Node" parent="."]
script = ExtResource("7_propgrabber")
[node name="PhysicsHands" type="Node" parent="."]
script = ExtResource("8_physicshands")
[node name="PhysicsTorso" type="Node" parent="."]
script = ExtResource("10_physicsTorso")
[node name="PhysicsArms" type="Node" parent="."]
script = ExtResource("11_physicsArms")
[node name="BodyRig" type="Node3D" parent="."]
script = ExtResource("9_bodyrig")
[node name="FadeLayer" type="CanvasLayer" parent="."]
[node name="Fade" type="ColorRect" parent="FadeLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
color = Color(0, 0, 0, 0)
mouse_filter = 2