3fb45f0ef2
checkpoint / checkpoint (push) Successful in 1m47s
Now that cloudbison can render (Radeon GPU via Xvfb, or llvmpipe software), added scripts/tools/screenshot_rig.gd + scenes/dev/ so a scene can be booted, run a few frames, and its rendered frame saved to PNG -- caught three things the headless smoke never could: - limbs floated detached from the torso: widened the torso and overlapped the arm/leg boxes into it, and pulled limb depth in behind the torso front so they stop z-fighting. - proportions were scrawny: reworked to Roblox R6 ratios (2-stud torso, 2-stud arms/legs, 1-stud head) with the head clearly pegged on top. - the walk swing was a 40-deg lunge: STRIDE 0.7->0.42 rad, separate 0.32 arm swing, KNEE 1.0->0.5. Reads as a walk now, not a crouch. test_level lighting was near-black on the shaded side (ambient was disabled) -- colour ambient at 0.8 + a stronger key light, so the avatar reads in-world. avatar_preview.tscn (AGP_PREVIEW_WALK=1) renders the assembled avatar walking in place for quick visual checks. Verified: avatar smoke 14/14 source + exported pack; fresh-clone boot PASS; eyeballed in rendered screenshots (game scene + walk sequence). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015jtxAiu5dAW4WxCNdGkrkJ
122 lines
3.7 KiB
Plaintext
122 lines
3.7 KiB
Plaintext
[gd_scene load_steps=1 format=3 uid="uid://c49a36fc7db_test_level"]
|
|
|
|
[sub_resource type="BoxShape3D" id="BoxShape3D_ground"]
|
|
size = Vector3(40, 1, 40)
|
|
|
|
[sub_resource type="BoxMesh" id="BoxMesh_ground"]
|
|
size = Vector3(40, 1, 40)
|
|
|
|
[sub_resource type="BoxShape3D" id="BoxShape3D_prop1"]
|
|
size = Vector3(2, 3, 2)
|
|
|
|
[sub_resource type="BoxMesh" id="BoxMesh_prop1"]
|
|
size = Vector3(2, 3, 2)
|
|
|
|
[sub_resource type="BoxShape3D" id="BoxShape3D_prop2"]
|
|
size = Vector3(3, 1, 3)
|
|
|
|
[sub_resource type="BoxMesh" id="BoxMesh_prop2"]
|
|
size = Vector3(3, 1, 3)
|
|
|
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_prop3"]
|
|
top_radius = 1.0
|
|
height = 4.0
|
|
|
|
[sub_resource type="CylinderMesh" id="CylinderMesh_prop3"]
|
|
top_radius = 1.0
|
|
bottom_radius = 1.0
|
|
height = 4.0
|
|
subdivisions_top_radius = 8
|
|
|
|
[sub_resource type="SphereShape3D" id="SphereShape3D_prop4"]
|
|
radius = 1.0
|
|
|
|
[sub_resource type="SphereMesh" id="SphereMesh_prop4"]
|
|
radius = 1.0
|
|
subdivisions_ring = 12
|
|
subdivisions_height = 12
|
|
|
|
[sub_resource type="SphereShape3D" id="SphereShape3D_prop5"]
|
|
radius = 0.5
|
|
|
|
[sub_resource type="SphereMesh" id="SphereMesh_prop5"]
|
|
radius = 0.5
|
|
subdivisions_ring = 8
|
|
subdivisions_height = 8
|
|
|
|
[sub_resource type="Environment" id="WorldEnvironment_env"]
|
|
background_mode = 1
|
|
background_color = Color(0.45, 0.62, 0.82, 1)
|
|
ambient_light_source = 2
|
|
ambient_light_color = Color(0.7, 0.75, 0.82, 1)
|
|
ambient_light_energy = 0.8
|
|
|
|
[node name="TestLevel" type="Node3D"]
|
|
|
|
[node name="Ground" type="StaticBody3D" parent="."]
|
|
position = Vector3(0, -0.5, 0)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
|
|
shape = SubResource("BoxShape3D_ground")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"]
|
|
mesh = SubResource("BoxMesh_ground")
|
|
|
|
[node name="Props" type="Node3D" parent="."]
|
|
|
|
[node name="Prop1_Box" type="StaticBody3D" parent="Props"]
|
|
position = Vector3(8, 1.5, 8)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/Prop1_Box"]
|
|
shape = SubResource("BoxShape3D_prop1")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/Prop1_Box"]
|
|
mesh = SubResource("BoxMesh_prop1")
|
|
|
|
[node name="Prop2_Pedestal" type="StaticBody3D" parent="Props"]
|
|
position = Vector3(-8, 0.5, 6)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/Prop2_Pedestal"]
|
|
shape = SubResource("BoxShape3D_prop2")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/Prop2_Pedestal"]
|
|
mesh = SubResource("BoxMesh_prop2")
|
|
|
|
[node name="Prop3_Column" type="StaticBody3D" parent="Props"]
|
|
position = Vector3(6, 2.0, -8)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/Prop3_Column"]
|
|
shape = SubResource("CylinderShape3D_prop3")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/Prop3_Column"]
|
|
mesh = SubResource("CylinderMesh_prop3")
|
|
|
|
[node name="Prop4_Sphere" type="StaticBody3D" parent="Props"]
|
|
position = Vector3(-6, 1.0, -6)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/Prop4_Sphere"]
|
|
shape = SubResource("SphereShape3D_prop4")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/Prop4_Sphere"]
|
|
mesh = SubResource("SphereMesh_prop4")
|
|
|
|
[node name="Prop5_SmallSphere" type="StaticBody3D" parent="Props"]
|
|
position = Vector3(0, 0.5, 12)
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/Prop5_SmallSphere"]
|
|
shape = SubResource("SphereShape3D_prop5")
|
|
|
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/Prop5_SmallSphere"]
|
|
mesh = SubResource("SphereMesh_prop5")
|
|
|
|
[node name="Sun" type="DirectionalLight3D" parent="."]
|
|
rotation = Vector3(-0.95, -0.5, 0)
|
|
light_energy = 1.3
|
|
shadow_enabled = true
|
|
|
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
|
environment = SubResource("WorldEnvironment_env")
|
|
|
|
[node name="PlayerSpawn" type="Marker3D" parent="."]
|
|
position = Vector3(0, 1.5, 0)
|