diff --git a/3d/ragdoll_physics/README.md b/3d/ragdoll_physics/README.md new file mode 100644 index 00000000..80314206 --- /dev/null +++ b/3d/ragdoll_physics/README.md @@ -0,0 +1,38 @@ +# Ragdoll Physics + +This demo includes an example of ragdoll simulation for characters. + +The ragdoll setup in this demo was performed by following the [Ragdoll system](https://docs.godotengine.org/en/stable/tutorials/physics/ragdoll_system.html) +tutorial. The character script also has an `initial_velocity` variable implemented, +which will give an impulse to all bones part of the ragdoll system. +This initial impulse is typically used in games to make ragdoll effects more impactful, +e.g. giving additional recoil after taking a punch. + +Impact sounds are played according to the impact speed, and are played with +reduced pitch when slow motion mode is engaged. This uses +`AudioServer.playback_speed_scale` which affects all audio, +so in a more complex project, you would want to use +[audio buses](https://docs.godotengine.org/en/stable/tutorials/audio/audio_buses.html) +which can make the effect only apply to certain sounds. This can be used to keep +music unaffected by the pitch shifting effect. + +Character models use outlines provided by the BaseMaterial3D **Stencil > Mode** +property. The scene's static geometry is designed using CSG nodes and is baked to a +static mesh and collision to improve load times and allow for global illumination +with LightmapGI. + +Controls: + +- Space: Add a ragdoll at the mouse cursor position +- Shift (hold): Enable slow motion mode (1/4 speed) +- R: Reset ragdoll simulation and remove user-placed ragdolls +- Right Mouse Button: Orbit camera +- Mouse Wheel: Zoom + +Language: GDScript + +Renderer: Forward+ + +## Screenshots + +![Screenshot](screenshots/ragdoll_physics.webp) diff --git a/3d/ragdoll_physics/characters/mannequiny.LICENSE.md b/3d/ragdoll_physics/characters/mannequiny.LICENSE.md new file mode 100644 index 00000000..296c780b --- /dev/null +++ b/3d/ragdoll_physics/characters/mannequiny.LICENSE.md @@ -0,0 +1,7 @@ +# License for `mannequiny.glb` + +Copyright (c) 2020 GDQuest and contributors (https://www.gdquest.com/) + +Licensed under CC BY 4.0 International + +Downloaded from . diff --git a/3d/ragdoll_physics/characters/mannequiny.glb b/3d/ragdoll_physics/characters/mannequiny.glb new file mode 100644 index 00000000..6c49c518 Binary files /dev/null and b/3d/ragdoll_physics/characters/mannequiny.glb differ diff --git a/3d/ragdoll_physics/characters/mannequiny.glb.import b/3d/ragdoll_physics/characters/mannequiny.glb.import new file mode 100644 index 00000000..e7c75384 --- /dev/null +++ b/3d/ragdoll_physics/characters/mannequiny.glb.import @@ -0,0 +1,60 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://s42h0rnuf2hf" +path="res://.godot/imported/mannequiny.glb-c63c284f6fd6b41bb34b1c5bea848ecd.scn" + +[deps] + +source_file="res://characters/mannequiny.glb" +dest_files=["res://.godot/imported/mannequiny.glb-c63c284f6fd6b41bb34b1c5bea848ecd.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=3 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Azul_COLOR_0": { +"use_external/enabled": true, +"use_external/fallback_path": "res://materials/blue.tres", +"use_external/path": "uid://ch6ctajgm6nyy" +}, +"Blanco_COLOR_0": { +"use_external/enabled": true, +"use_external/fallback_path": "res://materials/white.tres", +"use_external/path": "uid://dyij7l6ir0ixa" +}, +"Negro_COLOR_0": { +"use_external/enabled": true, +"use_external/fallback_path": "res://materials/black.tres", +"use_external/path": "uid://brpxmsr7g2gh6" +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd b/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd new file mode 100644 index 00000000..2fbf74ea --- /dev/null +++ b/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd @@ -0,0 +1,36 @@ +extends Node3D + +const IMPACT_SOUND_SPEED_SMALL = 0.3 +const IMPACT_SOUND_SPEED_BIG = 1.0 + +## The velocity to apply on the first physics frame. +@export var initial_velocity: Vector3 + +var has_applied_initial_velocity: bool = false +# Used to play an impact sound on sudden velocity changes. +# We use the pelvis bone as it's close to the center of mass of the character model. +# For more detailed impact sounds, you could place multiple AudioStreamPlayer nodes as a child +# of each limb. +var previous_pelvis_speed: float = 0.0 + +@onready var pelvis: PhysicalBone3D = $"root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone pelvis" + + +func _ready() -> void: + $root/root_001/Skeleton3D/PhysicalBoneSimulator3D.physical_bones_start_simulation() + if not initial_velocity.is_zero_approx(): + for physical_bone in $root/root_001/Skeleton3D/PhysicalBoneSimulator3D.get_children(): + # Give the ragdoll an initial motion by applying velocity on all its bones upon being spawned. + physical_bone.apply_central_impulse(initial_velocity) + + +func _physics_process(_delta: float) -> void: + var pelvis_speed: float = pelvis.linear_velocity.length() + # Ensure the speed used to determine the threshold doesn't change with time scale. + var impact_speed := (previous_pelvis_speed - pelvis_speed) / Engine.time_scale + if impact_speed > IMPACT_SOUND_SPEED_BIG: + $ImpactSoundBig.play() + elif impact_speed > IMPACT_SOUND_SPEED_SMALL: + $ImpactSoundSmall.play() + + previous_pelvis_speed = pelvis_speed diff --git a/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd.uid b/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd.uid new file mode 100644 index 00000000..af2004d0 --- /dev/null +++ b/3d/ragdoll_physics/characters/mannequiny_ragdoll.gd.uid @@ -0,0 +1 @@ +uid://bvbikscp01gbc diff --git a/3d/ragdoll_physics/characters/mannequiny_ragdoll.tscn b/3d/ragdoll_physics/characters/mannequiny_ragdoll.tscn new file mode 100644 index 00000000..b168e9b0 --- /dev/null +++ b/3d/ragdoll_physics/characters/mannequiny_ragdoll.tscn @@ -0,0 +1,529 @@ +[gd_scene load_steps=25 format=3 uid="uid://b3ro5p8ydfhgh"] + +[ext_resource type="PackedScene" uid="uid://s42h0rnuf2hf" path="res://characters/mannequiny.glb" id="1_k1ufn"] +[ext_resource type="Script" uid="uid://bvbikscp01gbc" path="res://characters/mannequiny_ragdoll.gd" id="2_swgnv"] +[ext_resource type="AudioStream" uid="uid://drrptt1g0n2vh" path="res://sounds/impact_small.wav" id="3_rx62r"] +[ext_resource type="AudioStream" uid="uid://urcgf5c0ln36" path="res://sounds/impact_big.wav" id="4_63wjt"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_swgnv"] +radius = 0.07 +height = 0.3 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_pxhot"] +radius = 0.06 +height = 0.4 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_rx62r"] +radius = 0.05 +height = 0.42794177 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_63wjt"] +radius = 0.04 +height = 0.2 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lgsap"] +radius = 0.119 +height = 0.26 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_b8qrq"] +radius = 0.15 +height = 0.32 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ro32m"] +radius = 0.04 +height = 0.1 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_76ik7"] +radius = 0.05 +height = 0.15 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hp5ob"] +radius = 0.05 +height = 0.2619829 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_k82ed"] +radius = 0.04 +height = 0.20732063 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_81x62"] +radius = 0.04 +height = 0.2 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_c87p0"] +radius = 0.05 +height = 0.15 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_wodjd"] +radius = 0.05 +height = 0.26198295 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_osl3f"] +radius = 0.04 +height = 0.2073207 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tohjf"] +radius = 0.04 +height = 0.2 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_2jrde"] +radius = 0.038935494 +height = 0.38935494 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hpv8y"] +radius = 0.05 +height = 0.428 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ifqtp"] +radius = 0.04 +height = 0.2 + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_lgsap"] +random_pitch = 1.05 +random_volume_offset_db = 2.0 +streams_count = 1 +stream_0/stream = ExtResource("3_rx62r") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_pxhot"] +random_pitch = 1.05 +random_volume_offset_db = 2.0 +streams_count = 1 +stream_0/stream = ExtResource("4_63wjt") + +[node name="Mannequiny" instance=ExtResource("1_k1ufn")] +script = ExtResource("2_swgnv") + +[node name="Skeleton3D" parent="root/root_001" index="0"] +bones/0/position = Vector3(-0.0073073814, 0.25549555, -0.9654906) +bones/0/rotation = Quaternion(-0.6010748, 0.09516296, -0.10946029, 0.7859209) +bones/1/position = Vector3(0.101934776, -0.026014993, 0.00481082) +bones/1/rotation = Quaternion(0.64258534, 0.10058304, 0.75958246, 0.0013437299) +bones/1/scale = Vector3(0.99999803, 1.0267714, 0.9999957) +bones/2/position = Vector3(9.745526e-07, 0.38935488, -1.1713537e-06) +bones/2/rotation = Quaternion(-4.4121425e-05, 4.4676483e-05, 0.0025771966, 0.9999967) +bones/2/scale = Vector3(0.9999994, 1.0000013, 1) +bones/3/rotation = Quaternion(0.32753584, 0.4100146, -0.26517764, 0.8088814) +bones/3/scale = Vector3(0.9992763, 0.9894031, 0.9860808) +bones/4/position = Vector3(0.0017231808, 0.12762056, -0.003080215) +bones/4/rotation = Quaternion(0.10457491, 0.9430038, 0.31486666, -0.02582683) +bones/4/scale = Vector3(1.0001645, 0.98759276, 1.0120888) +bones/5/rotation = Quaternion(-0.121235915, -0.14759062, 0.012175115, 0.98151445) +bones/6/rotation = Quaternion(-0.07025626, 0.0032932563, 0.00023194533, 0.99752355) +bones/7/rotation = Quaternion(0.3137003, 0.0063864617, 0.0021100962, 0.9494983) +bones/8/rotation = Quaternion(-0.16917156, -0.00666159, -0.0011357268, 0.98556346) +bones/9/rotation = Quaternion(0.46739042, 0.60986483, -0.507783, 0.3895737) +bones/10/rotation = Quaternion(-0.4275008, 0.5223583, 0.36764285, -0.6397059) +bones/11/rotation = Quaternion(0.31197274, -0.12640734, -0.23658149, 0.9114403) +bones/11/scale = Vector3(1, 0.99993074, 1.0000005) +bones/12/position = Vector3(-4.6001605e-07, 0.2073206, 9.5180917e-07) +bones/12/rotation = Quaternion(0.057765473, -0.28268203, 0.0073279897, 0.9574447) +bones/12/scale = Vector3(0.999999, 1.0000682, 1.0000001) +bones/13/position = Vector3(0.049143255, 0.050087444, -0.0046549165) +bones/13/rotation = Quaternion(0.04670327, 0.7870346, -0.3169294, 0.52721083) +bones/13/scale = Vector3(1.0000038, 0.99999505, 1.000001) +bones/14/rotation = Quaternion(-0.024159074, 0.306848, -0.06241794, 0.9494023) +bones/14/scale = Vector3(0.9999969, 0.9999976, 1.0000039) +bones/15/rotation = Quaternion(-0.009287203, -0.4385284, -0.008409321, 0.89863) +bones/15/scale = Vector3(1.0000029, 0.9999993, 0.9999969) +bones/16/position = Vector3(-0.024605138, 0.08604231, -0.0015067998) +bones/16/rotation = Quaternion(-0.7130364, -0.123598285, 0.029208997, 0.6895284) +bones/16/scale = Vector3(1.0000007, 1.0000008, 0.9999982) +bones/17/rotation = Quaternion(-0.58554816, 0.020785872, -0.009222633, 0.8103186) +bones/17/scale = Vector3(0.99999946, 1.0000049, 0.99999505) +bones/18/rotation = Quaternion(-0.5874686, 0.0038575218, 0.010154042, 0.809174) +bones/18/scale = Vector3(0.99999946, 0.99999636, 1.0000027) +bones/19/position = Vector3(0.0025598723, 0.08686941, 0.0003485831) +bones/19/rotation = Quaternion(-0.45010233, -0.16124822, 0.036844503, 0.8775246) +bones/19/scale = Vector3(1.000001, 0.99999326, 1.0000056) +bones/20/rotation = Quaternion(-0.6457025, 0.0076800776, 0.019753268, 0.76329505) +bones/20/scale = Vector3(0.9999994, 1.0000012, 0.9999983) +bones/21/rotation = Quaternion(-0.6397573, 0.017770112, 0.020346047, 0.7681021) +bones/21/scale = Vector3(0.9999997, 1, 0.99999994) +bones/22/position = Vector3(0.032204367, 0.08342956, -0.0019184119) +bones/22/rotation = Quaternion(-0.42548293, -0.14428787, 0.03901973, 0.8925373) +bones/22/scale = Vector3(1.0000008, 0.99999255, 1.000006) +bones/23/rotation = Quaternion(-0.5835014, -0.0019097773, 0.054007858, 0.8103121) +bones/23/scale = Vector3(0.9999993, 1.0000014, 0.9999982) +bones/24/rotation = Quaternion(-0.5992657, -0.0077646915, 0.029896498, 0.7999542) +bones/24/scale = Vector3(0.99999917, 1.0000015, 0.9999988) +bones/25/rotation = Quaternion(-0.46732152, 0.60981935, -0.507933, -0.38953167) +bones/26/rotation = Quaternion(0.42747992, 0.5223354, 0.367778, 0.63966095) +bones/27/rotation = Quaternion(0.31198776, 0.12637165, 0.23649698, 0.91146207) +bones/27/scale = Vector3(1.0000002, 0.9997524, 0.9999998) +bones/28/rotation = Quaternion(0.057726346, 0.28284425, -0.0069663143, 0.95740193) +bones/28/scale = Vector3(0.9999992, 1.0002446, 1.0000025) +bones/29/position = Vector3(-0.049164493, 0.05008578, -0.0046184924) +bones/29/rotation = Quaternion(0.04647095, -0.78692204, 0.31700882, 0.5273517) +bones/29/scale = Vector3(1.0000135, 0.9999834, 1.0000033) +bones/30/position = Vector3(-4.6574286e-08, 0.0210911, 9.12469e-07) +bones/30/rotation = Quaternion(-0.024224084, -0.30665877, 0.062598675, 0.9494499) +bones/30/scale = Vector3(0.99999, 0.99999493, 1.0000144) +bones/31/rotation = Quaternion(-0.009207489, 0.43871418, 0.008593198, 0.8985385) +bones/31/scale = Vector3(1.0000104, 0.99999964, 0.9999895) +bones/32/position = Vector3(0.024561996, 0.086041234, -0.001475383) +bones/32/rotation = Quaternion(-0.71307796, 0.123773515, -0.028392145, 0.6894881) +bones/32/scale = Vector3(1.000003, 1.0000017, 0.99999434) +bones/33/rotation = Quaternion(-0.58551395, -0.020559972, 0.0093383, 0.81034774) +bones/33/scale = Vector3(1, 1.0000168, 0.99998343) +bones/34/rotation = Quaternion(-0.5874683, -0.0038161273, -0.009851522, 0.8091782) +bones/34/scale = Vector3(0.9999993, 0.99998707, 1.0000128) +bones/35/position = Vector3(-0.0026018997, 0.08686423, 0.00038222718) +bones/35/rotation = Quaternion(-0.4501804, 0.16146435, -0.036355656, 0.8774653) +bones/35/scale = Vector3(1.0000039, 0.99997413, 1.0000206) +bones/36/rotation = Quaternion(-0.64572024, -0.007691401, -0.01944123, 0.7632879) +bones/36/scale = Vector3(0.999998, 1.0000036, 0.99999696) +bones/37/rotation = Quaternion(-0.6397537, -0.01774685, -0.020062046, 0.7681131) +bones/37/scale = Vector3(0.99999976, 0.9999998, 1) +bones/38/position = Vector3(-0.032242596, 0.08342186, -0.0018826793) +bones/38/rotation = Quaternion(-0.4256053, 0.14451644, -0.038539756, 0.89246285) +bones/38/scale = Vector3(1.0000036, 0.9999734, 1.0000226) +bones/39/rotation = Quaternion(-0.58352935, 0.0019344841, -0.05368389, 0.81031346) +bones/39/scale = Vector3(0.99999917, 1.0000048, 0.9999953) +bones/40/rotation = Quaternion(-0.5992753, 0.0078095645, -0.029635748, 0.79995614) +bones/40/scale = Vector3(0.9999981, 1.0000045, 0.99999464) +bones/41/position = Vector3(-0.10189995, -0.02604357, 0.0048768246) +bones/41/rotation = Quaternion(-0.6077498, 0.09655694, 0.78801256, -0.018790418) +bones/41/scale = Vector3(0.999993, 1.0086167, 1) +bones/42/position = Vector3(1.2333298e-07, 0.38935477, -3.9397972e-07) +bones/42/rotation = Quaternion(-1.0652157e-05, -1.4396464e-05, -0.0026065223, 0.99999666) +bones/42/scale = Vector3(0.9999999, 0.999999, 1.0000002) +bones/43/rotation = Quaternion(0.26887715, -0.6126081, 0.28350013, 0.68705475) +bones/43/scale = Vector3(0.9999241, 0.99593246, 0.99564683) +bones/44/position = Vector3(-0.0008844122, 0.12766385, -0.0007816368) +bones/44/scale = Vector3(1.0000137, 0.99589205, 1.004086) + +[node name="PhysicalBoneSimulator3D" type="PhysicalBoneSimulator3D" parent="root/root_001/Skeleton3D" index="1"] + +[node name="Physical Bone pelvis" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="0"] +transform = Transform3D(0.23557931, 0.29573935, -0.9257649, 0.93647283, 0.18561544, 0.29759973, 0.25984818, -0.937062, -0.23322468, 0.041481193, 0.23975205, -0.9526674) +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.230214e-05, 0.00050953456, 0.052842658) +body_offset = Transform3D(-0.047264934, 0.24698676, -0.9678655, 1.9326806e-05, 0.9689486, 0.24726215, 0.9988824, 0.011668131, -0.045802116, 0.051014848, -0.013559699, 0.0024965703) +friction = 0.6 +bounce = 0.8 +bone_name = "pelvis" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone pelvis" index="0"] +transform = Transform3D(0.9983283, -0.057426687, 0.006551802, 0.009269461, 0.27095735, 0.9625467, -0.0570511, -0.9608768, 0.27103677, -0.026277378, 0.016484857, 0.059847087) +shape = SubResource("CapsuleShape3D_swgnv") + +[node name="Physical Bone thigh_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="1"] +transform = Transform3D(0.115132205, 0.98756367, -0.10706323, 0.9848856, -0.099445865, 0.1418127, 0.12940207, -0.12177224, -0.9840867, 0.11195352, 0.1957558, -0.74422055) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2172761e-06, -0.00035805823, 0.1999614) +body_offset = Transform3D(1.0000019, 4.3958426e-07, -2.8312206e-07, -2.0861626e-07, 0.0017459542, -0.9739248, -3.1292439e-07, 1.0000025, 0.0017926535, 1.2740493e-06, 0.19474798, -4.0233135e-07) +friction = 0.6 +bounce = 0.8 +bone_name = "thigh.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone thigh_l" index="0"] +transform = Transform3D(1, 5.5879354e-09, 0, 2.9802322e-08, 5.5879354e-09, 1, 0, -1.0000001, 1.8626451e-09, 0.0030149072, -0.011125341, 0.0010123253) +shape = SubResource("CapsuleShape3D_pxhot") + +[node name="Physical Bone calf_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="2"] +transform = Transform3D(0.11561876, 0.98739123, -0.10812478, 0.98412913, -0.09911851, 0.14719155, 0.13461846, -0.12342684, -0.98318046, 0.15746441, 0.13510402, -0.3316144) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.997093e-05, -2.9877774e-06, 0.21970053) +body_offset = Transform3D(1.0000017, -1.8626451e-07, 0.00027228892, 1.4901161e-08, 8.461066e-06, -0.97392607, 2.9802322e-07, 1.0000043, 1.3328157e-05, 1.4901161e-07, 0.21397206, 5.9604645e-08) +friction = 0.6 +bounce = 0.8 +bone_name = "calf.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone calf_l" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_rx62r") + +[node name="Physical Bone foot_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="3"] +transform = Transform3D(-0.78327715, 0.41593197, -0.46203628, 0.62156075, 0.5380594, -0.5693455, 0.01179397, -0.7331389, -0.67997664, 0.2082249, 0.14071183, -0.06802554) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029649523, 0.0032675527, 0.06639604) +body_offset = Transform3D(1.0000525, -0.0062685907, -0.0053450763, -1.8060207e-05, -2.7120113e-06, -0.99971634, -1.2457371e-05, 0.99921167, -0.025489092, 0.0033404827, 0.06637716, -0.0015726388) +friction = 0.6 +bounce = 0.8 +bone_name = "foot.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone foot_l" index="0"] +transform = Transform3D(0.9987839, 0.006565829, -0.048863254, 0.036262766, 0.5736384, 0.8183055, 0.033402696, -0.8190824, 0.5727027, 0.0015807741, 0.0010102019, -0.048480883) +shape = SubResource("CapsuleShape3D_63wjt") + +[node name="Physical Bone spine_01" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="4"] +transform = Transform3D(0.99998087, -0.0061568767, 0.0005781364, 0.0061668693, 0.99979556, -0.019257031, -0.000459455, 0.019260228, 0.9998144, -0.0004694978, 0.286528, -1.1610739) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.336061e-05, 0.0010080686, 0.079328224) +body_offset = Transform3D(1.0000001, 3.7629157e-05, -1.868052e-05, -1.8716353e-05, 5.365163e-05, -1.0000001, -3.7651043e-05, 1.0000001, 5.3688884e-05, -6.191665e-05, 0.07932818, -0.0010123253) +friction = 0.6 +bounce = 0.8 +bone_name = "spine_01" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone spine_01" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_lgsap") + +[node name="Physical Bone spine_02" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="5"] +transform = Transform3D(0.99999976, 0.0003205655, 0.00064846966, -0.00039668725, 0.99265003, 0.121020004, -0.0006049085, -0.12102023, 0.9926499, -0.00055574026, 0.27389526, -1.3858926) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.6617953e-07, 0.0011630906, 0.120092124) +body_offset = Transform3D(1.0000002, -2.9773219e-08, -1.614535e-08, -4.605681e-08, 0, -1.0000002, 2.240995e-09, 1.0000002, 3.7252903e-08, -4.642061e-07, 0.12009215, -0.0011630952) +friction = 0.6 +bounce = 0.8 +bone_name = "spine_02" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone spine_02" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_b8qrq") + +[node name="Physical Bone neck_01" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="6"] +transform = Transform3D(0.99990064, 0.014094635, 0.00033012332, -0.012090324, 0.8692853, -0.49416295, -0.0072520175, 0.49410987, 0.86936927, -0.0006395486, 0.2942427, -1.5431339) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00018637997, -0.014062202, 0.044933416) +body_offset = Transform3D(1.0000002, -8.6892396e-07, 5.9138983e-08, 1.9092113e-08, 8.046627e-07, -1.0000002, 8.670613e-07, 1.0000004, 8.940697e-07, -0.0001863949, 0.04493344, 0.014062166) +friction = 0.6 +bounce = 0.8 +bone_name = "neck_01" +joint_constraints/swing_span = 0.0 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone neck_01" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_ro32m") + +[node name="Physical Bone clavicle_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="7"] +transform = Transform3D(-0.2599753, 0.0010889263, -0.9656147, -0.96386755, -0.060431443, 0.2594368, -0.058070976, 0.99817175, 0.016760265, 0.10844983, 0.27126884, -1.3874094) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.816396e-05, -0.06324105, 0.06771886) +body_offset = Transform3D(1, 7.953495e-06, -5.662441e-07, -5.066395e-07, 2.4493784e-06, -1.0000004, -8.028001e-06, 1.0000001, 2.4680048e-06, 9.870529e-05, 0.06771904, 0.063240886) +friction = 0.6 +bounce = 0.8 +bone_name = "clavicle.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone clavicle_l" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_76ik7") + +[node name="Physical Bone upperarm_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="8"] +transform = Transform3D(-0.9329351, 0.09828635, -0.3463696, 0.039213978, 0.9840336, 0.17360926, 0.35790274, 0.14838365, -0.9218936, 0.21919343, 0.23486991, -1.3309096) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5200992e-05, 1.7105516e-06, 0.13099143) +body_offset = Transform3D(1.0000001, 3.4756958e-06, -0.00012059603, -0.0001206235, -1.0639429e-05, -1.0000002, -3.2633543e-06, 1.0000001, -1.0669231e-05, 5.9604645e-07, 0.13099146, -3.1292439e-07) +friction = 0.6 +bounce = 0.8 +bone_name = "upperarm.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone upperarm_l" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_hp5ob") + +[node name="Physical Bone lowerarm_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="9"] +transform = Transform3D(-0.9672625, 0.25236982, 0.026696945, 0.2036231, 0.83457875, -0.511875, -0.1514625, -0.4896813, -0.8586451, 0.26167712, 0.26511794, -1.1211481) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00011695912, 9.264974e-05, 0.10362813) +body_offset = Transform3D(1, 2.7120113e-06, 1.7359853e-05, 1.7531216e-05, 7.3313713e-06, -1.0000694, -2.6524067e-06, 0.9999996, 7.2419643e-06, 0.0001151599, 0.10363531, -9.340048e-05) +friction = 0.6 +bounce = 0.8 +bone_name = "lowerarm.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone lowerarm_l" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_k82ed") + +[node name="Physical Bone hand_l" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="10"] +transform = Transform3D(0.6691953, 0.56012636, 0.48829922, 0.58241284, 0.012744234, -0.8127933, -0.4614899, 0.8283092, -0.31769645, 0.24813288, 0.34279132, -0.99539137) +joint_type = 2 +joint_offset = Transform3D(0.9999985, 0, 0, 0, 0.9999985, 0, 0, 0, 0.9999973, 0.009970654, -0.024653021, 0.036958784) +body_offset = Transform3D(0.09434357, -0.70895773, -0.69891346, -5.6922436e-06, 0.7020457, -0.7121323, 0.99554, 0.06717803, 0.06624091, 0.007412374, 0.043627143, -0.010718226) +friction = 0.6 +bounce = 0.8 +bone_name = "hand.l" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone hand_l" index="0"] +transform = Transform3D(1, 0, 0, 0, 0.6476679, 0.7619228, 0, -0.7619228, 0.6476679, -7.613562e-08, 0.04244047, -0.02025969) +shape = SubResource("CapsuleShape3D_81x62") + +[node name="Physical Bone clavicle_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="11"] +transform = Transform3D(-0.25933444, 0.00022785015, 0.9657876, 0.9640336, -0.060179736, 0.25887766, 0.058179826, 0.99818754, 0.015387024, -0.10997537, 0.2745934, -1.4344966) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00038375138, -0.015897889, 0.06801801) +body_offset = Transform3D(1.0000002, 6.7055225e-08, 7.003546e-07, 7.599592e-07, 2.7474016e-07, -1.0000005, 0, 1.0000002, 3.3993274e-07, 0.0003837049, 0.06801805, 0.01589787) +friction = 0.6 +bounce = 0.8 +bone_name = "clavicle.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone clavicle_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_c87p0") + +[node name="Physical Bone upperarm_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="12"] +transform = Transform3D(-0.93345743, -0.09770647, 0.34512427, -0.038921293, 0.9840941, 0.17333175, -0.35657042, 0.14836511, -0.9224128, -0.22026709, 0.23478527, -1.3297559) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00023960909, 9.96516e-05, 0.13182715) +body_offset = Transform3D(1.0000005, -2.7939677e-07, 4.984904e-06, 5.214475e-06, -2.115965e-06, -0.9999998, 1.899898e-07, 1.0000002, -2.2053719e-06, -0.00024026632, 0.13182712, -9.936094e-05) +friction = 0.6 +bounce = 0.8 +bone_name = "upperarm.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone upperarm_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_wodjd") + +[node name="Physical Bone lowerarm_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="13"] +transform = Transform3D(-0.9671382, -0.2526957, -0.028083168, -0.20319527, 0.83458984, -0.51202685, 0.15282491, -0.48949432, -0.85851026, -0.26247418, 0.26537052, -1.1191617) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00021551378, 0.0008159093, 0.10503747) +body_offset = Transform3D(1.0000002, 7.003546e-07, 9.022653e-06, 8.709729e-06, -1.2010336e-05, -1.0002477, -3.874302e-07, 1.0000001, -1.2308359e-05, 0.00021456555, 0.1050635, -0.0008146167) +friction = 0.6 +bounce = 0.8 +bone_name = "lowerarm.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone lowerarm_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_osl3f") + +[node name="Physical Bone hand_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="14"] +transform = Transform3D(0.66987807, -0.55835646, -0.48938882, -0.5825256, 0.013442612, -0.8127012, 0.46035564, 0.8294922, -0.31625208, -0.24704346, 0.338235, -0.9966111) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0130916005, -0.022463894, 0.033371486) +body_offset = Transform3D(0.09433341, 0.7089263, 0.6989468, 1.1473894e-05, 0.7020825, -0.71209544, -0.9955419, 0.06714249, 0.06626114, -0.00616467, 0.039535344, -0.013736188) +friction = 0.6 +bounce = 0.8 +bone_name = "hand.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone hand_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0.63704735, 0.7708247, 0, -0.7708247, 0.63704735, 3.0209776e-08, 0.050543435, -0.027240014) +shape = SubResource("CapsuleShape3D_tohjf") + +[node name="Physical Bone thigh_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="15"] +transform = Transform3D(-0.52638245, -0.84532386, 0.09137322, -0.84425014, 0.5323845, 0.061713077, -0.10081323, -0.044657167, -0.9939026, -0.12298988, 0.27045748, -0.7420706) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0250827e-05, 1.0400772e-05, 0.19637132) +body_offset = Transform3D(1.000007, -7.867813e-06, 1.5124679e-06, 1.4826655e-06, 1.6409904e-05, -0.99145716, 7.927418e-06, 1.0000002, 1.6544014e-05, 9.953976e-06, 0.19469374, -1.3649464e-05) +friction = 0.6 +bounce = 0.8 +bone_name = "thigh.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone thigh_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_2jrde") + +[node name="Physical Bone calf_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="16"] +transform = Transform3D(-0.5259178, -0.84531, 0.0941356, -0.84389925, 0.53240734, 0.0661555, -0.10604038, -0.044648603, -0.9933589, -0.16266069, 0.24147218, -0.31524065) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0011051681, 0.0009728443, 0.23331164) +body_offset = Transform3D(1.0000068, -6.5267086e-06, -8.941442e-05, 9.313226e-08, 7.8231096e-07, -0.9914583, 6.645918e-06, 0.9999999, 1.1511147e-06, 0.0011260435, 0.23131877, -0.00097310543) +friction = 0.6 +bounce = 0.8 +bone_name = "calf.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone calf_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0) +shape = SubResource("CapsuleShape3D_hpv8y") + +[node name="Physical Bone foot_r" type="PhysicalBone3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D" index="17"] +transform = Transform3D(-0.8927629, 0.33978966, -0.29583353, 0.4504808, 0.68265337, -0.5753708, 0.0064467257, -0.6469369, -0.7625163, -0.16289136, 0.2662114, -0.06912665) +joint_type = 2 +joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.42822e-05, 0.0005513179, 0.06384036) +body_offset = Transform3D(1.0000451, 0.0007324815, 0.00071302056, -8.940697e-08, -2.0861626e-07, -0.9999136, -2.9802322e-08, 0.99998415, -0.0085531175, -1.6391277e-06, 0.063834846, -5.275011e-06) +friction = 0.6 +bounce = 0.8 +bone_name = "foot.r" +joint_constraints/swing_span = 19.999992 +joint_constraints/twist_span = 19.999992 +joint_constraints/bias = 0.3 +joint_constraints/softness = 0.8 +joint_constraints/relaxation = 1.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="root/root_001/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone foot_r" index="0"] +transform = Transform3D(1, 0, 0, 0, 0.6320293, 0.7749445, 0, -0.7749445, 0.6320293, 1.6763806e-08, -0.0042627603, -0.042318884) +shape = SubResource("CapsuleShape3D_ifqtp") + +[node name="ImpactSoundSmall" type="AudioStreamPlayer3D" parent="." index="2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +stream = SubResource("AudioStreamRandomizer_lgsap") +volume_db = -3.0 +unit_size = 15.0 +max_db = 0.0 +max_polyphony = 4 +attenuation_filter_db = 0.0 + +[node name="ImpactSoundBig" type="AudioStreamPlayer3D" parent="." index="3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +stream = SubResource("AudioStreamRandomizer_pxhot") +volume_db = -3.0 +unit_size = 15.0 +max_db = 0.0 +attenuation_filter_db = 0.0 diff --git a/3d/ragdoll_physics/materials/black.tres b/3d/ragdoll_physics/materials/black.tres new file mode 100644 index 00000000..23311e76 --- /dev/null +++ b/3d/ragdoll_physics/materials/black.tres @@ -0,0 +1,20 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://brpxmsr7g2gh6"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vjigt"] +render_priority = 1 +transparency = 1 +shading_mode = 0 +albedo_color = Color(0, 0, 0, 1) +grow = true +grow_amount = 0.03 +stencil_mode = 3 +stencil_flags = 1 +stencil_compare = 5 +metadata/_stencil_owned = true + +[resource] +next_pass = SubResource("StandardMaterial3D_vjigt") +albedo_color = Color(0, 0.15095623, 0.30522534, 1) +stencil_mode = 1 +stencil_flags = 2 +stencil_outline_thickness = 0.03 diff --git a/3d/ragdoll_physics/materials/blue.tres b/3d/ragdoll_physics/materials/blue.tres new file mode 100644 index 00000000..c27ad966 --- /dev/null +++ b/3d/ragdoll_physics/materials/blue.tres @@ -0,0 +1,20 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://ch6ctajgm6nyy"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hmx3n"] +render_priority = 1 +transparency = 1 +shading_mode = 0 +albedo_color = Color(0, 0, 0, 1) +grow = true +grow_amount = 0.03 +stencil_mode = 3 +stencil_flags = 1 +stencil_compare = 5 +metadata/_stencil_owned = true + +[resource] +next_pass = SubResource("StandardMaterial3D_hmx3n") +albedo_color = Color(0.14699998, 0.5218503, 0.98, 1) +stencil_mode = 1 +stencil_flags = 2 +stencil_outline_thickness = 0.03 diff --git a/3d/ragdoll_physics/materials/white.tres b/3d/ragdoll_physics/materials/white.tres new file mode 100644 index 00000000..6fae0bd3 --- /dev/null +++ b/3d/ragdoll_physics/materials/white.tres @@ -0,0 +1,19 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dyij7l6ir0ixa"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dty5t"] +render_priority = 1 +transparency = 1 +shading_mode = 0 +albedo_color = Color(0, 0, 0, 1) +grow = true +grow_amount = 0.03 +stencil_mode = 3 +stencil_flags = 1 +stencil_compare = 5 +metadata/_stencil_owned = true + +[resource] +next_pass = SubResource("StandardMaterial3D_dty5t") +stencil_mode = 1 +stencil_flags = 2 +stencil_outline_thickness = 0.03 diff --git a/3d/ragdoll_physics/project.godot b/3d/ragdoll_physics/project.godot new file mode 100644 index 00000000..aeaec74f --- /dev/null +++ b/3d/ragdoll_physics/project.godot @@ -0,0 +1,54 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Ragdoll Physics" +config/description="This demo includes an example of ragdoll simulation for characters." +run/main_scene="uid://dpkhlaxg5302f" +config/features=PackedStringArray("4.5") + +[debug] + +gdscript/warnings/untyped_declaration=1 + +[display] + +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[input] + +reset_simulation={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":82,"physical_keycode":0,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +] +} +place_ragdoll={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +slow_motion={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194325,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} + +[physics] + +3d/physics_engine="Jolt Physics" +common/physics_interpolation=true + +[rendering] + +lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3 +textures/default_filters/anisotropic_filtering_level=4 +anti_aliasing/quality/msaa_3d=2 diff --git a/3d/ragdoll_physics/ragdoll_physics.exr b/3d/ragdoll_physics/ragdoll_physics.exr new file mode 100644 index 00000000..3b7776f4 Binary files /dev/null and b/3d/ragdoll_physics/ragdoll_physics.exr differ diff --git a/3d/ragdoll_physics/ragdoll_physics.exr.import b/3d/ragdoll_physics/ragdoll_physics.exr.import new file mode 100644 index 00000000..c64c4621 --- /dev/null +++ b/3d/ragdoll_physics/ragdoll_physics.exr.import @@ -0,0 +1,29 @@ +[remap] + +importer="2d_array_texture" +type="CompressedTexture2DArray" +uid="uid://ch6sljd8w7yli" +path.bptc="res://.godot/imported/ragdoll_physics.exr-1bc8d749970435786dd413f3313cbc66.bptc.ctexarray" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://ragdoll_physics.exr" +dest_files=["res://.godot/imported/ragdoll_physics.exr-1bc8d749970435786dd413f3313cbc66.bptc.ctexarray"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/channel_pack=1 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=1 +slices/vertical=1 diff --git a/3d/ragdoll_physics/ragdoll_physics.gd b/3d/ragdoll_physics/ragdoll_physics.gd new file mode 100644 index 00000000..0858d0e0 --- /dev/null +++ b/3d/ragdoll_physics/ragdoll_physics.gd @@ -0,0 +1,62 @@ +extends Node3D + +const MOUSE_SENSITIVITY = 0.01 +const INITIAL_VELOCITY_STRENGTH = 0.5 + +# Margin to add to the automatically computed shadow maximum distance. +# This value was empirically chosen to cover the whole scene when zoomed +# all the way in. +const DIRECTIONAL_SHADOW_MAX_DISTANCE_MARGIN = 9.0 + +@onready var camera_pivot: Node3D = $CameraPivot +@onready var camera: Camera3D = $CameraPivot/Camera3D +@onready var directional_light: DirectionalLight3D = $DirectionalLight3D + + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed(&"reset_simulation"): + get_tree().reload_current_scene() + + if event.is_action_pressed(&"place_ragdoll"): + var origin := camera.global_position + var target := camera.project_position(get_viewport().get_mouse_position(), 100) + + var query := PhysicsRayQueryParameters3D.create(origin, target) + var result := camera.get_world_3d().direct_space_state.intersect_ray(query) + + if not result.is_empty(): + var ragdoll := preload("res://characters/mannequiny_ragdoll.tscn").instantiate() + ragdoll.position = result["position"] + Vector3(0.0, 0.5, 0.0) + # Make newly spawned ragdolls face the camera. + ragdoll.rotation.y = camera_pivot.rotation.y + # Give some initial velocity in a random horizontal direction. + ragdoll.initial_velocity = Vector3.FORWARD.rotated(Vector3.UP, randf_range(0, TAU)) * INITIAL_VELOCITY_STRENGTH + add_child(ragdoll) + + if event.is_action_pressed(&"slow_motion"): + Engine.time_scale = 0.25 + # Don't set pitch scale too low as it sounds strange. + # `0.5` is the square root of `0.25` and gives a good result here. + AudioServer.playback_speed_scale = 0.5 + + if event.is_action_released(&"slow_motion"): + Engine.time_scale = 1.0 + AudioServer.playback_speed_scale = 1.0 + + # Pan the camera with right mouse button. + if event is InputEventMouseMotion: + var mouse_motion := event as InputEventMouseMotion + if mouse_motion.button_mask & MOUSE_BUTTON_RIGHT: + camera_pivot.global_rotation.x = clampf(camera_pivot.global_rotation.x - event.screen_relative.y * MOUSE_SENSITIVITY, -TAU * 0.249, TAU * 0.021) + camera_pivot.global_rotation.y -= event.screen_relative.x * MOUSE_SENSITIVITY + + # Zoom with mouse wheel. + # This also adjusts shadow maximum distance to always cover the scene regardless of zoom level. + if event is InputEventMouseButton: + var mouse_button := event as InputEventMouseButton + if mouse_button.button_index == MOUSE_BUTTON_WHEEL_UP: + camera.translate_object_local(Vector3.FORWARD * 0.5) + directional_light.directional_shadow_max_distance = camera.position.length() + DIRECTIONAL_SHADOW_MAX_DISTANCE_MARGIN + elif mouse_button.button_index == MOUSE_BUTTON_WHEEL_DOWN: + camera.translate_object_local(Vector3.BACK * 0.5) + directional_light.directional_shadow_max_distance = camera.position.length() + DIRECTIONAL_SHADOW_MAX_DISTANCE_MARGIN diff --git a/3d/ragdoll_physics/ragdoll_physics.gd.uid b/3d/ragdoll_physics/ragdoll_physics.gd.uid new file mode 100644 index 00000000..7af75ba2 --- /dev/null +++ b/3d/ragdoll_physics/ragdoll_physics.gd.uid @@ -0,0 +1 @@ +uid://bahoxmy18mw7s diff --git a/3d/ragdoll_physics/ragdoll_physics.lmbake b/3d/ragdoll_physics/ragdoll_physics.lmbake new file mode 100644 index 00000000..b763f177 Binary files /dev/null and b/3d/ragdoll_physics/ragdoll_physics.lmbake differ diff --git a/3d/ragdoll_physics/ragdoll_physics.tscn b/3d/ragdoll_physics/ragdoll_physics.tscn new file mode 100644 index 00000000..b287eec0 --- /dev/null +++ b/3d/ragdoll_physics/ragdoll_physics.tscn @@ -0,0 +1,180 @@ +[gd_scene load_steps=12 format=4 uid="uid://dpkhlaxg5302f"] + +[ext_resource type="PackedScene" uid="uid://b3ro5p8ydfhgh" path="res://characters/mannequiny_ragdoll.tscn" id="1_5g564"] +[ext_resource type="Texture2D" uid="uid://cjdn0ljnq03m4" path="res://textures/checker.png" id="1_kpc8n"] +[ext_resource type="Script" uid="uid://bahoxmy18mw7s" path="res://ragdoll_physics.gd" id="1_sx4et"] +[ext_resource type="LightmapGIData" uid="uid://baogxrf01hfvy" path="res://ragdoll_physics.lmbake" id="4_1hr0i"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_kpc8n"] + +[sub_resource type="Sky" id="Sky_a202f"] +sky_material = SubResource("ProceduralSkyMaterial_kpc8n") + +[sub_resource type="Environment" id="Environment_noarx"] +background_mode = 2 +sky = SubResource("Sky_a202f") +tonemap_mode = 4 +tonemap_exposure = 1.3 +adjustment_enabled = true +adjustment_saturation = 1.3 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5g564"] +albedo_color = Color(0.4, 0.4, 0.4, 1) +albedo_texture = ExtResource("1_kpc8n") +texture_filter = 5 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_noarx"] +albedo_color = Color(0.9976135, 0.54485714, 0, 1) +albedo_texture = ExtResource("1_kpc8n") +texture_filter = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_1hr0i"] +lightmap_size_hint = Vector2i(778, 550) +_surfaces = [{ +"aabb": AABB(-8, -0.5, -8, 16, 1, 16), +"attribute_data": PackedByteArray("AACAPwAAAABLti8+tKW6PgAAAAAAAAAAbRIUPrSluj4AAIA/AACAP0u2Lz4LvHI/AACAPwAAAABfY5U+D1BuOgAAAAAAAAAAQTkVP8Wk1T6amRk/qjRPPo3Zsj6H34A+AACAPwAAgD/3NRY/EDV9PJqZGT9bfFA/o9ApPwbifj4AAAAAAACAP/c1Fj8GXhk/mpkZPwAAID/v0T0/BuJ+PgAAgD8AAAAA8IR+PyBqOj8AAAAAAAAAAAXlFD8gajo/AACAPwAAgD/whH4/aDBEPwAAYD8AAMA+6jlYP9MPtT0AAGA/AAAgP+/RPT/TD7U9AACAPwAAgD8XeSg6xKTVPpqZGT9ix2Y+G2uvPtrHhT4AAIA/AACAP5+DWD6zwKs+mpkZP2LHZj7V8gc/B6QRP2Zm5j5ix2Y+1/IHP2cNKD8AAAAAAACAP20SFD4LvHI/ZmbmPlt8UD+j0Ck/xUOsPmZm5j6qNE8+azXJPpLZoD4AAAAAAAAAANPAHz+LSWs/ZmbmPqo0Tz5QYQo/Zw0oPwAAwD4AACA/79E9Pyatwj5mZuY+AAAgP+/RPT/FQ6w+AACAPwAAgD/3NRY/Xz4vPwAAgD8AAAAA9zUWP6gEOT8AAAAAAAAAAOLVfz+oBDk/AACgPgAAID/v0T0/TFrVPgAAoD4AAMA+6jlYP0xa1T4AAIA/AAAAAOLVfz8QNX08AAAAAAAAgD8F5RQ/aDBEP2ZmBj8AAMA+6jlYP2TalT4AAMA+AADAPuo5WD8mrcI+AACAPwAAgD8gQxI/59gtPwAAAAAAAAAAC+N7P54SJD8AAAAAAACAPyBDEj+eEiQ/AAAAAAAAgD+fg1g+i0lrPwAAAAAAAAAA4tV/PwZeGT8AAAAAAACAP+LVfz9fPi8/AACAPwAAAAAL43s/59gtPw=="), +"format": 34359742519, +"index_count": 93, +"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgABgAJAAcACgALAAwABgANAA4ABgAOAAkAAwAFAA8ADwAFABAAEQASABMAAQAUAAIACAAHABUABAAWAAUAFwATABgACAAVABkAGQAVABoAFwARABMAGwAcAB0ACAAZAB4ACAAeAB8ABgAgAA0ADAALACEAIAAiAA0AIgAgACMAJAAlACYAFwAnABEACAAfACgAGwAdACkAJAAqACUAIAAoACMAKAAfACMA"), +"material": SubResource("StandardMaterial3D_5g564"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 43, +"vertex_data": PackedByteArray("AAAAwQAAAL8AAADBAAAAwQAAAD8AAADBAAAAwQAAAL8AAABBAAAAwQAAAL8AAADBAAAAwQAAAL8AAABBq2WYwAAAAL/OzMy/AAAAwQAAAD8AAADBtvigwAAAAD/OzMy/AAAAwQAAAD8AAABBAAAAwAAAAD/OzMy/AAAAwQAAAL8AAADBAAAAQQAAAL8AAADBAAAAwQAAAD8AAADBAAAAQAAAAD8AAMDAAAAAwAAAAD8AAMDAAAAAQQAAAL8AAADBT5yMwAAAAL/OzMy/AAAAQQAAAL8AAADBT5yMwAAAAL/OzMy/T5yMwAAAAL/NzEw/AAAAwQAAAD8AAABBtvigwAAAAD/NzEw/q2WYwAAAAL/NzEw/AAAAwQAAAL8AAABBq2WYwAAAAL/NzEw/AAAAwAAAAD8AAABAAAAAwAAAAD/NzEw/AAAAwQAAAL8AAABBAAAAwQAAAD8AAABBAAAAQQAAAD8AAABBAAAAwAAAAD8AAEBAAAAAQAAAAD8AAEBAAAAAQQAAAD8AAADBAAAAQQAAAD8AAADBAAAAQAAAAD/QzMy+AAAAQAAAAD8AAABAAAAAQQAAAL8AAADBAAAAQQAAAD8AAABBAAAAQQAAAD8AAADBAAAAQQAAAL8AAABBAAAAQQAAAD8AAABBAAAAQQAAAL8AAABBAAAAQQAAAL8AAABBAAAAgP9//n8AAACA/3/+fwAAAID/f/5/AIAAAP//AAAAgAAA//8AAACAAAD//wAAAID/////AAAAgP////8AAACA/////wAAAID/////AAD/////AAD/P/////8AAP8//////wAA/z8AgP////8AAACA/////wAAAIAAAP//AAAAgAAA//8AAACAAAD//wAAAIAAAP//AAAAgAAA//8AAAAAAID/f/5/AID/////AAAAgAAA//8AAACAAAD//wAAAIAAAP//AAAAgP////8AAACA/////wAA/3//fwAA/z//f/9/AAD/P/9//38AAP8/AID/////AAAAgP////8AAACA/////wAA/////wAA/z8AgP////8AAACA/////wAA//8AgP9//n///wCA/3/+f///AID/f/5/AIAAAP//AAAAgP////8AAP9//38AAP8///8AgP9//n8=") +}, { +"aabb": AABB(-5.125966, -0.5920825, -6, 7.125966, 7.3420825, 9), +"attribute_data": PackedByteArray("AACAPwAAAACfWyc/bMR/PwAAAAAAAAAAn1snP9wcez8AAIA/AACAP4i9ID9sxH8/AAAAAAAAgD+IvSA/3Bx7PwAAAAAAAIA/+QGZPmzEfz8AAIA/AACAP/kBmT4j/nU/AAAAAAAAAABKUM4+bMR/PwAAgD8AAAAAbsVEPj0KFz8AAAAAAAAAAG7FRD7ovTw/AACAPwAAgD8iqTM+PQoXPwAAAAAAAIA/IqkzPui9PD8AAIA/AAAAAEpQzj4j/nU/AAAAAAAAAAD/TA8/w9q3PgAAgD8AAIA/XZcSPwcipT4AAIA/AAAAAF2XEj/D2rc+AAAAAAAAgD//TA8/ByKlPgAAAAAAAAAAcT03P7vNcT9dnlA+AAAAP4hMLz8ApnQ/XZ5QPgAAAABxPTc/AKZ0PwAAgD8AAAA/iEwvP2zEfz+rqio/AACAP59bJz/cHHs/AACAPwAAgD+fWyc/bMR/PwAAAAAAAIA/n1snP7vNcT8AAIA/AACAPxd5KDpaxSQ+AAAAAAAAAAAzitY9AACAPgAAAAAAAIA/F3koOgAAgD4AAIA/AAAAAKWBPz751wg+AAAAAKuqKj8Jyqk9rH3DPQAAgD+rqio/pYE/Pqx9wz0AAIA/AACAP12XEj/wZnA+AACAPwAAAABdlxI/ByKlPquqKj8AAAAA/0wPPwcipT4AAAAAAAAAAES4CD8HIqU+AACAPwAAAAAzitY9WsUkPgAAAAAAAAAACcqpPfnXCD4AAAAAAACAP0S4CD/wZnA+lye0PpIkST9YLj8/AKZ0PwAAQD+SJEk/WC4/P2zEfz8AAEA/AAAAAFdMXD9sxH8/QF8/PiRJkj7NtVE/ggpwP0BfPz5u2zY/+9NBP4IKcD8AAAAAAAAAAFdMXD9j0mo/AACAPwAAgD4Zkno/4JVFPwAAAAAAAIA+8epfP+CVRT8AAIA/AACAPxmSej/qh1o/AAAAACRJkj7NtVE/Y9JqPwAAAACMGns/4vI3P2PSaj+XJ7Q+AACAP3E9Nz8ApnQ/AACAPgAAgD9xPTc/u81xPwAAAABu2zY/+9NBP2PSaj9rPBI9AACAP3E9Nz+i0Ws/cq6cPAAAgD/NIPY93wEKPyRJkj4AAIA/yCD2PaDwFz8kSZI+JB5cP9k92D2f8Bc/AACAP2s8Ej2OCFc/WsUkPgAAAABrPBI9jghXPwLKnT4AAIA/AACAPnvBUj9axSQ+JEmSPgAAAACanoM8nPAXPwAAgD8sOdk+UJtEP+bzHj8AAIA/amMTP1CbRD8eoBw/AAAAAGpjEz8n9Ck/HqAcPwAAAAAAAIA/8epfP+qHWj8AAEA/AAAAAF2XEj/wZnA+AAAAAAAAgD+4yAM/j8L1PAAAQD8AAIA/XZcSP5nC9TwAAAAAAACAPnvBUj8Cyp0+cq6cPAAAAACwnoM83QEKPwAAAAAsOdk+J/QpP+bzHj8AAIA+AAAAAES4CD/wZnA+azwSPQAAAAAqfQQ/8GZwPgAAAAAkSZI+uMgDPzF+ND4AAAAAcq6cPLjIAz9GZGw+1x8XP1M0Rj+pc8c9d4ciPwAAGD9B00Q/P0bGPR7uIj8AABQ/AM5HPKyegzwyGSE/AAAEPwhFWT9zutc9gMUZPwAACD+zeFc/djHWPWyaGz8AAAQ/AM5HPJ6egzyFxRk/AAAMP2d+VD+sptM9WG8dPwAACD8Azkc8oZ6DPHCaGz/gjwA/VslZP2Mr2D13Mhg/AAAAPwDORzyanoM8nPAXPwAAAD/43lk/2T3YPZ/wFz8AABA/fV1QP1sg0D1FRB8/NTgTP9klTD+mhsw9s70gPwAAED8Azkc8pZ6DPEVEHz8AABQ/IiBLPzenyz0wGSE/d0wPP8wWUT+OvtA9DfIePwAADD8Azkc8qJ6DPFxvHT8AAIA/AAAAAFdMXD9j0mo/JR4cP8zMzD7NtVE/IktcPwAAgD/MzMw+zbVRP2PSaj8AAAA/AAAAPykQTz8iNFg/JR4cP7l20j7XalE/IktcP7n4GD+hdQI/Ds9OP/vVWz8kHhw/YD8DPzO6Tj8iS1w/0osMP8qdAD/Z/04/TQdaPwAAAAAAAAAAV0xcP+CVRT8lHhw/DerRPhxyUT8iS1w/AACAPwAAAAAZkno/6odaPwAAAAAAAAAA8epfP+qHWj8AAIA/AACAPxmSej9sxH8/oQMbP/xSPz/4k8E9eE8kPwAAGD8Azkc8rJ6DPB/uIj8AACQ/7Jw+P5f4wD3lbCg/AAAoP8t0SD/iX8k90UEqPwAAKD8Azkc8u56DPNNBKj8AACw/uvdSPzRZ0j2+Fiw/AAAsPwDORzy+noM8wBYsPwAAMD/HC14/bc7bPanrLT8AADA/AM5HPMKegzyr6y0/mvc2P8jgfD/oIPY9bhwxPwAAOD/I4Hw/5iD2PYGVMT8AADg/As95PxGC8z2BlTE/AAA8P8jgfD/lIPY9bWozPya3OD/0o3c/MqjxPWDpMT8AADQ/qZVpPz6o5T2VwC8/AAA4P+d4dT9Wzu89gZUxPwAAOD8Azkc8wp6DPIKVMT8AADQ/AM5HPMKegzyZwC8/AABAP8jgfD/mIPY9WD81PwAAPD8Azkc8wp6DPG1qMz8AAAAAAAAAPykQTz/glUU/AACAPwAAgD/iiDA/gVdWPwAAAD8AAAAACzBLP+tsaT8AAAA/AACAP+KIMD/rbGk/AACAP8jgfD/mIPY9WD81PwAAAD/I4Hw/5SD2PajpRz8AAIA/AM5HPL6egzxYPzU/AACAPwAAgD+4yAM/j8L1PMvicD/sWnE+3DoCPxQxET6YbWo/2zmOPt2QAT9k4wo+AvJiP5hnoj7jywA/SPwEPgV9ej8woBQ+oTcDPyrBHj6vQXY/FO9DPjzIAj/M1Rc+X4p9P7zFxz35hwM/IuIlPjZifz8ovUg9frgDPx0nLT4AAIA/AAAAALjIAz8xfjQ+eoJaP/IEtT6o2/8+mRT/Pc0zUT8D5MU+pfH9Prc19T3uHEc/L9vUPnbe+z5JdOw9ulY8P5jF4T45p/k+4OXkPcb7MD9eg+w+ZVH3PiCd3j0LKCU/C/r0Prji9D6Aqdk9uPgYP74U+z43YfI+PRfWPdGLDD9txP4+DdPvPibv0z3///8+AAAAP4U+7T6ENtM9AAAAAAAAgD+Z69I+mcL1PAAAHD9khj0/wArAPQrDJD/f4x4/HpQ3PyL3uj3aFSY/AAAcPwDORzysnoM8CsMkPzjxHz/yaTU/Bx65PTGRJj8AACQ/AM5HPLSegzzlbCg/FfciP4lDPD8c9749kfMnPwAAID9ciDU//De5PfaXJj8AACA/AM5HPLCegzz5lyY/AABAPwDORzy+noM8WD81PwAAAAAAAIA/8epfP2zEfz8AAIA/AAAAAAswSz+BV1Y/AAAAAAAAAD+Z69I+gjbTPQAAAD8Azkc8u56DPKjpRz8AAIA/AAAAAH0wLz6pzpY96TppPwAAAADcPTo+62ypPQAAgD+JKII9WWUuPutsqT0AAIA/AAAAAN6jmz4Cyp0+77pvPwAAAADeo5s+ciKZPu+6bz8AAIA/C+O7PnIimT4AAIA/AAAAABpMCj8HpBE/AAAAAAAAAAAaTAo/Zw0oPwAAgD+6KLY91fIHPwekET8AAIA/AACAPwvjuz4Cyp0+AAAAALootj3X8gc/Zw0oPwAAAAAAAAAAbsVEPuQpAT8AAAAAAACAP27FRD51ttQ+HCx8PgAAAADq7Dg+5CkBPxwsfD4AAIA/6uw4PnW21D4AAIA/AACAP6Gc6j7M530/AACAP/n0QD+hnOo+BC56P7BUiT7vZmw+qqYIP+NEcj8AAIA/AACAP5ZsHz8K12M/AAAAAOWFQz4tjC8/4JVFPwAAAAAAAIA/LYwvPwrXYz/lhUM+AACAP7CxCj/M530/AACAP+WFQz6WbB8/4JVFPwAAAD/lhUM+YXwnP+CVRT8AAIA/AACAP9v54j70Xr4+AACAP++6bz9tX+M+hAbDPuk6aT8AAIA/K3PdPoQGwz4AAIA/AAAAAMsPCD9GF90+5YVDPgAAAADYWOU+RhfdPgAAgD8cLHw+yw8IP7Wj1T6wVIk+ROZEP+Ru6T500cU+AAAAAAAAAAA6iL07dpvjPgAAgD8AAIA/521FPWWcCD8AAIA/AAAAAORtRT12m+M+AAAAAAAAgD86iL07ZZwIPwAAgD8AAIA/VpnrPaKmXz/naBQ/a5AdP3qcmT15PGk/AAAAAAAAgD9Wmes9S3V2PwAAgD8AAIA/VpnrPaKmXz9joR0/ZZsaP/Qllz0tamg/52gUP2uQHT96nJk9eTxpP6JnCj+XYh8/wiCbPaggaj8AAAA///8fP9yjmz33DWs/AAAAAAAAgD9Wmes9S3V2PwAAAD///x8/3KObPfcNaz+8MOs+l2IfP8Igmz1F+2s/AAAAAAAAgD9Wmes9S3V2P+doFD9rkB0/epyZPXk8aT+iZwo/l2IfP8Igmz2oIGo/AAAAAAAAgD9Wmes9S3V2P7ww6z6XYh8/wiCbPUX7az8xLtc+a5AdP3qcmT1032w/MS7XPmuQHT96nJk9dN9sPzu9xD5lmxo/9SWXPcGxbT8AAIA/AAAAALjIAz8FeQo/AAAAAAAAAAC4yAM/tlTnPgAAAABgaBg/T+gTP7ZU5z4AAIA/AACAP+EiTz9axSQ+AACAPwAAAAATR0Q/WsUkPntwnD4JUoc+xSVHP6xZiD4/L88+AAAAABNHRD8EpoA+AACAP97z8jx/l2U8oqZfPwlGMT/xPgw/0S+LPSuqZj/e8/I8AACAP+EiTz8Cyp0+AACAP2BoGD9P6BM/BXkKPwAAgD8AAAAA4LytPBA1fTwAAAAAAAAAAD1UAD4QNX08AACAPwAAgD/ivK086oeaPXtwnD77Vjw/MYK/PacbdD0/L88+AACAPydgqj3qh5o9AACAPwAAgD9Wmes9oqZfP122JT+eoBY/aNWTPdmxZz9joR0/ZZsaP/Qllz0tamg/VFgsPzvHET9zy489kxpnP122JT+eoBY/aNWTPdmxZz9UWCw/O8cRP3PLjz2TGmc/O73EPmWbGj/1JZc9wbFtP0aTtD6doBY/aNWTPRRqbj9WT6c+OscRP3LLjz1aAW8/Vk+nPjrHET9yy489WgFvP+5znT7wPgw/0S+LPcNxbz/uc50+8D4MP9Eviz3DcW8/BmKXPi0+Bj/XL4Y9+7ZvPwZilz4tPgY/1y+GPfu2bz9WVZU+/v//PrX8gD1Zzm8/VlWVPv7//z61/IA9Wc5vPwZilz6ig/M+JJN3Pfu2bz8AAAAAAACAP1aZ6z1LdXY/BmKXPqKD8z4kk3c9+7ZvP+5znT4bguc+MZNtPcNxbz/uc50+G4LnPjGTbT3DcW8/AAAAAAAAAACrADM8S3V2PztHoz6i7lg/ojpPP266sz4AAAAAAACAP6pmVD9zB6g+f77BPqcLXz+VQ04/xuWxPkVIpz1JBkw/ihNTP/GXtz4geiY+kaFOP63DUT8f0LY+RUinPUkGTD+KE1M/8Ze3PqMHPDx/Rks/AzdUP2DRtz6jBzw8f0ZLPwM3VD9g0bc+AAAAACQnSz+qZlQ/w9q3PgAAAAAAAIA/qmZUP3MHqD6ltXc+kfJSP1J6UD84hbU+wl2cPgXiVz+uck8/3gq0PsJdnD4F4lc/rnJPP94KtD4AAAAAAACAP6pmVD9zB6g+O0ejPqLuWD+iOk8/brqzPgAAID/AzMw8/0xPPnzDfz8AABg/AACAP9zmTD7J0mo/AAAYP8DMzDza5kw+4sN/PwAAID/AzMw8VM2oPkUyzj4AACg/wMzMPDcAqj5FMs4+AAAgPwAAgD9Uzag+M06kPgAAED/AzMw8VCpKPi3Efz8AAAg/AACAP1gyRz5E02o/AAAIP8DMzDxYMkc+XcR/PwAAED8AAIA/VCpKPhXTaj8AAAA/AACAPxkcRD5U02o/AAAAP8DMzDwZHEQ+bMR/PwAA8D4AAIA/+AVBPkTTaj8AAPA+wMzMPPgFQT5bxH8/AADgPgAAgD9QDj4+FNNqPwAA4D7AzMw8UA4+Pi3Efz8AANA+AACAP1RSOz7J0mo/AADQPsDMzDxUUjs+4MN/PwAAwD4AAIA/6uw4PmPSaj8AAMA+wMzMPOrsOD56w38/AADAPsDMzDw2Vhk+jC66PAAAsD4AAIA/x5BUPkxQ1TwAALA+wMzMPDZWGT5QUNU8AAAgPwAAgD//TE8+ZNJqPwAAKD8AAIA/NwCqPjNOpD4AADA/wMzMPFheqz5EMs4+AAAwPwAAgD9YXqs+M06kPgAAOD/AzMw8QNqsPkUyzj4AADg/AACAP0DarD4zTqQ+AABAP8DMzDxZZa4+RDLOPgAAQD8AAIA/WWWuPjJOpD4AAEg/wMzMPHHwrz5FMs4+AABIPwAAgD9x8K8+Mk6kPgAAwD4AAIA/x5BUPowuujwAAKA+AACAP8eQVD6kRPQ8AACgPsDMzDw2Vhk+pET0PAAAkD4AAIA/x5BUPoHtCj0AAJA+wMzMPDZWGT6F7Qo9AACAPgAAgD/HkFQ+h2QcPQAAgD7AzMw8NlYZPopkHD0AAGA+AACAP8eQVD6O2y09AABgPsDMzDw2Vhk+kdstPQAAQD4AAIA/x5BUPsKmPj0Q5Rs9AAAAAMv9Sj+ucQI+IGgdPAAAAADO20o/n1X9PQAAAD8AAAA/SlBOP9B7+T1Ak6w9AAAAAM7bSj+fVf09EOUbPQAAAADO20o//KH1PQAAAD8AAAA/SlBOP9B7+T0Y9hU+AAAAAM7bSj/8ofU9QJOsPQAAAADL/Uo/PxTuPQAAAD8AAAA/SlBOP9B7+T1GjGM+AAAAAMv9Sj8/FO49GPYVPgAAAAB4QEs/s/bmPQAAAD8AAAA/SlBOP9B7+T0AAAAAAAAAAMv9Sj+ucQI+AAAAPwAAAD9KUE4/0Hv5PSBoHTwAAAAAeEBLP3UABj4gaB08AAAAAHhASz91AAY+AAAAPwAAAD9KUE4/0Hv5PQAAAAAAAAAARKFLPyI0CT4Q5Rs9AAAAAEShSz8iNAk+AAAAPwAAAD9KUE4/0Hv5PSBoHTwAAAAAdhxMPzTtCz44k6w9AAAAAHYcTD807Qs+AAAAPwAAAD9KUE4/0Hv5PRDlGz0AAAAAVK1MP+UQDj6ODs4+AAAAAEShSz9aj+A9cwiePgAAAAB2HEw/NB3bPQAAAD8AAAA/SlBOP9B7+T0AAAA/AAAAAHYcTD80Hds9jg7OPgAAAABUrUw/1NXWPQAAAD8AAAA/SlBOP9B7+T25+Bg/AAAAAFStTD/U1dY9AAAAPwAAAABLTk0/UePTPQAAAD8AAAA/SlBOP9B7+T3H+zA/AAAAAEtOTT9R49M9ufgYPwAAAAAs+U0/rWLSPQAAAD8AAAA/SlBOP9B7+T1zCJ4+AAAAAHhASz+z9uY9RoxjPgAAAABEoUs/Wo/gPQAAAD8AAAA/SlBOP9B7+T0AAFA/wMzMPFtssT5FMs4+AABQPwAAgD9abLE+Mk6kPgAAWD/AzMw8esqyPkUyzj4AAFg/AACAP3rKsj4yTqQ+AABgP8DMzDxe/bM+RDLOPgAAYD8AAIA/Xv2zPjJOpD4a9hU+AAAAAFStTD/lEA4+AAAAPwAAAD9KUE4/0Hv5PTiTrD0AAAAAS05NPyaKDz4AAAA/AAAAP0pQTj/Qe/k9GvYVPgAAAAAs+U0/eUoQPk6MYz4AAAAAS05NPyaKDz4AAAA/AAAAP0pQTj/Qe/k9ToxjPgAAAABnp04/eUoQPnYInj4AAAAALPlNP3lKED4AAAA/AAAAP0pQTj/Qe/k9dgiePgAAAABIUk8/J4oPPpAOzj4AAAAAZ6dOP3lKED4AAAA/AAAAP0pQTj/Qe/k9kA7OPgAAAABA808/5hAOPv///z4AAAAASFJPPyeKDz4AAAA/AAAAP0pQTj/Qe/k9////PgAAAAAdhFA/Ne0LPrj4GD8AAAAAQPNPP+YQDj4AAAA/AAAAP0pQTj/Qe/k9uPgYPwAAAABQ/1A/IjQJPsX7MD8AAAAAHYRQPzXtCz4AAEA+wMzMPDZWGT7Cpj49AAAgPgAAgD/HkFQ+7yBOPQAAAD4AAIA/yJBUPsuxWz0AACA+wMzMPDZWGT7sIE49AAAAPwAAAD9KUE4/0Hv5PewcRz8AAAAALPlNP61i0j3H+zA/AAAAAGenTj+tYtI9AAAAPwAAAD9KUE4/0Hv5PXiCWj8AAAAAZ6dOP61i0j3sHEc/AAAAAEhSTz9R49M9AAAAPwAAAD9KUE4/0Hv5PZhtaj8AAAAASFJPP1Hj0z14glo/AAAAAEDzTz/U1dY9AAAAPwAAAD9KUE4/0Hv5PbBBdj8AAAAAQPNPP9TV1j2YbWo/AAAAAB2EUD83Hds9AAAAPwAAAD9KUE4/0Hv5PZhtaj8AAAAAxcRRPwCi9T2vQXY/AAAAAMXEUT+hVf09AAAAPwAAAD9KUE4/0Hv5PWCKfT8AAAAAHYRQPzcd2z2wQXY/AAAAAFD/UD9aj+A9AAAAPwAAAD9KUE4/0Hv5PQAAgD8AAAAAUP9QP1qP4D1gin0/AAAAABxgUT+29uY9AAAAPwAAAD9KUE4/0Hv5PV+KfT8AAAAAHGBRP7b25j0AAIA/AAAAAMiiUT9DFO49AAAAPwAAAD9KUE4/0Hv5Pa9Bdj8AAAAAyKJRP0MU7j1fin0/AAAAAMXEUT8AovU9AAAAPwAAAD9KUE4/0Hv5PcX7MD8AAAAAHGBRP3UABj7tHEc/AAAAAFD/UD8iNAk+AAAAPwAAAD9KUE4/0Hv5Pe0cRz8AAAAAyKJRP7BxAj56glo/AAAAABxgUT91AAY+AAAAPwAAAD9KUE4/0Hv5PXqCWj8AAAAAxcRRP6FV/T2YbWo/AAAAAMiiUT+wcQI+9bx7P9/z8jx3l2U81gdgP/1OND+ig/M+JJN3PfNkZj+7R3s/4fPyPH+XZTxIEmA/AABgPwAAgD8d+LU+s8CrPgAAYD/AzMw8EZTTPrPAqz4AAGg/wMzMPIKT0z4Rc60+AABoPwAAgD+N97U+EXOtPgAAcD/AzMw8FpPTPodirz4AAHA/AACAPyL3tT6HYq8+AAB4P8DMzDzUktM+C3yxPgAAeD8AAIA/4Pa1Pgt8sT4AAHg/wMzMPNSS0z4LfLE+AAAAAMDMzDy+ktM+96qzPgAAAAAAAIA/yfa1Pveqsz4AAAAAwMzMPL6S0z73qrM+AAAAPcDMzDzUktM+zdm1PgAAAD0AAIA/4Pa1Ps3ZtT4AAIA9wMzMPBeT0z4V87c+AAAAPsDMzDw2Vhk+zrFbPQAAwD0AAIA/jfe1PiriuT4AAMA9wMzMPIKT0z4q4rk+AAAAPsDMzDwSlNM+BJS7PgAAgD0AAIA/I/e1PhXztz4JRjE/8T4MP9Eviz0rqmY/9bx7P9/z8jx3l2U81gdgP/1OND8tPgY/1y+GPfNkZj/9TjQ/LT4GP9cvhj3zZGY/9bx7P9/z8jx3l2U81gdgP1VVNT/+//8+tfyAPZNNZj9VVTU//v//PrX8gD2TTWY//U40P6KD8z4kk3c982RmP7tHez/h8/I8f5dlPEgSYD8JRjE/G4LnPjGTbT0rqmY/CUYxPxuC5z4xk209K6pmP7tHez/h8/I8f5dlPEgSYD9VWCw/iHHcPuxbZD2TGmc/u0d7P+Hz8jx/l2U8SBJgP162JT/CvtI+A0hcPdmxZz9VWCw/iHHcPuxbZD2TGmc/Y6EdPzLJyj7splU9LWpoP162JT/CvtI+A0hcPdmxZz/naBQ/Jt/EPty5UD15PGk/Y6EdPzLJyj7splU9LWpoP6JnCj/OOsE+ULFNPaggaj8AAAA//v+/PhurTD33DWs/omcKP846wT5QsU09qCBqP7ww6z7OOsE+TbFNPUX7az8AAAA//v+/PhurTD33DWs/MS7XPibfxD7buVA9dN9sP7ww6z7OOsE+TbFNPUX7az+1608/4fPyPHuXZTww72M/MS7XPibfxD7buVA9dN9sP+5znT4bguc+MZNtPcNxbz9WT6c+iHHcPu9bZD1aAW8/AAAAAAAAAACrADM8S3V2P1ZPpz6Icdw+71tkPVoBbz9Gk7Q+wb7SPgNIXD0Uam4/AAAAAAAAAACrADM8S3V2P0aTtD7BvtI+A0hcPRRqbj87vcQ+MsnKPu2mVT3BsW0/MS7XPibfxD7buVA9dN9sPzu9xD4yyco+7aZVPcGxbT8AAHg/AACAP+D2tT4LfLE+AAAAAAAAgD/J9rU+96qzPgAAAD4AAIA/Hvi1PgSUuz61608/4fPyPHuXZTww72M/dS7lPjSpZz85JE0/TlGvPhkhyT4Gh2A/sgdOPyt0sT4AAAAAAACAP6pmVD9zB6g+f77BPqcLXz+VQ04/xuWxPhkhyT4Gh2A/sgdOPyt0sT4ZC+0+AalpP3jkTD8LuK4+zXBcP67oJD8zNYE9hvvNPnmFZT+GRSE/u0B8Pe+kzj4AAAAAAAAAAJ8CzD1H/Os+MWQ2P1JhMT+AHo49qrbLPljCDT+pJDw/LeibPWDByT4AAIA/IKAWP2VIaj3JlNA+bop/P3TZFj8xmGo9W4rQPgAAgD8AAAAAZEhqPUf86z4ZC+0+AalpP3jkTD8LuK4+YzEDP2OicT/2Fkw/vFSsPmMxAz9jonE/9hZMP7xUrD5UVgc/DD50P8HTSz/NjKs+VFYHPww+dD/B00s/zYyrPpeLEj+x3Hw/+x1LPwL4qD6XixI/sdx8P/sdSz8C+Kg+IKAWPwAAgD/O20o/cweoPm5jUz4AAIA/O6TUPeqHmj0AAAAAAACAPz1UAD7qh5o9GN/FPiMYRT8ycKo9dyDIPgpVWT60JUw/x5K5PfnXxj4UGQY98ztRP5MqyT0L68U+tetPP+Hz8jx7l2U8MO9jP/M7UT+hJUk82fFHPDzRYz8AAAAAAAAAAKsAMzxLdXY/8ztRP6ElSTzZ8Uc8PNFjP5rIUT8AAAAAqAAzPLXEYz8AAAAAmshRP6ICzD100cU+"), +"format": 34359742519, +"index_count": 927, +"index_data": PackedByteArray("AAABAAIAAwACAAEABAAFAAYABwAIAAkACAAKAAkABgAFAAsADAANAA4ADAAPAA0AEAARABIAEwAUABUAFAATABYAFgATABEAEAAWABEAFwAYABkAGgAbABwAHQAeAB8AHQAfACAAGAAXACEAGgAiABsAHQAgACMAJAAlACYAJwAoACYAJwAmACkAKgArACwALQAnACkAJAAmACgAJAAuAC8ALgAwAC8AJAAoAC4ALgAoADEAMgAwAC4AMwA0ADUANgA3ADgAMwA1ADkAOgA7ADwALAArAD0APgA/AEAANwBBADgAMwA5AEIAOgA8AEMARAA/AD4ARQA/AEQARQBGAD8ARQBHAEYASABJAEoASwBMAE0ATgBPAEwASwBNAFAAUABRAFIAUwBUAFUAVABWAFUAVwBTAFgATgBXAFgASABKAFYAWQBaAFsAWQBcAFoAXQBeAF8AXQBgAF4AWQBhAFwAWgBcAGIAYgBcAF0AXQBcAGAAYwBkAGUASQBmAGcAaABpAGoAaQBrAGwAbQBuAGsAbwBwAHEAcAByAHEAcQByAHMAdAB1AHYAcwByAHYAdQBzAHYAbQB0AHcAcgB4AHkAXABhAHoAewB8AH0AfgB/AIAAgQCCAIMAgQCDAIQASQBnAEoATgBYAE8ATABPAE0AUABNAFEAVgBKAFUAUwBVAFgAgQCFAIYAgQCHAIUAgQCIAIcAgQCJAIgAgQCGAIIAgQCKAIsAgQCEAIoAgQCLAIwAgQCNAI4AgQCMAI0AgQCOAI8AgQCPAJAAgQCQAJEAgQCRAJIAgQCSAJMAZgCUAGcAlACVAJYAlQCXAJYAaACYAJkAlwCaAJsAmgCZAJsAaABqAJgAaQBsAGoAawBuAGwAlACWAGcAlwCbAJYAmQCYAJsAbQB3AG4AdAB2AHcAcgB5AHYAeACcAHkAZQBkAJ0AewCeAHwAkgCfAJMAfwCgAIAAoQCiAKMApAClAKYApwCoAKkApACmAKoAqACrAKkArACtAK4ArQCvAK4AsACxALIAswC0ALUAsACyALYAswC3ALgAswC4ALQAuQC6ALsAvAC9AL4AvgC9AL8AwADBAMIAwADDAMEAxADFAMYAxwDIAMkAxgDKAMsAzADNAM4AzwDQANEA0gDTANQAzwDVANYA1wDYANkA2gDbANwA2wDdANwAxADeAN8A2gDcAOAA1wDZAOEA4gDjAOQA5ADlAOYA5wDoAOkAxwDqAOsAxADfAOwAzADtAO4AzADuAO8AxgDwAPEAzADyAPMA0gD0APUAxgD2APcA+AD5APoAzwD7APwA5ADjAOUA/QD+AP8AAAH+AAEBAgEDAf4ABAEFAQYBBwH+AAgBBwEBAf4ACQEKAQsBDAENAQ4BDwEQAREBEgETARQBEgEOARUBFAEWARcBFwEYARkBGQEaARsBGwEcAR0BHQEeAR8BIAEhASIBDAEjAQ0BDgENARUBEgEVARMBFAETARYBFwEWARgBGQEYARoBEAEkAREBJQEmASQBJwEoASYBKQEqASgBKwEsASoBGwEaARwBHQEcAR4BIAEtASEBIgEhAS4BLwEuATABMQEwATIBMwEyATQBNQE0ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfASwBXwFgAWEBYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQE2AXoBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaAB3wDeAKEBogGhAaMBEAElASQBJQEnASYBJwEpASgBKQErASoBKwFeASwBIgEuAS8BLwEwATEBMQEyATMBMwE0ATUBXgFgAV8BYQFgAWIBpAGlAaYBpwGmAagBqQGoAaoBqwGsAa0BrgGvAbABsQGwAbIBeQF6AXwBNQE2AXkBewGzAXwBtAG1AbYBtwGyAbUBuAG5AboBuwG8Ab0BvgGhAaIBvwHAAcEBwgHDAcQBxQHGAccBwwHIAckBwAHKAcsBwAHMAcoBxQHNAc4BowHPAdABwAHRAdIBowHTAdQB1QHWAdcB2AHZAdoB2wHcAdcB3QH8AN4BpAGmAacBpwGoAakBqQGqAd8BqwGtAeABsQGuAbABtwGxAbIBtAG2AeEBtwG1AbQB3QHiAfwA4wHkAeUB5gEGAecB4wHlAegB6QHqAesB6QHrAewB7AHrAe0B7gHrAe8B7wHrAeoB7gHwAesB8QH+APIB8wEKAfQB9QEGAfYB9wH+APgB4wD5AeUA+gH5AeMA+wHtAesB+wHrAfwB/AHrAf0B/gH/AQACAQICAtoB/QHrAQMC"), +"material": SubResource("StandardMaterial3D_noarx"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 516, +"vertex_data": PackedByteArray("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/3/+f///AID/f/5///8AgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwCA/////wAAAID/////AAAAgP////8AAP9//38AAP8//3//fwAA/z//f/9/AAD/P///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5/AID/////AAD/f/9/AAD/P///AID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5//////wAA/z//////AAD/P/////8AAP8/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AID/////AAAAgP////8AAACA/////wAA/3//fwAA/z//f/9/AAD/P/9//38AAP8/AID/////AAD/f/+/AAD/v/9//78AAP+//3//vwAA/7//////AAD/P///AID/f/5///8AgP9//n///wCA/3/+f/9//38AAP8/AID/////AAD/f/+/AAD/v///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5//38H0AfQAAD/f9LN0s0AAP9/tNG00QAA/3+E9IX0AAD/f0rsS+wAAP9/hPSF9AAA/3+Q45HjAAD/f0LpQ+kAAP9/APoB+gAA/38A+gH6AAD/fwD6AfoAAP9/vtu/2wAA/3/l1ubWAAD/f67Yr9gAAP9/j9SP1AAA/39E3kXeAAD/fzXgNeAAAAAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5/AAAAgP9//n8AAACA/3/+fwAAAID/f/5//////wAA/z//////AAD/P/////8AAP8//399yX7JAAD/fxnLGssAAP9/oriiuAAA/38ssi2yAAD/f1q0W7QAAP9/bqtuqwAA/3+4rbitAAD/f0CkQaQAAP9/taa1pgAA/3+jmaOZAAD/fzuVO5UAAP9/s5O0kwAA/3+Ojo2OAAD/f4iQiZAAAP9/bZxtnAAA/387lT2VAAD/f1GUUZQAAP9/H58gnwAA/3/9hf2FAAD/f7KJsokAAAAAAID/f/5/AID/////AAAAgP////8AAACA/////wAA/3//f/9/AID/f/9//38AgP9//3//fwCA//8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n///wCA/3/+f///AID/f/5///8AgP9//n//f1zHXMcAAP9/JMMkwwAA/3+3xLfEAAD/fyTDJcMAAP9/wLrAugAA/3/avNq8AAD/f/+/AMAAAP9//7//vwAA/3/9hf2FAAD/////AAD/PwCA/////wAA//8AgP9//n//f/9//38AgP////8MG4ZN/////wwbhk3/////DBuGTQwb8mQMm3hyDBvyZAybeHIMG/JkDJt4cgybDBv//wAADJsMG///AAAMmwwb//8AAAwb8mQMm3hyDJsMG///AAAMG/JkDJt4cgwb8mQMm3hyDBvyZAybeHIMG/JkDJt4cv////8MG4ZN/////wwbhk3/////DBuGTfJk8uT//wAA8mTy5P//AADyZPLk//8AAP////8MG4ZN8mTy5P//AADyZPLk//8AAP9//38MG4ZN/3//fwwbhk3/f/9/DBuGTf9//38MG4ZN/3//fwwbhk3/f/9/DBuGTf9//38MG4ZN/z//P/+//1//P/8//7//X/8//z//v/9f/z//P/+//1//P/+///8AAP8//7///wAA/z//v///AAD/P/+/AAABAP8//78AAAEA/z//vwAAAQD/P/+///8AAP8//7///wAA/z//v/7//n//P/+//v/+f/8//7/+//5//z//v/7/AAD/P/+//v8AAP8//7/+/wAA/z//vwAAAQD/P/+/AAABAP8//78AAAEA/z//v/7/AAD/P/+//v8AAP+//z///wAA/7//P///AAD/v/8///8AAP//////P/9f//////8//1///////z//X///////P/9f/z//v///AAD/P/+///8AAP//////P/9f/7//P///AAD/f/9//z//X/9//3//P/9f/3//f/8//1//f/9//z//X/9//3//P/9f/z//v/7/AAD/P/+//v8AAP8//7/+/wAA/z//vwAAAQD/P/+/AAABAP8//7///wAA/z//v/7//n//P/+//v/+f/8//7/+//5//z//v///AAD/P/+///8AAP8//7/+//5//z//v/7//n//P/+/AAABAP8//78AAAEA/z//v///AAD/P/+///8AAP4//7/9//5//j//v/3//n/+P/+//f/+f/8//7/+/wAA/z//v/7/AAD/v/8///8AAP+//z///wAA/7//P///AAD/v/8//v8AAP+//z8AAAEA/7//P///AAD/v/8///8AAP+//z8AAAEA/7//PwAAAQD/v/8/AAABAP+//z/+/wAA/7//P/7/AAD/v/8//v/+f/+//z/+//5//7//P/7//n+AJoAmiNvD7XkqeSrH3+PvdCx0LA3iBvGAJoAmiNvD7TYgNiCF1cLqdiR2JH7ZvuyMMowyxOnh9O827zYe8A74TjlOOePz8fl3MHcw/+Z/84w+jD4o/ZP+c0FzQdYCaoGvRq9GGgwNhg9JD0ngD++Hck1yTTkWHIuHT4dP/xh/jIlTiVPxHfiOhlWGVTYgG5B+WX5ZdiQ6kohbiFuAJj+TiFuIW4AmP5PIX8hfeSo8lQ5iDmJzLDmWdiR2JH7ZvuzxHfEditPE6f8Y/xiHz8PnORY5FnLNuObgD+APD8mH5BoMGgyvxlfj1gLWAnLBuOAo/Sj9i75F3+Pz4/NPuafcHvAe8O+2d9t+WX5ZdiQ6kgBnAGd3MDuYxWnFaYwyRZkfcB9w7zZ3m+Nz43NOOaecKH0ofYw+RZ/WgtaCc0G5oBuMG4yuRlej34/fjw9Jh6Q5ljmWck24pv8//7/IbJtJ/z//v8hsm0n/P/+/yGybSf8//79yZMZN/z//v3Jkxk3/P/+/cmTGTf8//7+eXTBR/z//v55dMFH/P/+/nl0wUf8//7+AVz9U/z//v4BXP1T/P/+/gFc/VP8//78seOlD/z//vyx46UP/P/+/LHjpQ/8//7/TB+mD/z//v9MH6YP/P/+/0wfpg/8//781E5qJ/z//vzUTmon/P/+/NROaif8//7+NG8aN/z//v40bxo3/P/+/jRvGjf8//79NS1da/z//v01LV1r/P/+/TUtXWv8//78qROpd/z//vypE6l3/P/+/KkTqXf8//7/VOxRi/z//v9U7FGL/P/+/1TsUYv8//7+yNKZl/z//v7I0pmX/P/+/sjSmZf8//7+NUThX/z//v41ROFf/P/+/jVE4V8TpxOmMskXZ/+b/5newO9gN4g3idKw51sffx994qjvViNuI24CmP9N+2X7ZdqQ60v8//79gIi+R/z//v2AiL5H/P/+/YCIvkf8//79/KD+U/z//v38oP5T/P/+/fyg/lP8//79xLjiX/z//v3EuOJf/P/+/cS44l/8//7+yNFia/z//v7I0WJr/P/+/sjRYmv8//7/VO+md/z//v9U76Z3/P/+/1Tvpnf8//78qRBSi/z//vypEFKL/P/+/KkQUov8//79NS6al/z//v01LpqX/P/+/TUumpf6Y/piHT8On8J3wnYpTxKl2pHakflm+rDagNqCFVcKq/z//v3Euxmj/P/+/cS7GaP8//79xLsZo/z//v38ov2v/P/+/fyi/a/8//79/KL9r/z//v2Aiz27/P/+/YCLPbv8//79gIs9u/z//v40bOHL/P/+/jRs4cv8//7+NGzhy/z//v3JkOLL/P/+/cmQ4sv8//79yZDiy/z//vzUTY3b/P/+/NRNjdv8//781E2N2/z//v9IHFXz/P/+/0gcVfP8//7/SBxV8/z//vyx4Fbz/P/+/LHgVvP8//78seBW8/z//v8hsY7b/P/+/yGxjtv8//7/IbGO2/z//v41Rxqj/P/+/jVHGqP8//7+NUcao/z//v4BXv6v/P/+/gFe/q/8//7+AV7+r/z//v55dzq7/P/+/nl3Orv8//7+eXc6u/z//v///AAD/P/+///8AAP8//7///wAAftl+2XakOtKI24jbgKY/04XVhdU2oBrQitOK0/Cd986Hz4fP/ph+zHLNcs05lhzLD8kPyd+P78evxq/GGgzxeQ/JD8ngDw94csFywdYCk36Lvou+KH2TvnLBcsHWgmrBT7lPueNz8bnvtu+2H3APuIyyjLLFaeK0gKaApohbw614qniqyF/jr3SsdKwOYgaxgKaApohbw613sHewAGd/s/8//7/+/wAA/z//v/7/AAD/P/+//v8AAP8//78AAAEA/z//vwAAAQD/P/+/AAABAP8//7///wAA/z//vwAAAQD/P/+/AAABAP8//78AAAEA/z//v/7/AAD/P/+//v8AAP8//7/+/wAA/z//v/7//n//P/+//v/+f/8//7/+//5//z//v/7/AAD/P/+//v8AAP8//7///wAA/z//vwAAAQD/P/+//v8AAP8//7/+//5//z//v/7//n//P/+///8AAP8//7///wAA/z//vwAAAQD/P/+/AAABAP8//7///wAA/z//v///AAD/P/+//v/+f/8//7/+//5//z//v/7//n//P/+///8AAP8//7///wAA/z//v///AAD/P/+//v/+f/8//7/+//5//z//v/7/AAD/P/+//v8AAK/Gr8YbjA3Gi76Lvif9awF2pHakflm+rP8//7/+/wAA/7//P/7/AAD/v/8///8AAP+//z/+/wAA/7//PwAAAQD/v/8/AAABAP+//z/+/wAA/7//v/+//1//v/+//7//X/+//7//v/9f/7//v/+//1//v/+//7//X/+//7//v/9f/7//v/+//1//v/+//7//X/+//z///wAA/7//P///AAD/v/8//v/+f/+//z/+//5//7//PwAAAQD/v/8/AAABAP+//z///wAA/7//P///AAD/f/9//z//X/9//3//P/9f/7//v/+//1//v/+//7//X/+//7//v/9f/z//vwAAAQD/P/+/AAABAP8//78AAAEA/z//v///AAD/P/+///8AAP+//7//v/9f") +}] + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_opehl"] +data = PackedVector3Array(-8, -0.5, -8, -8, 0.5, -8, -8, -0.5, 8, -8, -0.5, -8, -8, -0.5, 8, -4.7624106, -0.5, -1.6000001, -8, 0.5, -8, -5.03036, 0.5, -1.6000001, -8, 0.5, 8, -8, 0.5, -8, -2, 0.5, -1.6000001, -5.03036, 0.5, -1.6000001, -8, -0.5, -8, 8, -0.5, -8, -8, 0.5, -8, -8, 0.5, -8, 2, 0.5, -6, -2, 0.5, -6, -8, 0.5, -8, -2, 0.5, -6, -2, 0.5, -1.6000001, -8, -0.5, -8, -4.7624106, -0.5, -1.6000001, 8, -0.5, -8, 8, -0.5, -8, -4.7624106, -0.5, -1.6000001, -4.3940806, -0.5, -1.6000001, 8, -0.5, -8, -4.3940806, -0.5, -1.6000001, -4.3940806, -0.5, 0.8, -8, 0.5, -8, -8, 0.5, 8, -8, -0.5, 8, -8, 0.5, 8, -5.03036, 0.5, -1.6000001, -5.03036, 0.5, 0.8, -8, -0.5, 8, -4.7624106, -0.5, 0.8, -4.7624106, -0.5, -1.6000001, -8, -0.5, 8, -4.3940806, -0.5, 0.8, -4.7624106, -0.5, 0.8, -8, 0.5, 8, -5.03036, 0.5, 0.8, -2, 0.5, 2, -2, 0.5, 2, -5.03036, 0.5, 0.8, -2, 0.5, 0.8, -8, -0.5, 8, 8, -0.5, -8, -4.3940806, -0.5, 0.8, -8, -0.5, 8, -8, 0.5, 8, 8, 0.5, 8, -8, 0.5, 8, -2, 0.5, 2, -2, 0.5, 3, -8, 0.5, 8, -2, 0.5, 3, 2, 0.5, 3, -8, 0.5, -8, 8, 0.5, -8, 2, 0.5, -6, -8, 0.5, -8, 8, -0.5, -8, 8, 0.5, -8, 8, 0.5, -8, 2, 0.5, -0.4000001, 2, 0.5, -6, 2, 0.5, -0.4000001, 8, 0.5, -8, 2, 0.5, 2, 8, -0.5, -8, 8, 0.5, 8, 8, 0.5, -8, -8, -0.5, 8, 8, -0.5, 8, 8, -0.5, -8, -8, 0.5, 8, 2, 0.5, 3, 8, 0.5, 8, -8, -0.5, 8, 8, 0.5, 8, 8, -0.5, 8, 8, -0.5, -8, 8, -0.5, 8, 8, 0.5, 8, 8, 0.5, -8, 8, 0.5, 8, 2, 0.5, 2, 8, 0.5, 8, 2, 0.5, 3, 2, 0.5, 2, -2, 0.5, 2, -2, 1, 2, -2, 0.5, 3, -2, 1, 3, -2, 0.5, 3, -2, 1, 2, -2, 1, 3, -2, 1, 2, 2, 1, 3, -2, 1, 3, 2, 1, 3, -2, 0.5, 3, 2, 1, 3, 2, 0.5, 3, -2, 0.5, 3, 2, 1, 3, -2, 1, 2, 2, 1, 2, 2, 1, 3, 2, 0.5, 2, 2, 0.5, 3, 2, 1, 3, 2, 1, 2, 2, 0.5, 2, -2, 2, -0.4000001, -2, 1.6944064, 0.8, -2, 1.6944064, -0.4000001, -2, 0.5, 0.8, -2, 1, 2, -2, 0.5, 2, -2, 1, 2, -2, 0.5, 0.8, -2, 2, 2, -2, 2, 2, -2, 0.5, 0.8, -2, 1.6944064, 0.8, -2, 2, -0.4000001, -2, 2, 2, -2, 1.6944064, 0.8, -2, 2, -0.4000001, 2, 2, 2, -2, 2, 2, -2, 2, 2, 2, 1, 2, -2, 1, 2, 2, 0.5, -0.4000001, 2, 0.5, 2, 2, 1, 2, 2, 0.5, -0.4000001, 2, 1, 2, 2, 2, 2, 2, 2, 2, -2, 2, -0.4000001, 2, 2, -0.4000001, -2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 0.5, -0.4000001, 2, 2, 2, 2, 2, -0.4000001, -2, 1.6944064, -1.6000001, -2, 0.5, -1.6000001, -2, 0.5, -6, -2, 2.1893396, -4.4, -2, 2.1893396, -2, -2, 0.5, -6, -2, 2.1893396, -4.4, -2, 0.5, -6, -2, 2.75, -6, -2, 0.5, -6, 2, 0.5, -6, -2, 2.75, -6, -2, 2.75, -4.4, -2, 2.1893396, -4.4, -2, 2.75, -6, -2, 1.6944064, -1.6000001, -2, 0.5, -6, -2, 2.1893396, -2, -2, 1.6944064, -1.6000001, -2, 2.75, -0.50710654, -2, 1.6944064, -0.4000001, -2, 2.75, -0.50710654, -2, 2, -0.4000001, -2, 1.6944064, -0.4000001, -2, 1.6944064, -1.6000001, -2, 2.1893396, -2, -2, 2.75, -0.50710654, -2, 2.75, -0.50710654, -2, 2.1893396, -2, -2, 2.75, -2, -2, 2.6428936, -0.4000001, -2, 2, -0.4000001, -2, 2.75, -0.50710654, -2, 2.75, -0.50710654, -2, 2.75, -2, -1.4393396, 2.75, -2, -2, 2.6428936, -0.4000001, 2, 2.6428936, -0.4000001, -2, 2, -0.4000001, -2, 2.75, -0.50710654, -1.4393396, 2.75, -2, 2, 2.75, -2, -2, 2.6428936, -0.4000001, -2, 2.75, -0.50710654, 2, 2.75, -0.50710654, -2, 2.75, -6, 2, 0.5, -6, 2, 2.75, -6, 2, 0.5, -0.4000001, 2, 2.75, -6, 2, 0.5, -6, 2, 2.6428936, -0.4000001, 2, 2, -0.4000001, -2, 2, -0.4000001, -2, 2.75, -0.50710654, 2, 2.75, -2, 2, 2.75, -0.50710654, -2, 2.6428936, -0.4000001, 2, 2.75, -0.50710654, 2, 2.6428936, -0.4000001, 2, 2, -0.4000001, 2, 2.75, -6, 2, 0.5, -0.4000001, 2, 2.6428936, -0.4000001, 2, 2.75, -6, 2, 2, -0.4000001, 2, 2.6428936, -0.4000001, 2, 2.75, -2, 2, 2.75, -6, 2, 2.6428936, -0.4000001, 2, 2.75, -0.50710654, 2, 2.75, -2, -1.1243672, 3.0649724, -3.0742881, -1.1022787, 3.087061, -3.1111407, 2, 2.9861577, -2.9427936, -1.4297092, 2.7596304, -2.196034, -1.4009104, 2.7884293, -2.3901806, 2, 2.7596307, -2.196034, -1.3532205, 2.8361192, -2.5805693, 2, 2.7884295, -2.3901806, -1.4009104, 2.7884293, -2.3901806, -1.4297092, 2.7596304, -2.196034, 2, 2.7596307, -2.196034, -1.4379865, 2.751353, -2.0275435, -1.4379865, 2.751353, -2.0275435, 2, 2.75, -2, -1.4393396, 2.75, -2, -1.2870988, 2.9022408, -2.7653668, -1.2195553, 2.9697845, -2.9081757, 2, 2.9022412, -2.7653668, -1.2195553, 2.9697845, -2.9081757, -1.2031822, 2.9861574, -2.9427936, 2, 2.9022412, -2.7653668, -1.2986917, 2.890648, -2.732967, -1.2870988, 2.9022408, -2.7653668, 2, 2.8361194, -2.5805693, -1.3532205, 2.8361192, -2.5805693, -1.2986917, 2.890648, -2.732967, 2, 2.8361194, -2.5805693, -1.1243672, 3.0649724, -3.0742881, 2, 2.9861577, -2.9427936, -1.2031822, 2.9861574, -2.9427936, -2, 2.75, -6, -2, 4.3106604, -4.4, -2, 2.75, -4.4, -2, 2.75, -6, -2, 4.75, -4, -2, 4.3106604, -4.4, -2, 4.3106604, -4.355752, -2, 4.359819, -3.9615705, -2, 4.3106604, -3.949257, -2, 4.3106604, -4.355752, -2, 4.553966, -3.9903693, -2, 4.359819, -3.9615705, -2, 2.75, -6, -2, 6.75, -6, -2, 4.75, -4, -2, 4.3106604, -4.4, -2, 4.75, -4, -2, 4.3106604, -4.360045, -2, 4.3106604, -4.360045, -2, 4.75, -4, -2, 4.3106604, -4.355752, -2, 4.3106604, -4.355752, -2, 4.75, -4, -2, 4.553966, -3.9903693, -2, 2.75, -6, 2, 2.75, -6, -2, 6.75, -6, -1.1022787, 3.087061, -3.1111407, -1.014176, 3.1751637, -3.2299337, 2, 3.087061, -3.1111407, -1.0027858, 3.481213, -3.546021, -1.1604317, 3.638859, -3.662939, 2, 3.6388593, -3.662939, -1.1604317, 3.638859, -3.662939, -1.3287793, 3.8072066, -3.7638426, 2, 3.8072066, -3.7638426, -1.5062054, 3.9846327, -3.847759, 2, 3.984633, -3.847759, -1.3287793, 3.8072066, -3.7638426, -2, 4.3106604, -3.949257, -2, 4.359819, -3.9615705, -1.9508412, 4.359819, -3.9615705, -2, 4.359819, -3.9615705, -2, 4.553966, -3.9903693, -1.9508412, 4.359819, -3.9615705, -1.9508412, 4.359819, -3.9615705, -2, 4.553966, -3.9903693, -1.9161165, 4.3945436, -3.9667213, -1.6910036, 4.1694307, -3.9138808, -1.8813918, 4.359819, -3.9615705, 2, 4.3598194, -3.9615705, -1.9161165, 4.3945436, -3.9667213, -2, 4.553966, -3.9903693, 2, 4.3598194, -3.9615705, -1.8813918, 4.359819, -3.9615705, -1.9161165, 4.3945436, -3.9667213, 2, 4.3598194, -3.9615705, -1.5062054, 3.9846327, -3.847759, -1.6910036, 4.1694307, -3.9138808, 2, 4.169431, -3.9138808, -2, 4.553966, -3.9903693, -2, 4.75, -4, 2, 4.553966, -3.9903693, -2, 4.75, -4, -2, 6.75, -6, -2, 6.75, -4, -2, 6.75, -6, 2, 6.75, -4, -2, 6.75, -4, -2, 4.75, -4, -2, 6.75, -4, 2, 4.75, -4, 2, 2.75, -6, 2, 2.9861577, -2.9427936, 2, 3.087061, -3.1111407, 2, 2.75, -6, 2, 3.087061, -3.1111407, 2, 3.203979, -3.2687864, -1.1022787, 3.087061, -3.1111407, 2, 3.087061, -3.1111407, 2, 2.9861577, -2.9427936, -1.3532205, 2.8361192, -2.5805693, 2, 2.8361194, -2.5805693, 2, 2.7884295, -2.3901806, -1.4009104, 2.7884293, -2.3901806, 2, 2.7884295, -2.3901806, 2, 2.7596307, -2.196034, -1.4379865, 2.751353, -2.0275435, 2, 2.7596307, -2.196034, 2, 2.75, -2, -1.2031822, 2.9861574, -2.9427936, 2, 2.9861577, -2.9427936, 2, 2.9022412, -2.7653668, -1.2870988, 2.9022408, -2.7653668, 2, 2.9022412, -2.7653668, 2, 2.8361194, -2.5805693, 2, 2.75, -6, 2, 2.8361194, -2.5805693, 2, 2.9022412, -2.7653668, 2, 2.75, -6, 2, 2.7884295, -2.3901806, 2, 2.8361194, -2.5805693, 2, 2.75, -6, 2, 2.7596307, -2.196034, 2, 2.7884295, -2.3901806, 2, 2.75, -6, 2, 2.75, -2, 2, 2.7596307, -2.196034, 2, 2.75, -6, 2, 2.9022412, -2.7653668, 2, 2.9861577, -2.9427936, 2, 2.75, -6, 2, 3.3357863, -3.4142134, 2, 3.4812136, -3.546021, 2, 2.75, -6, 2, 3.203979, -3.2687864, 2, 3.3357863, -3.4142134, 2, 2.75, -6, 2, 3.4812136, -3.546021, 2, 3.6388593, -3.662939, 2, 2.75, -6, 2, 3.8072066, -3.7638426, 2, 3.984633, -3.847759, 2, 2.75, -6, 2, 3.6388593, -3.662939, 2, 3.8072066, -3.7638426, 2, 2.75, -6, 2, 3.984633, -3.847759, 2, 4.169431, -3.9138808, 2, 2.75, -6, 2, 4.169431, -3.9138808, 2, 4.3598194, -3.9615705, 2, 2.75, -6, 2, 4.3598194, -3.9615705, 2, 4.553966, -3.9903693, 2, 2.75, -6, 2, 4.553966, -3.9903693, 2, 4.75, -4, 2, 2.75, -6, 2, 4.75, -4, 2, 6.75, -6, -1.014176, 3.1751637, -3.2299337, -0.9853608, 3.2039788, -3.2687864, 2, 3.087061, -3.1111407, -0.9853608, 3.2039788, -3.2687864, -0.8901257, 3.299214, -3.373862, 2, 3.203979, -3.2687864, -0.8901257, 3.299214, -3.373862, -0.8554561, 3.3338835, -3.412114, 2, 3.203979, -3.2687864, -1.0027858, 3.481213, -3.546021, 2, 3.4812136, -3.546021, -0.96516246, 3.44359, -3.5119212, -0.8554561, 3.3338835, -3.412114, -0.85735893, 3.3357863, -3.4142134, 2, 3.3357863, -3.4142134, -0.85735893, 3.3357863, -3.4142134, -0.96516246, 3.44359, -3.5119212, 2, 3.3357863, -3.4142134, -1.0027858, 3.481213, -3.546021, 2, 3.6388593, -3.662939, 2, 3.4812136, -3.546021, -1.1604317, 3.638859, -3.662939, 2, 3.8072066, -3.7638426, 2, 3.6388593, -3.662939, -1.3287793, 3.8072066, -3.7638426, 2, 3.984633, -3.847759, 2, 3.8072066, -3.7638426, -0.9853608, 3.2039788, -3.2687864, 2, 3.203979, -3.2687864, 2, 3.087061, -3.1111407, -0.8554561, 3.3338835, -3.412114, 2, 3.3357863, -3.4142134, 2, 3.203979, -3.2687864, -0.96516246, 3.44359, -3.5119212, 2, 3.4812136, -3.546021, 2, 3.3357863, -3.4142134, -1.5062054, 3.9846327, -3.847759, 2, 4.169431, -3.9138808, 2, 3.984633, -3.847759, -1.6910036, 4.1694307, -3.9138808, 2, 4.3598194, -3.9615705, 2, 4.169431, -3.9138808, -2, 4.553966, -3.9903693, 2, 4.553966, -3.9903693, 2, 4.3598194, -3.9615705, -2, 4.75, -4, 2, 4.75, -4, 2, 4.553966, -3.9903693, -2, 6.75, -6, 2, 2.75, -6, 2, 6.75, -6, -2, 6.75, -6, 2, 6.75, -6, 2, 6.75, -4, 2, 4.75, -4, 2, 6.75, -4, 2, 6.75, -6, -2, 6.75, -4, 2, 6.75, -4, 2, 4.75, -4, -4.737737, -0.5920825, -1.6000001, -4.3940806, -0.5, -1.6000001, -4.7624106, -0.5, -1.6000001, -4.737737, -0.5920825, -1.6000001, -4.7624106, -0.5, -1.6000001, -4.7624106, -0.5, 0.8, -4.737737, -0.5920825, -1.6000001, -4.737737, -0.5920825, 0.8, -4.3940806, -0.5, -1.6000001, -4.737737, -0.5920825, -1.6000001, -4.7624106, -0.5, 0.8, -4.737737, -0.5920825, 0.8, -4.737737, -0.5920825, 0.8, -4.3940806, -0.5, 0.8, -4.3940806, -0.5, -1.6000001, -5.125966, 0.8568063, -1.6000001, -5.125966, 0.8568063, 0.8, -5.03036, 0.5, -1.6000001, -5.125966, 0.8568063, 0.8, -5.03036, 0.5, 0.8, -5.03036, 0.5, -1.6000001, -5.125966, 0.8568063, -1.6000001, -5.03036, 0.5, -1.6000001, -2, 0.5, -1.6000001, -5.125966, 0.8568063, -1.6000001, -2, 1.6944064, 0.8, -5.125966, 0.8568063, 0.8, -5.125966, 0.8568063, -1.6000001, -2, 0.5, -1.6000001, -2, 1.6944064, -1.6000001, -5.125966, 0.8568063, -1.6000001, -2, 1.6944064, -1.6000001, -2, 1.6944064, -0.4000001, -5.125966, 0.8568063, -1.6000001, -2, 1.6944064, -0.4000001, -2, 1.6944064, 0.8, -4.737737, -0.5920825, 0.8, -4.7624106, -0.5, 0.8, -4.3940806, -0.5, 0.8, -5.125966, 0.8568063, 0.8, -2, 1.6944064, 0.8, -5.03036, 0.5, 0.8, -5.03036, 0.5, 0.8, -2, 1.6944064, 0.8, -2, 0.5, 0.8, -4.744544, 1.5661166, -4.4, -3.6838834, 0.5054562, -2, -3.6838834, 0.5054562, -4.4, -4.744544, 1.5661166, -4.4, -4.744544, 1.5661166, -2, -3.6838834, 0.5054562, -2, -4.744544, 1.5661166, -4.4, -3.6569705, 2.6536896, -3.3913417, -4.744544, 1.5661166, -2, -4.744544, 1.5661166, -4.4, -3.6242988, 2.6863613, -3.477785, -3.6569705, 2.6536896, -3.3913417, -4.744544, 1.5661166, -2, -3.67709, 2.6335704, -3.2975452, -3.6838832, 2.626777, -3.2, -4.744544, 1.5661166, -2, -3.6838832, 2.626777, -3.2, -3.67709, 2.6335704, -3.102455, -4.744544, 1.5661166, -2, -3.6569705, 2.6536896, -3.3913417, -3.67709, 2.6335704, -3.2975452, -4.744544, 1.5661166, -2, -3.67709, 2.6335704, -3.102455, -3.6569705, 2.6536896, -3.0086584, -4.744544, 1.5661166, -2, -3.6569705, 2.6536896, -3.0086584, -3.6242988, 2.6863613, -2.922215, -3.6838834, 0.5054562, -4.4, -3.6838834, 0.5054562, -2, -2, 2.1893396, -2, -4.744544, 1.5661166, -4.4, -3.6838834, 0.5054562, -4.4, -2, 2.75, -4.4, -3.6838834, 0.5054562, -4.4, -2, 2.1893396, -4.4, -2, 2.75, -4.4, -4.744544, 1.5661166, -4.4, -2, 4.3106604, -4.4, -3.465629, 2.8450313, -3.6619399, -4.744544, 1.5661166, -4.4, -2, 2.75, -4.4, -2, 4.3106604, -4.4, -3.6838834, 0.5054562, -4.4, -2, 2.1893396, -2, -2, 2.1893396, -4.4, -4.744544, 1.5661166, -2, -1.9161165, 4.3945436, -2, -3.6838834, 0.5054562, -2, -3.6838834, 0.5054562, -2, -2, 2.75, -2, -2, 2.1893396, -2, -4.744544, 1.5661166, -4.4, -3.58033, 2.7303302, -3.5535533, -3.6242988, 2.6863613, -3.477785, -4.744544, 1.5661166, -4.4, -3.5267537, 2.7839065, -3.6157348, -3.58033, 2.7303302, -3.5535533, -4.744544, 1.5661166, -4.4, -3.465629, 2.8450313, -3.6619399, -3.5267537, 2.7839065, -3.6157348, -4.744544, 1.5661166, -2, -3.6242988, 2.6863613, -2.922215, -3.58033, 2.7303302, -2.8464468, -4.744544, 1.5661166, -2, -3.58033, 2.7303302, -2.8464468, -3.5267537, 2.7839067, -2.7842653, -4.744544, 1.5661166, -2, -3.5267537, 2.7839067, -2.7842653, -3.4656289, 2.8450313, -2.7380602, -4.744544, 1.5661166, -2, -3.4656289, 2.8450313, -2.7380602, -3.3993049, 2.9113555, -2.7096074, -4.744544, 1.5661166, -2, -3.3993049, 2.9113555, -2.7096074, -3.33033, 2.9803305, -2.7, -4.744544, 1.5661166, -2, -3.33033, 2.9803305, -2.7, -3.261355, 3.0493052, -2.7096074, -4.744544, 1.5661166, -2, -3.261355, 3.0493052, -2.7096074, -3.195031, 3.1156294, -2.7380602, -4.744544, 1.5661166, -2, -3.195031, 3.1156294, -2.7380602, -1.9161165, 4.3945436, -2, -3.6838834, 0.5054562, -2, -1.9161165, 4.3945436, -2, -2, 2.75, -2, -1.2870988, 2.9022408, -2.7653668, -0.8554561, 3.3338835, -2, -1.2195553, 2.9697845, -2.9081757, -1.4297092, 2.7596304, -2.196034, -0.8554561, 3.3338835, -2, -1.4009104, 2.7884293, -2.3901806, -1.4297092, 2.7596304, -2.196034, -1.4379865, 2.751353, -2.0275435, -0.8554561, 3.3338835, -2, -1.4379865, 2.751353, -2.0275435, -1.4393396, 2.75, -2, -0.8554561, 3.3338835, -2, -1.3532205, 2.8361192, -2.5805693, -0.8554561, 3.3338835, -2, -1.2986917, 2.890648, -2.732967, -1.3532205, 2.8361192, -2.5805693, -1.4009104, 2.7884293, -2.3901806, -0.8554561, 3.3338835, -2, -1.2986917, 2.890648, -2.732967, -0.8554561, 3.3338835, -2, -1.2870988, 2.9022408, -2.7653668, -3.58033, 2.7303302, -3.5535533, -5.003157, 4.06522, -3.477785, -3.6242988, 2.6863613, -3.477785, -3.58033, 2.7303302, -3.5535533, -3.5267537, 2.7839065, -3.6157348, -4.9591885, 4.1091886, -3.5535533, -3.6569705, 2.6536896, -3.3913417, -5.0559483, 4.0124288, -3.2975452, -3.67709, 2.6335704, -3.2975452, -3.6569705, 2.6536896, -3.3913417, -3.6242988, 2.6863613, -3.477785, -5.035829, 4.032548, -3.3913417, -3.67709, 2.6335704, -3.2975452, -5.0627418, 4.0056353, -3.2, -3.6838832, 2.626777, -3.2, -3.6838832, 2.626777, -3.2, -5.0559483, 4.0124288, -3.102455, -3.67709, 2.6335704, -3.102455, -3.67709, 2.6335704, -3.102455, -5.035829, 4.032548, -3.0086584, -3.6569705, 2.6536896, -3.0086584, -3.6569705, 2.6536896, -3.0086584, -5.003157, 4.06522, -2.922215, -3.6242988, 2.6863613, -2.922215, -3.6242988, 2.6863613, -2.922215, -4.9591885, 4.1091886, -2.8464468, -3.58033, 2.7303302, -2.8464468, -3.58033, 2.7303302, -2.8464468, -4.905612, 4.162765, -2.7842653, -3.5267537, 2.7839067, -2.7842653, -3.58033, 2.7303302, -3.5535533, -4.9591885, 4.1091886, -3.5535533, -5.003157, 4.06522, -3.477785, -3.6242988, 2.6863613, -3.477785, -5.003157, 4.06522, -3.477785, -5.035829, 4.032548, -3.3913417, -3.6569705, 2.6536896, -3.3913417, -5.035829, 4.032548, -3.3913417, -5.0559483, 4.0124288, -3.2975452, -3.67709, 2.6335704, -3.2975452, -5.0559483, 4.0124288, -3.2975452, -5.0627418, 4.0056353, -3.2, -3.6838832, 2.626777, -3.2, -5.0627418, 4.0056353, -3.2, -5.0559483, 4.0124288, -3.102455, -3.67709, 2.6335704, -3.102455, -5.0559483, 4.0124288, -3.102455, -5.035829, 4.032548, -3.0086584, -3.5267537, 2.7839065, -3.6157348, -4.905612, 4.162765, -3.6157348, -4.9591885, 4.1091886, -3.5535533, -3.465629, 2.8450313, -3.6619399, -4.844487, 4.2238894, -3.6619399, -4.905612, 4.162765, -3.6157348, -3.3993049, 2.9113555, -3.6903927, -4.778163, 4.2902136, -3.6903927, -4.844487, 4.2238894, -3.6619399, -3.33033, 2.9803305, -3.7, -4.7091885, 4.3591886, -3.7, -4.778163, 4.2902136, -3.6903927, -3.261355, 3.0493052, -3.6903927, -4.6402135, 4.4281635, -3.6903927, -4.7091885, 4.3591886, -3.7, -3.6569705, 2.6536896, -3.0086584, -5.035829, 4.032548, -3.0086584, -5.003157, 4.06522, -2.922215, -3.6242988, 2.6863613, -2.922215, -5.003157, 4.06522, -2.922215, -4.9591885, 4.1091886, -2.8464468, -3.58033, 2.7303302, -2.8464468, -4.9591885, 4.1091886, -2.8464468, -4.905612, 4.162765, -2.7842653, -3.5267537, 2.7839067, -2.7842653, -4.905612, 4.162765, -2.7842653, -4.844487, 4.22389, -2.7380602, -3.4656289, 2.8450313, -2.7380602, -4.844487, 4.22389, -2.7380602, -4.778163, 4.2902136, -2.7096074, -3.3993049, 2.9113555, -2.7096074, -4.778163, 4.2902136, -2.7096074, -4.7091885, 4.3591886, -2.7, -3.33033, 2.9803305, -2.7, -4.7091885, 4.3591886, -2.7, -4.6402135, 4.4281635, -2.7096074, -3.261355, 3.0493052, -2.7096074, -4.6402135, 4.4281635, -2.7096074, -4.5738893, 4.494488, -2.7380602, -5.0559483, 4.0124288, -3.2975452, -5.035829, 4.032548, -3.3913417, -4.7091885, 4.3591886, -3.2, -5.035829, 4.032548, -3.3913417, -5.003157, 4.06522, -3.477785, -4.7091885, 4.3591886, -3.2, -5.003157, 4.06522, -3.477785, -4.9591885, 4.1091886, -3.5535533, -4.7091885, 4.3591886, -3.2, -4.9591885, 4.1091886, -3.5535533, -4.905612, 4.162765, -3.6157348, -4.7091885, 4.3591886, -3.2, -5.0559483, 4.0124288, -3.2975452, -4.7091885, 4.3591886, -3.2, -5.0627418, 4.0056353, -3.2, -5.0627418, 4.0056353, -3.2, -4.7091885, 4.3591886, -3.2, -5.0559483, 4.0124288, -3.102455, -5.0559483, 4.0124288, -3.102455, -4.7091885, 4.3591886, -3.2, -5.035829, 4.032548, -3.0086584, -5.035829, 4.032548, -3.0086584, -4.7091885, 4.3591886, -3.2, -5.003157, 4.06522, -2.922215, -4.844487, 4.2238894, -3.6619399, -4.778163, 4.2902136, -3.6903927, -4.7091885, 4.3591886, -3.2, -4.778163, 4.2902136, -3.6903927, -4.7091885, 4.3591886, -3.7, -4.7091885, 4.3591886, -3.2, -4.7091885, 4.3591886, -3.7, -4.6402135, 4.4281635, -3.6903927, -4.7091885, 4.3591886, -3.2, -4.6402135, 4.4281635, -3.6903927, -4.5738893, 4.494488, -3.6619399, -4.7091885, 4.3591886, -3.2, -4.905612, 4.162765, -3.6157348, -4.844487, 4.2238894, -3.6619399, -4.7091885, 4.3591886, -3.2, -3.1950307, 3.1156294, -3.6619399, -4.5738893, 4.494488, -3.6619399, -4.6402135, 4.4281635, -3.6903927, -4.5738893, 4.494488, -3.6619399, -3.1339061, 3.176754, -3.6157348, -4.5127645, 4.5556126, -3.6157348, -4.5127645, 4.5556126, -3.6157348, -3.08033, 3.2303305, -3.5535536, -4.4591885, 4.609189, -3.5535536, -5.003157, 4.06522, -2.922215, -4.7091885, 4.3591886, -3.2, -4.9591885, 4.1091886, -2.8464468, -4.7091885, 4.3591886, -3.2, -4.905612, 4.162765, -2.7842653, -4.9591885, 4.1091886, -2.8464468, -4.7091885, 4.3591886, -3.2, -4.844487, 4.22389, -2.7380602, -4.905612, 4.162765, -2.7842653, -4.7091885, 4.3591886, -3.2, -4.778163, 4.2902136, -2.7096074, -4.844487, 4.22389, -2.7380602, -4.7091885, 4.3591886, -3.2, -4.7091885, 4.3591886, -2.7, -4.778163, 4.2902136, -2.7096074, -4.7091885, 4.3591886, -3.2, -4.6402135, 4.4281635, -2.7096074, -4.7091885, 4.3591886, -2.7, -4.7091885, 4.3591886, -3.2, -4.5738893, 4.494488, -2.7380602, -4.6402135, 4.4281635, -2.7096074, -3.195031, 3.1156294, -2.7380602, -4.5738893, 4.494488, -2.7380602, -4.5127645, 4.5556126, -2.7842653, -4.5127645, 4.5556126, -2.7842653, -4.4591885, 4.609189, -2.8464468, -3.1339061, 3.176754, -2.7842653, -4.7091885, 4.3591886, -3.2, -4.5738893, 4.494488, -3.6619399, -4.5127645, 4.5556126, -3.6157348, -4.7091885, 4.3591886, -3.2, -4.5127645, 4.5556126, -3.6157348, -4.4591885, 4.609189, -3.5535536, -4.7091885, 4.3591886, -3.2, -4.4591885, 4.609189, -3.5535536, -4.4152193, 4.6531577, -3.477785, -4.7091885, 4.3591886, -3.2, -4.4152193, 4.6531577, -3.477785, -4.3825474, 4.685829, -3.3913417, -4.7091885, 4.3591886, -3.2, -4.3825474, 4.685829, -3.0086584, -4.4152193, 4.6531577, -2.922215, -4.7091885, 4.3591886, -3.2, -4.3825474, 4.685829, -3.3913417, -4.362428, 4.705949, -3.2975452, -4.7091885, 4.3591886, -3.2, -4.362428, 4.705949, -3.2975452, -4.3556347, 4.712742, -3.2, -4.7091885, 4.3591886, -3.2, -4.3556347, 4.712742, -3.2, -4.362428, 4.705949, -3.102455, -4.7091885, 4.3591886, -3.2, -4.362428, 4.705949, -3.102455, -4.3825474, 4.685829, -3.0086584, -4.7091885, 4.3591886, -3.2, -4.5127645, 4.5556126, -2.7842653, -4.5738893, 4.494488, -2.7380602, -4.7091885, 4.3591886, -3.2, -4.4591885, 4.609189, -2.8464468, -4.5127645, 4.5556126, -2.7842653, -4.7091885, 4.3591886, -3.2, -4.4152193, 4.6531577, -2.922215, -4.4591885, 4.609189, -2.8464468, -3.465629, 2.8450313, -3.6619399, -2, 4.3106604, -4.4, -2, 4.3106604, -4.360045, -3.261355, 3.0493052, -3.6903927, -2, 4.3106604, -4.360045, -2, 4.3106604, -4.355752, -3.5267537, 2.7839065, -3.6157348, -3.465629, 2.8450313, -3.6619399, -4.905612, 4.162765, -3.6157348, -3.465629, 2.8450313, -3.6619399, -3.3993049, 2.9113555, -3.6903927, -4.844487, 4.2238894, -3.6619399, -3.3993049, 2.9113555, -3.6903927, -3.33033, 2.9803305, -3.7, -4.778163, 4.2902136, -3.6903927, -3.33033, 2.9803305, -3.7, -3.261355, 3.0493052, -3.6903927, -4.7091885, 4.3591886, -3.7, -3.261355, 3.0493052, -3.6903927, -3.1950307, 3.1156294, -3.6619399, -4.6402135, 4.4281635, -3.6903927, -3.5267537, 2.7839067, -2.7842653, -4.844487, 4.22389, -2.7380602, -3.4656289, 2.8450313, -2.7380602, -3.4656289, 2.8450313, -2.7380602, -4.778163, 4.2902136, -2.7096074, -3.3993049, 2.9113555, -2.7096074, -3.3993049, 2.9113555, -2.7096074, -4.7091885, 4.3591886, -2.7, -3.33033, 2.9803305, -2.7, -3.33033, 2.9803305, -2.7, -4.6402135, 4.4281635, -2.7096074, -3.261355, 3.0493052, -2.7096074, -3.1950307, 3.1156294, -3.6619399, -3.1339061, 3.176754, -3.6157348, -4.5738893, 4.494488, -3.6619399, -4.5127645, 4.5556126, -3.6157348, -3.1339061, 3.176754, -3.6157348, -3.08033, 3.2303305, -3.5535536, -4.4591885, 4.609189, -3.5535536, -3.08033, 3.2303305, -3.5535536, -3.036361, 3.2742991, -3.477785, -4.4152193, 4.6531577, -3.477785, -3.036361, 3.2742991, -3.477785, -3.003689, 3.306971, -3.3913417, -4.3825474, 4.685829, -3.3913417, -3.003689, 3.306971, -3.3913417, -2.9835699, 3.3270903, -3.2975452, -4.362428, 4.705949, -3.2975452, -2.9835699, 3.3270903, -3.2975452, -2.9767766, 3.3338838, -3.2, -4.3556347, 4.712742, -3.2, -2.9767766, 3.3338838, -3.2, -2.9835699, 3.3270903, -3.102455, -4.362428, 4.705949, -3.102455, -2.9835699, 3.3270903, -3.102455, -3.003689, 3.306971, -3.0086584, -3.195031, 3.1156294, -2.7380602, -4.5127645, 4.5556126, -2.7842653, -3.1339061, 3.176754, -2.7842653, -3.261355, 3.0493052, -2.7096074, -4.5738893, 4.494488, -2.7380602, -3.195031, 3.1156294, -2.7380602, -4.4591885, 4.609189, -2.8464468, -3.08033, 3.2303305, -2.8464468, -3.1339061, 3.176754, -2.7842653, -4.4152193, 4.6531577, -2.922215, -3.036361, 3.2742991, -2.922215, -3.08033, 3.2303305, -2.8464468, -4.3825474, 4.685829, -3.0086584, -3.003689, 3.306971, -3.0086584, -3.036361, 3.2742991, -2.922215, -3.465629, 2.8450313, -3.6619399, -2, 4.3106604, -4.360045, -3.3993049, 2.9113555, -3.6903927, -3.3993049, 2.9113555, -3.6903927, -2, 4.3106604, -4.360045, -3.33033, 2.9803305, -3.7, -3.33033, 2.9803305, -3.7, -2, 4.3106604, -4.360045, -3.261355, 3.0493052, -3.6903927, -3.261355, 3.0493052, -3.6903927, -2, 4.3106604, -4.355752, -3.1950307, 3.1156294, -3.6619399, -3.1950307, 3.1156294, -3.6619399, -2, 4.3106604, -4.355752, -3.1339061, 3.176754, -3.6157348, -2, 4.3106604, -4.355752, -3.08033, 3.2303305, -3.5535536, -3.1339061, 3.176754, -3.6157348, -2, 4.3106604, -4.355752, -3.036361, 3.2742991, -3.477785, -3.08033, 3.2303305, -3.5535536, -2, 4.3106604, -4.355752, -3.003689, 3.306971, -3.3913417, -3.036361, 3.2742991, -3.477785, -2, 4.3106604, -4.355752, -2.9835699, 3.3270903, -3.2975452, -3.003689, 3.306971, -3.3913417, -2, 4.3106604, -4.355752, -2.9767766, 3.3338838, -3.2, -2.9835699, 3.3270903, -3.2975452, -2, 4.3106604, -4.355752, -2.9835699, 3.3270903, -3.102455, -2.9767766, 3.3338838, -3.2, -2, 4.3106604, -4.355752, -3.003689, 3.306971, -3.0086584, -2.9835699, 3.3270903, -3.102455, -2, 4.3106604, -4.355752, -2, 4.3106604, -3.949257, -3.003689, 3.306971, -3.0086584, -3.195031, 3.1156294, -2.7380602, -3.1339061, 3.176754, -2.7842653, -1.9161165, 4.3945436, -2, -3.1339061, 3.176754, -2.7842653, -3.08033, 3.2303305, -2.8464468, -1.9161165, 4.3945436, -2, -3.08033, 3.2303305, -2.8464468, -3.036361, 3.2742991, -2.922215, -1.9161165, 4.3945436, -2, -3.003689, 3.306971, -3.0086584, -1.9161165, 4.3945436, -2, -3.036361, 3.2742991, -2.922215, -4.4591885, 4.609189, -3.5535536, -3.036361, 3.2742991, -3.477785, -4.4152193, 4.6531577, -3.477785, -4.4152193, 4.6531577, -3.477785, -3.003689, 3.306971, -3.3913417, -4.3825474, 4.685829, -3.3913417, -4.3825474, 4.685829, -3.3913417, -2.9835699, 3.3270903, -3.2975452, -4.362428, 4.705949, -3.2975452, -4.362428, 4.705949, -3.2975452, -2.9767766, 3.3338838, -3.2, -4.3556347, 4.712742, -3.2, -4.362428, 4.705949, -3.102455, -4.3556347, 4.712742, -3.2, -2.9835699, 3.3270903, -3.102455, -4.3825474, 4.685829, -3.0086584, -4.362428, 4.705949, -3.102455, -3.003689, 3.306971, -3.0086584, -4.4152193, 4.6531577, -2.922215, -3.08033, 3.2303305, -2.8464468, -4.4591885, 4.609189, -2.8464468, -4.3825474, 4.685829, -3.0086584, -3.036361, 3.2742991, -2.922215, -4.4152193, 4.6531577, -2.922215, -3.003689, 3.306971, -3.0086584, -2, 4.3106604, -3.949257, -1.9161165, 4.3945436, -2, -1.1243672, 3.0649724, -3.0742881, -1.2031822, 2.9861574, -2.9427936, -0.8554561, 3.3338835, -2, -1.2195553, 2.9697845, -2.9081757, -0.8554561, 3.3338835, -2, -1.2031822, 2.9861574, -2.9427936, -1.1243672, 3.0649724, -3.0742881, -0.8554561, 3.3338835, -2, -1.1022787, 3.087061, -3.1111407, -1.0027858, 3.481213, -3.546021, -0.96516246, 3.44359, -3.5119212, -1.9161165, 4.3945436, -2, -1.0027858, 3.481213, -3.546021, -1.9161165, 4.3945436, -2, -1.1604317, 3.638859, -3.662939, -1.1604317, 3.638859, -3.662939, -1.9161165, 4.3945436, -2, -1.3287793, 3.8072066, -3.7638426, -0.8554561, 3.3338835, -3.412114, -1.9161165, 4.3945436, -2, -0.85735893, 3.3357863, -3.4142134, -0.85735893, 3.3357863, -3.4142134, -1.9161165, 4.3945436, -2, -0.96516246, 3.44359, -3.5119212, -0.8554561, 3.3338835, -3.412114, -0.8554561, 3.3338835, -2, -1.9161165, 4.3945436, -2, -1.1022787, 3.087061, -3.1111407, -0.8554561, 3.3338835, -2, -1.014176, 3.1751637, -3.2299337, -1.014176, 3.1751637, -3.2299337, -0.8554561, 3.3338835, -2, -0.9853608, 3.2039788, -3.2687864, -0.9853608, 3.2039788, -3.2687864, -0.8554561, 3.3338835, -2, -0.8901257, 3.299214, -3.373862, -0.8901257, 3.299214, -3.373862, -0.8554561, 3.3338835, -2, -0.8554561, 3.3338835, -3.412114, -1.9161165, 4.3945436, -2, -1.4393396, 2.75, -2, -2, 2.75, -2, -0.8554561, 3.3338835, -2, -1.4393396, 2.75, -2, -1.9161165, 4.3945436, -2, -1.5062054, 3.9846327, -3.847759, -1.3287793, 3.8072066, -3.7638426, -1.9161165, 4.3945436, -2, -1.5062054, 3.9846327, -3.847759, -1.9161165, 4.3945436, -2, -1.6910036, 4.1694307, -3.9138808, -1.6910036, 4.1694307, -3.9138808, -1.9161165, 4.3945436, -2, -1.8813918, 4.359819, -3.9615705, -2, 4.3106604, -3.949257, -1.9508412, 4.359819, -3.9615705, -1.9161165, 4.3945436, -2, -1.9508412, 4.359819, -3.9615705, -1.9161165, 4.3945436, -3.9667213, -1.9161165, 4.3945436, -2, -1.8813918, 4.359819, -3.9615705, -1.9161165, 4.3945436, -2, -1.9161165, 4.3945436, -3.9667213) + +[node name="RagdollPhysics" type="Node3D"] +script = ExtResource("1_sx4et") + +[node name="Mannequiny" parent="." instance=ExtResource("1_5g564")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 9.2, -3.8999999) +initial_velocity = Vector3(0, -5, 0) + +[node name="Mannequiny2" parent="." instance=ExtResource("1_5g564")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 9.2, -3.8999999) +initial_velocity = Vector3(0, -5, 0) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_noarx") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.33819243, 0.7799102, -0.52665555, -0.45996177, 0.3512444, 0.8155136, 0.82101226, 0.51804197, 0.2399407, 0, 0, 0) +shadow_enabled = true +shadow_bias = 0.03 +shadow_blur = 1.5 +directional_shadow_mode = 0 +directional_shadow_fade_start = 1.0 +directional_shadow_max_distance = 25.0 + +[node name="CameraPivot" type="Node3D" parent="."] +transform = Transform3D(0.70710665, 0.45451966, -0.5416752, 0, 0.7660443, 0.64278775, 0.7071069, -0.4545195, 0.54167503, 0, 2, 0) + +[node name="Camera3D" type="Camera3D" parent="CameraPivot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 16) +fov = 49.0 + +[node name="StaticBody3D" type="StaticBody3D" parent="."] + +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="StaticBody3D"] +visible = false + +[node name="Ground" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +size = Vector3(16, 1, 16) +material = SubResource("StandardMaterial3D_5g564") + +[node name="SmallLedge" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75, 2.5) +size = Vector3(4, 0.5, 1) +material = SubResource("StandardMaterial3D_noarx") + +[node name="LedgeLow" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, 0.79999995) +size = Vector3(4, 1.5, 2.4) +material = SubResource("StandardMaterial3D_noarx") + +[node name="LedgeMid" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, -3.2) +size = Vector3(4, 3, 5.6) +material = SubResource("StandardMaterial3D_noarx") + +[node name="Bevel" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D/LedgeMid"] +transform = Transform3D(1, 0, 0, 0, 0.70710677, 0.70710677, 0, -0.70710677, 0.70710677, 0, 1.8000002, 3.1000001) +operation = 2 +size = Vector3(4, 1, 1) +material = SubResource("StandardMaterial3D_noarx") + +[node name="LedgeHigh" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.75, -4) +size = Vector3(4, 4, 4) +material = SubResource("StandardMaterial3D_noarx") + +[node name="Curve" type="CSGCylinder3D" parent="StaticBody3D/CSGCombiner3D/LedgeHigh"] +transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 1, 0, 0, 2) +operation = 2 +radius = 2.0 +height = 4.1 +sides = 64 +material = SubResource("StandardMaterial3D_noarx") + +[node name="Subtract" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D/LedgeHigh"] +transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 1, 2.9802322e-08, 2, 1) +operation = 2 +size = Vector3(4, 4.1, 2) +material = SubResource("StandardMaterial3D_noarx") + +[node name="SlopeSide" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(0.9659258, -0.25881904, 0, 0.25881904, 0.9659258, 0, 0, 0, 1, -3, 0.65, -0.40000004) +size = Vector3(4, 1.5, 2.4) +material = SubResource("StandardMaterial3D_noarx") + +[node name="SlopeSide2" type="CSGBox3D" parent="StaticBody3D/CSGCombiner3D"] +transform = Transform3D(0.7071068, -0.7071068, 0, 0.7071068, 0.7071068, 0, 0, 0, 1, -2.8, 2.45, -3.2) +size = Vector3(4, 1.5, 2.4) +material = SubResource("StandardMaterial3D_noarx") + +[node name="Cylinder" type="CSGCylinder3D" parent="StaticBody3D/CSGCombiner3D/SlopeSide2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.3841858e-07, 1.7, 0) +sides = 32 +material = SubResource("StandardMaterial3D_noarx") + +[node name="CSGBakedMeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"] +mesh = SubResource("ArrayMesh_1hr0i") + +[node name="CSGBakedCollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_opehl") + +[node name="LightmapGI" type="LightmapGI" parent="."] +supersampling = true +texel_scale = 2.0 +light_data = ExtResource("4_1hr0i") + +[node name="Help" type="Label" parent="."] +self_modulate = Color(1, 1, 1, 0.627451) +anchors_preset = -1 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 24.0 +offset_top = -47.0 +offset_right = 172.0 +offset_bottom = -24.0 +grow_vertical = 0 +theme_override_constants/outline_size = 5 +text = "Space: Place ragdoll at cursor position +Shift (Hold): Slow motion +R: Reset simulation +Right Mouse Button (Drag): Orbit camera +Mouse wheel: Zoom" diff --git a/3d/ragdoll_physics/screenshots/.gdignore b/3d/ragdoll_physics/screenshots/.gdignore new file mode 100644 index 00000000..e69de29b diff --git a/3d/ragdoll_physics/screenshots/ragdoll_physics.webp b/3d/ragdoll_physics/screenshots/ragdoll_physics.webp new file mode 100644 index 00000000..c3e84bac Binary files /dev/null and b/3d/ragdoll_physics/screenshots/ragdoll_physics.webp differ diff --git a/3d/ragdoll_physics/sounds/impact_big.LICENSE.md b/3d/ragdoll_physics/sounds/impact_big.LICENSE.md new file mode 100644 index 00000000..f959873d --- /dev/null +++ b/3d/ragdoll_physics/sounds/impact_big.LICENSE.md @@ -0,0 +1,8 @@ +# License for `impact_big.wav` + +Copyright (c) 2020 FFeller + +Licensed under CC0 1.0 Universal. + +Downloaded from . +Sound edited to remove silence at the start for lower latency on playback. diff --git a/3d/ragdoll_physics/sounds/impact_big.wav b/3d/ragdoll_physics/sounds/impact_big.wav new file mode 100644 index 00000000..3010d93b Binary files /dev/null and b/3d/ragdoll_physics/sounds/impact_big.wav differ diff --git a/3d/ragdoll_physics/sounds/impact_big.wav.import b/3d/ragdoll_physics/sounds/impact_big.wav.import new file mode 100644 index 00000000..c25ff1c7 --- /dev/null +++ b/3d/ragdoll_physics/sounds/impact_big.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://urcgf5c0ln36" +path="res://.godot/imported/impact_big.wav-4c74cd797c68f16630acca36ff277f21.sample" + +[deps] + +source_file="res://sounds/impact_big.wav" +dest_files=["res://.godot/imported/impact_big.wav-4c74cd797c68f16630acca36ff277f21.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/3d/ragdoll_physics/sounds/impact_small.LICENSE.md b/3d/ragdoll_physics/sounds/impact_small.LICENSE.md new file mode 100644 index 00000000..54084fc8 --- /dev/null +++ b/3d/ragdoll_physics/sounds/impact_small.LICENSE.md @@ -0,0 +1,8 @@ +# License for `impact_small.wav` + +Copyright (c) 2017 dorian.mastin + +Licensed under CC0 1.0 Universal. + +Downloaded from . +Sound edited to remove silence at the start for lower latency on playback. diff --git a/3d/ragdoll_physics/sounds/impact_small.wav b/3d/ragdoll_physics/sounds/impact_small.wav new file mode 100644 index 00000000..00651194 Binary files /dev/null and b/3d/ragdoll_physics/sounds/impact_small.wav differ diff --git a/3d/ragdoll_physics/sounds/impact_small.wav.import b/3d/ragdoll_physics/sounds/impact_small.wav.import new file mode 100644 index 00000000..2f13e149 --- /dev/null +++ b/3d/ragdoll_physics/sounds/impact_small.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://drrptt1g0n2vh" +path="res://.godot/imported/impact_small.wav-445e8ba44ed650ede07371ef928d7204.sample" + +[deps] + +source_file="res://sounds/impact_small.wav" +dest_files=["res://.godot/imported/impact_small.wav-445e8ba44ed650ede07371ef928d7204.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/3d/ragdoll_physics/textures/checker.LICENSE.md b/3d/ragdoll_physics/textures/checker.LICENSE.md new file mode 100644 index 00000000..a7a1e0be --- /dev/null +++ b/3d/ragdoll_physics/textures/checker.LICENSE.md @@ -0,0 +1,7 @@ +# License for `checker.png` + +Copyright (c) 2020 Kenney + +Licensed under CC0 1.0 Universal. + +Downloaded from https://kenney.nl/assets/prototype-textures diff --git a/3d/ragdoll_physics/textures/checker.png b/3d/ragdoll_physics/textures/checker.png new file mode 100644 index 00000000..374a5d06 Binary files /dev/null and b/3d/ragdoll_physics/textures/checker.png differ diff --git a/3d/ragdoll_physics/textures/checker.png.import b/3d/ragdoll_physics/textures/checker.png.import new file mode 100644 index 00000000..6b31b59c --- /dev/null +++ b/3d/ragdoll_physics/textures/checker.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjdn0ljnq03m4" +path.s3tc="res://.godot/imported/checker.png-d334a8ae07de292fd4162f184b9dd7bc.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://textures/checker.png" +dest_files=["res://.godot/imported/checker.png-d334a8ae07de292fd4162f184b9dd7bc.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0