Add right image and clean scene/code

This commit is contained in:
Rodolphe Houdas 2023-04-28 23:02:43 +01:00
parent 3dbd926724
commit ad8885765e
12 changed files with 408 additions and 203 deletions

View file

@ -1,25 +1,32 @@
[gd_scene load_steps=103 format=3 uid="uid://2vmsr5t51l5c"]
[gd_scene load_steps=106 format=3 uid="uid://bow3efiv6dt74"]
[ext_resource type="Script" path="res://scripts/Visualiser.gd" id="1_i4o6k"]
[ext_resource type="Script" path="res://scripts/Starter.gd" id="1_pwqvd"]
[ext_resource type="Material" uid="uid://bistsvvb3ab2n" path="res://materials/SkyImagesMaterialtres.tres" id="2_4y0uk"]
[ext_resource type="PackedScene" uid="uid://uaaq7yd773go" path="res://scenes/HUD.tscn" id="3_2i584"]
[ext_resource type="Texture2D" uid="uid://64qjvjymo7oj" path="res://textures/LeftImage.tres" id="3_48g1p"]
[ext_resource type="Sky" uid="uid://dlont1iyrrl3g" path="res://materials/SkyImages.tres" id="3_il4lh"]
[ext_resource type="Texture2D" uid="uid://t5jb84gwhfx4" path="res://textures/RightImage.tres" id="4_antfi"]
[ext_resource type="Script" path="res://UltraleapCamera.gd" id="4_gr4o3"]
[ext_resource type="Material" uid="uid://cgbf7yeymk5ch" path="res://materials/canvas/left_canvas_image.tres" id="4_ebu6v"]
[ext_resource type="Script" path="res://scripts/ImagePuller.gd" id="4_sgil3"]
[ext_resource type="Script" path="res://scripts/UltraleapCamera.gd" id="6_fmvxa"]
[ext_resource type="Texture2D" uid="uid://7h3wom5btmhp" path="res://textures/LeftDistortion.tres" id="7_vascd"]
[ext_resource type="Script" path="res://scripts/DebugHands.gd" id="8_uah46"]
[ext_resource type="Texture2D" uid="uid://dwx41gu1dkwgt" path="res://textures/RightDistortion.tres" id="9_douml"]
[ext_resource type="Texture2D" uid="uid://bupl2rdcvjd1w" path="res://textures/RawLeftImage.tres" id="9_h7pse"]
[ext_resource type="Material" uid="uid://cgbf7yeymk5ch" path="res://materials/canvas_image.tres" id="12_vmkw8"]
[ext_resource type="Material" uid="uid://ewxi4ovsa7p1" path="res://materials/spatial_image.tres" id="15_3ed8b"]
[ext_resource type="Texture2D" uid="uid://b7pxd4fx3yy1p" path="res://textures/RawRightImage.tres" id="14_drfhq"]
[ext_resource type="Material" uid="uid://crj1x18yg0xsl" path="res://materials/canvas/right_canvas_image.tres" id="17_6oesc"]
[sub_resource type="Environment" id="Environment_3k2hr"]
background_mode = 2
background_mode = 1
sky = ExtResource("3_il4lh")
[sub_resource type="Environment" id="Environment_3swho"]
background_mode = 3
[sub_resource type="World3D" id="World3D_lku1t"]
environment = SubResource("Environment_3swho")
[sub_resource type="Environment" id="Environment_d6s4q"]
background_mode = 3
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rj2dr"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_83waq"]
@ -398,19 +405,24 @@ height = 0.0141687
radial_segments = 8
rings = 4
[sub_resource type="Gradient" id="Gradient_n8bxu"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rr3q0"]
bg_color = Color(1, 1, 1, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_x2m6l"]
gradient = SubResource("Gradient_n8bxu")
[sub_resource type="Environment" id="Environment_skott"]
background_mode = 3
[node name="Visualiser" type="Node3D" node_paths=PackedStringArray("tracking", "camera", "hands")]
[sub_resource type="World3D" id="World3D_30cj8"]
environment = SubResource("Environment_skott")
[sub_resource type="Environment" id="Environment_4mjh4"]
background_mode = 3
[node name="Visualiser" type="Node3D" node_paths=PackedStringArray("tracking", "left_view", "right_view")]
script = ExtResource("1_i4o6k")
tracking = NodePath("UltraleapHandTracking")
camera = NodePath("Camera3D")
hands = NodePath("Hands")
hud = NodePath("HUD")
sky = ExtResource("2_4y0uk")
materials_to_rectify = Array[Material]([ExtResource("15_3ed8b"), ExtResource("12_vmkw8")])
materials_to_rectify = Array[Material]([ExtResource("4_ebu6v"), ExtResource("17_6oesc")])
left_view = NodePath("Images/HBoxContainer/LeftSubViewportContainer")
right_view = NodePath("Images/HBoxContainer/RightSubViewportContainer")
[node name="UltraleapHandTracking" type="UltraleapHandTracking" parent="."]
script = ExtResource("1_pwqvd")
@ -419,30 +431,14 @@ script = ExtResource("1_pwqvd")
transform = Transform3D(-1, -8.74227e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, -0.033, 0, 0)
fov = 106.0
near = 0.001
script = ExtResource("4_gr4o3")
materials = Array[ShaderMaterial]([ExtResource("12_vmkw8")])
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Camera3D"]
[node name="Camera3D2" type="Camera3D" parent="."]
transform = Transform3D(-1, -8.74227e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, -0.033, 0, 0)
fov = 106.0
near = 0.001
script = ExtResource("4_gr4o3")
materials = Array[ShaderMaterial]([ExtResource("12_vmkw8")])
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_3k2hr")
[node name="HUD" parent="." node_paths=PackedStringArray("tracking") instance=ExtResource("3_2i584")]
layer = 100
tracking = NodePath("../UltraleapHandTracking")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="Images" type="CanvasLayer" parent="."]
layer = -1
visible = false
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer"]
[node name="HBoxContainer" type="HBoxContainer" parent="Images"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
@ -452,230 +448,459 @@ size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/separation = 0
[node name="TextureRect" type="TextureRect" parent="CanvasLayer/HBoxContainer" node_paths=PackedStringArray("tracker")]
[node name="LeftSubViewportContainer" type="SubViewportContainer" parent="Images/HBoxContainer"]
clip_contents = true
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("3_48g1p")
stretch_mode = 5
script = ExtResource("4_sgil3")
tracker = NodePath("../../../UltraleapHandTracking")
distortion_texture = ExtResource("7_vascd")
raw_image = ExtResource("9_h7pse")
stretch = true
[node name="TextureRect2" type="TextureRect" parent="CanvasLayer/HBoxContainer" node_paths=PackedStringArray("tracker")]
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("4_antfi")
stretch_mode = 5
script = ExtResource("4_sgil3")
side = 1
tracker = NodePath("../../../UltraleapHandTracking")
distortion_texture = ExtResource("9_douml")
[node name="SubViewport" type="SubViewport" parent="Images/HBoxContainer/LeftSubViewportContainer"]
own_world_3d = true
world_3d = SubResource("World3D_lku1t")
handle_input_locally = false
size = Vector2i(576, 648)
render_target_update_mode = 4
[node name="Hands" type="Node3D" parent="."]
[node name="Camera3D" type="Camera3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport"]
transform = Transform3D(-1, -1.50996e-07, 6.60024e-15, 0, -4.37114e-08, -1, 1.50996e-07, -1, 4.37114e-08, -0.033, 0, 0)
environment = SubResource("Environment_d6s4q")
fov = 106.0
near = 0.001
script = ExtResource("6_fmvxa")
materials = Array[ShaderMaterial]([ExtResource("4_ebu6v")])
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Camera3D"]
[node name="Hands" type="Node3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport"]
script = ExtResource("8_uah46")
tracking = NodePath("../UltraleapHandTracking")
tracking = NodePath("../../../../../UltraleapHandTracking")
use_interpolated_frames = true
[node name="LeftHand" type="Node3D" parent="Hands"]
[node name="LeftHand" type="Node3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands"]
[node name="LeftArm" type="MeshInstance3D" parent="Hands/LeftHand"]
[node name="LeftArm" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand"]
transform = Transform3D(0.928001, -0.346447, -0.137075, -0.128382, 0.0480389, -0.990561, 0.349761, 0.936839, 0.000102695, -0.199097, 0.206055, 0.152054)
mesh = SubResource("CapsuleMesh_83waq")
[node name="LeftPalm" type="Node3D" parent="Hands/LeftHand"]
[node name="LeftPalm" type="Node3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand"]
[node name="LeftThumbMetacarpal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm"]
[node name="LeftThumbMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.246631, -0.615053, -0.748921, -0.953254, -0.0147457, -0.301811, 0.174587, 0.788348, -0.589939, -0.128127, 0.192121, 0.0205825)
mesh = SubResource("CapsuleMesh_o5gcj")
[node name="LeftThumbProximal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftThumbMetacarpal"]
[node name="LeftThumbProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal"]
transform = Transform3D(0.971684, -0.235994, 0.0116717, 0.235994, 0.966874, -0.0972665, 0.0116692, 0.0972667, 0.99519, 0.0056477, -0.0231389, -0.00232763)
mesh = SubResource("CapsuleMesh_uj07d")
[node name="LeftThumbIntermediate" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal"]
[node name="LeftThumbIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal"]
transform = Transform3D(0.999933, 0.0115872, 0.000412345, -0.0115873, 0.997402, 0.0711059, 0.000412717, -0.0711059, 0.997469, -0.000157043, -0.037434, 0.000962682)
mesh = SubResource("CapsuleMesh_j6wqi")
[node name="LeftThumbDistal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal/LeftThumbIntermediate"]
[node name="LeftThumbDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal/LeftThumbIntermediate"]
transform = Transform3D(0.999924, 0.0122997, 6.88732e-05, -0.0122997, 0.999862, 0.0111714, 6.85304e-05, -0.0111715, 0.999937, -0.000109673, -0.0224483, 9.95249e-05)
mesh = SubResource("CapsuleMesh_gx52k")
[node name="LeftIndexMetacarpal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm"]
[node name="LeftIndexMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.920796, -0.351825, -0.168387, -0.146033, 0.0893456, -0.985237, 0.361676, 0.931792, 0.030891, -0.118765, 0.204067, -0.0158058)
mesh = SubResource("CapsuleMesh_y5lbo")
[node name="LeftIndexProximal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftIndexMetacarpal"]
[node name="LeftIndexProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal"]
transform = Transform3D(0.995428, 0.0952644, -0.00686568, -0.0952644, 0.985118, -0.143067, -0.00686571, 0.143067, 0.989689, -0.00156508, -0.0500568, -0.00234996)
mesh = SubResource("CapsuleMesh_u5cra")
[node name="LeftIndexIntermediate" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal"]
[node name="LeftIndexIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal"]
transform = Transform3D(0.999955, 0.00944272, 0.000782929, -0.00944272, 0.986315, 0.164602, 0.000782091, -0.164602, 0.98636, -0.000105381, -0.0274207, 0.00183466)
mesh = SubResource("CapsuleMesh_hud78")
[node name="LeftIndexDistal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal/LeftIndexIntermediate"]
[node name="LeftIndexDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal/LeftIndexIntermediate"]
transform = Transform3D(0.999588, -0.0285783, -0.00276972, 0.0285783, 0.980982, 0.191985, -0.00276955, -0.191985, 0.981394, 0.000272825, -0.0205106, 0.00183289)
mesh = SubResource("CapsuleMesh_15vi0")
[node name="LeftMiddleMetacarpal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm"]
[node name="LeftMiddleMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.974987, -0.222249, -0.00252551, 0.0133517, 0.0699075, -0.997464, 0.221862, 0.97248, 0.0711263, -0.131328, 0.208032, -0.0209381)
mesh = SubResource("CapsuleMesh_884yv")
[node name="LeftMiddleProximal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal"]
[node name="LeftMiddleProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal"]
transform = Transform3D(0.975298, 0.219974, -0.0201218, -0.219974, 0.958907, -0.179188, -0.0201219, 0.179188, 0.983609, -0.00413054, -0.0501295, -0.0033651)
mesh = SubResource("CapsuleMesh_jbd03")
[node name="LeftMiddleIntermediate" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal"]
[node name="LeftMiddleIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal"]
transform = Transform3D(0.999978, 0.00656457, 0.000562455, -0.00656449, 0.98538, 0.170245, 0.000563354, -0.170245, 0.985402, -8.88109e-05, -0.0321045, 0.00230217)
mesh = SubResource("CapsuleMesh_b2yq4")
[node name="LeftMiddleDistal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal/LeftMiddleIntermediate"]
[node name="LeftMiddleDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal/LeftMiddleIntermediate"]
transform = Transform3D(0.999126, -0.0415443, -0.00455535, 0.0415442, 0.975372, 0.21662, -0.0045562, -0.21662, 0.976245, 0.000399798, -0.0229201, 0.002087)
mesh = SubResource("CapsuleMesh_pvw3x")
[node name="LeftRingMetacarpal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm"]
[node name="LeftRingMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.994437, -0.0746316, 0.0743254, 0.078157, 0.0498008, -0.995696, 0.0706089, 0.995967, 0.0553568, -0.148493, 0.208353, -0.0227745)
mesh = SubResource("CapsuleMesh_mj0yp")
[node name="LeftRingProximal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftRingMetacarpal"]
[node name="LeftRingProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal"]
transform = Transform3D(0.997261, 0.0733889, -0.00915674, -0.0733888, 0.966643, -0.245388, -0.00915743, 0.245388, 0.969382, -0.00133975, -0.046493, -0.00448087)
mesh = SubResource("CapsuleMesh_aj8d6")
[node name="LeftRingIntermediate" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal"]
[node name="LeftRingIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal"]
transform = Transform3D(0.999793, 0.0202755, 0.00160236, -0.0202754, 0.98737, 0.157129, 0.00160376, -0.157129, 0.987577, -0.000212997, -0.0286281, 0.0017647)
mesh = SubResource("CapsuleMesh_61kb8")
[node name="LeftRingDistal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal/LeftRingIntermediate"]
[node name="LeftRingDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal/LeftRingIntermediate"]
transform = Transform3D(0.99999, 0.00453917, 0.000432035, -0.00452597, 0.976624, 0.214906, 0.000553579, -0.214906, 0.976634, -4.79221e-05, -0.0186928, 0.00190805)
mesh = SubResource("CapsuleMesh_q8ej2")
[node name="LeftPinkyMetacarpal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm"]
[node name="LeftPinkyMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.970349, 0.059013, 0.234392, 0.235304, -0.00892329, -0.971881, -0.0552621, 0.998217, -0.0225447, -0.163017, 0.203872, -0.0186913)
mesh = SubResource("CapsuleMesh_8hxcf")
[node name="LeftPinkyProximal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal"]
[node name="LeftPinkyProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal"]
transform = Transform3D(0.988306, 0.15169, -0.0155462, -0.15169, 0.96764, -0.20165, -0.0155453, 0.201651, 0.979334, -0.00190479, -0.03885, -0.00253224)
mesh = SubResource("CapsuleMesh_chu0h")
[node name="LeftPinkyIntermediate" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal"]
[node name="LeftPinkyIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal"]
transform = Transform3D(0.999967, -0.00811745, -0.000837663, 0.00811745, 0.978894, 0.20421, -0.000837639, -0.20421, 0.978927, 7.8775e-05, -0.0220771, 0.00198543)
mesh = SubResource("CapsuleMesh_ek5ta")
[node name="LeftPinkyDistal" type="MeshInstance3D" parent="Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal/LeftPinkyIntermediate"]
[node name="LeftPinkyDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal/LeftPinkyIntermediate"]
transform = Transform3D(0.999963, 0.00854993, 0.000962209, -0.00854997, 0.97495, 0.222259, 0.000962161, -0.222259, 0.974987, -6.29947e-05, -0.0168834, 0.00163205)
mesh = SubResource("CapsuleMesh_2kqg1")
[node name="RightHand" type="Node3D" parent="Hands"]
[node name="RightHand" type="Node3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands"]
[node name="RightArm" type="MeshInstance3D" parent="Hands/RightHand"]
[node name="RightArm" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand"]
transform = Transform3D(0.633086, 0.758899, 0.152559, 0.211182, 0.0202787, -0.977236, -0.744718, 0.650892, -0.147428, 0.243868, 0.204395, 0.103209)
mesh = SubResource("CapsuleMesh_3idn1")
[node name="RightPalm" type="Node3D" parent="Hands/RightHand"]
[node name="RightPalm" type="Node3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand"]
[node name="RightThumbMetacarpal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm"]
[node name="RightThumbMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.136539, 0.722682, 0.67756, 0.956999, 0.080491, -0.278701, -0.25595, 0.686478, -0.680616, 0.117662, 0.191586, 0.0146278)
mesh = SubResource("CapsuleMesh_evi5e")
[node name="RightThumbProximal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightThumbMetacarpal"]
[node name="RightThumbProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal"]
transform = Transform3D(0.973915, 0.226793, -0.00734438, -0.226793, 0.971847, -0.0638621, -0.00734586, 0.063862, 0.997932, -0.0053771, -0.0230416, -0.00151413)
mesh = SubResource("CapsuleMesh_yg1ei")
[node name="RightThumbIntermediate" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal"]
[node name="RightThumbIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal"]
transform = Transform3D(0.999376, -0.0352997, -0.000742555, 0.0352998, 0.998496, 0.0419445, -0.000739276, -0.0419445, 0.99912, 0.000463888, -0.0368274, 0.000550985)
mesh = SubResource("CapsuleMesh_4ca7c")
[node name="RightThumbDistal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal/RightThumbIntermediate"]
[node name="RightThumbDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal/RightThumbIntermediate"]
transform = Transform3D(0.999858, -0.0168108, 0.00022164, 0.0168107, 0.999514, -0.0262619, 0.000220001, 0.0262618, 0.999655, 0.000147164, -0.0218794, -0.000229731)
mesh = SubResource("CapsuleMesh_1bc4u")
[node name="RightIndexMetacarpal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm"]
[node name="RightIndexMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.842259, 0.475365, 0.254219, 0.194068, 0.172584, -0.965687, -0.502928, 0.862695, 0.0531077, 0.102263, 0.201164, -0.0206441)
mesh = SubResource("CapsuleMesh_yjqsy")
[node name="RightIndexProximal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightIndexMetacarpal"]
[node name="RightIndexProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal"]
transform = Transform3D(0.999667, -0.0256748, 0.00244968, 0.0256747, 0.981616, -0.189133, 0.0024513, 0.189133, 0.981948, 0.000415713, -0.0496469, -0.00306317)
mesh = SubResource("CapsuleMesh_j3lcc")
[node name="RightIndexIntermediate" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal"]
[node name="RightIndexIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal"]
transform = Transform3D(0.999996, -0.00299838, -0.000313576, 0.00299838, 0.978362, 0.206878, -0.000313532, -0.206878, 0.978367, 3.29465e-05, -0.0269501, 0.0022738)
mesh = SubResource("CapsuleMesh_i5m88")
[node name="RightIndexDistal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal/RightIndexIntermediate"]
[node name="RightIndexDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal/RightIndexIntermediate"]
transform = Transform3D(0.999853, 0.0170301, 0.00176276, -0.01703, 0.978632, 0.204911, 0.00176461, -0.204911, 0.978779, -0.000159994, -0.0201871, 0.00192538)
mesh = SubResource("CapsuleMesh_trt8t")
[node name="RightMiddleMetacarpal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm"]
[node name="RightMiddleMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.929654, 0.355253, 0.0976667, 0.0481114, 0.145762, -0.988149, -0.365279, 0.923336, 0.118416, 0.11344, 0.205373, -0.0277658)
mesh = SubResource("CapsuleMesh_dukwl")
[node name="RightMiddleProximal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightMiddleMetacarpal"]
[node name="RightMiddleProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal"]
transform = Transform3D(0.983575, -0.179959, 0.0139558, 0.179959, 0.971714, -0.152924, 0.0139589, 0.152923, 0.988139, 0.00328472, -0.0497405, -0.00279084)
mesh = SubResource("CapsuleMesh_svsoj")
[node name="RightMiddleIntermediate" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal"]
[node name="RightMiddleIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal"]
transform = Transform3D(0.999992, -0.00404462, -0.00037287, 0.00404434, 0.98301, 0.18351, -0.000375694, -0.18351, 0.983018, 5.32642e-05, -0.0312066, 0.00241873)
mesh = SubResource("CapsuleMesh_q3n4f")
[node name="RightMiddleDistal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal/RightMiddleIntermediate"]
[node name="RightMiddleDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal/RightMiddleIntermediate"]
transform = Transform3D(0.999086, 0.0425374, 0.00412627, -0.0425375, 0.980453, 0.192098, 0.00412574, -0.192098, 0.981367, -0.000406183, -0.0225408, 0.00183441)
mesh = SubResource("CapsuleMesh_3c2l2")
[node name="RightRingMetacarpal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm"]
[node name="RightRingMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.976499, 0.214625, 0.019623, -0.00559167, 0.116249, -0.993204, -0.215447, 0.969754, 0.114717, 0.130203, 0.206898, -0.0326614)
mesh = SubResource("CapsuleMesh_yo16l")
[node name="RightRingProximal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightRingMetacarpal"]
[node name="RightRingProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal"]
transform = Transform3D(0.9966, -0.0817662, 0.0101817, 0.0817662, 0.966114, -0.244825, 0.0101817, 0.244825, 0.969514, 0.00145102, -0.0458786, -0.00434448)
mesh = SubResource("CapsuleMesh_2uyrh")
[node name="RightRingIntermediate" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal"]
[node name="RightRingIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal"]
transform = Transform3D(0.99982, -0.0189111, -0.0014214, 0.0189111, 0.988593, 0.149417, -0.00142045, -0.149417, 0.988773, 0.000190943, -0.0277458, 0.00151117)
mesh = SubResource("CapsuleMesh_u1c6w")
[node name="RightRingDistal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal/RightRingIntermediate"]
[node name="RightRingDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal/RightRingIntermediate"]
transform = Transform3D(1, 0.000616185, 5.96549e-05, -0.00061623, 0.981621, 0.19084, 5.90358e-05, -0.19084, 0.981621, -4.97699e-06, -0.0180768, 0.00154756)
mesh = SubResource("CapsuleMesh_nnsu1")
[node name="RightPinkyMetacarpal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm"]
[node name="RightPinkyMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.984506, 0.0882317, -0.151536, -0.156128, 0.047664, -0.986586, -0.0798253, 0.994959, 0.060701, 0.145853, 0.203824, -0.0309396)
mesh = SubResource("CapsuleMesh_pn4qd")
[node name="RightPinkyProximal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightPinkyMetacarpal"]
[node name="RightPinkyProximal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal"]
transform = Transform3D(0.981501, -0.189586, 0.0266973, 0.189586, 0.942972, -0.273609, 0.0266976, 0.273609, 0.96147, 0.00234365, -0.038257, -0.00338273)
mesh = SubResource("CapsuleMesh_sy28p")
[node name="RightPinkyIntermediate" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal"]
[node name="RightPinkyIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal"]
transform = Transform3D(0.999901, -0.0140067, -0.00122491, 0.0140066, 0.98472, 0.17358, -0.00122508, -0.17358, 0.984819, 0.000132866, -0.0216809, 0.00164281)
mesh = SubResource("CapsuleMesh_dnlrb")
[node name="RightPinkyDistal" type="MeshInstance3D" parent="Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal/RightPinkyIntermediate"]
[node name="RightPinkyDistal" type="MeshInstance3D" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal/RightPinkyIntermediate"]
transform = Transform3D(0.999972, 0.00737919, 0.00080738, -0.00737915, 0.976307, 0.216265, 0.000807624, -0.216265, 0.976334, -5.24223e-05, -0.0163794, 0.00153229)
mesh = SubResource("CapsuleMesh_mtm4i")
[node name="CanvasLayer2" type="CanvasLayer" parent="."]
visible = false
[node name="Image" type="CanvasLayer" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport"]
layer = -1
[node name="Sprite2D" type="Sprite2D" parent="CanvasLayer2"]
material = ExtResource("12_vmkw8")
position = Vector2(500, 500)
scale = Vector2(10, 10)
texture = SubResource("GradientTexture2D_x2m6l")
[node name="Panel" type="Panel" parent="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Image" node_paths=PackedStringArray("tracker")]
material = ExtResource("4_ebu6v")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_rr3q0")
script = ExtResource("4_sgil3")
tracker = NodePath("../../../../../../UltraleapHandTracking")
distortion_texture = ExtResource("7_vascd")
raw_image = ExtResource("9_h7pse")
[node name="CSGBox3D" type="CSGBox3D" parent="."]
transform = Transform3D(100, 0, 0, 0, -4.37114e-06, -1, 0, 100, -4.37114e-08, 0, 10, 0)
material = ExtResource("15_3ed8b")
[node name="RightSubViewportContainer" type="SubViewportContainer" parent="Images/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
stretch = true
[connection signal="view_size_changed" from="." to="Camera3D" method="_on_view_size_changed"]
[connection signal="view_size_changed" from="." to="CanvasLayer/HBoxContainer/TextureRect" method="_on_view_size_changed"]
[connection signal="view_size_changed" from="." to="CanvasLayer/HBoxContainer/TextureRect2" method="_on_view_size_changed"]
[node name="SubViewport" type="SubViewport" parent="Images/HBoxContainer/RightSubViewportContainer"]
own_world_3d = true
world_3d = SubResource("World3D_30cj8")
handle_input_locally = false
size = Vector2i(576, 648)
render_target_update_mode = 4
[node name="Camera3D" type="Camera3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport"]
transform = Transform3D(-1, -1.50996e-07, 6.60024e-15, 0, -4.37114e-08, -1, 1.50996e-07, -1, 4.37114e-08, 0.033, 0, 0)
environment = SubResource("Environment_4mjh4")
fov = 106.0
near = 0.001
script = ExtResource("6_fmvxa")
materials = Array[ShaderMaterial]([ExtResource("17_6oesc")])
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Camera3D"]
[node name="Hands" type="Node3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport"]
script = ExtResource("8_uah46")
tracking = NodePath("../../../../../UltraleapHandTracking")
use_interpolated_frames = true
[node name="LeftHand" type="Node3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands"]
[node name="LeftArm" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand"]
transform = Transform3D(0.928001, -0.346447, -0.137075, -0.128382, 0.0480389, -0.990561, 0.349761, 0.936839, 0.000102695, -0.199097, 0.206055, 0.152054)
mesh = SubResource("CapsuleMesh_83waq")
[node name="LeftPalm" type="Node3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand"]
[node name="LeftThumbMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.246631, -0.615053, -0.748921, -0.953254, -0.0147457, -0.301811, 0.174587, 0.788348, -0.589939, -0.128127, 0.192121, 0.0205825)
mesh = SubResource("CapsuleMesh_o5gcj")
[node name="LeftThumbProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal"]
transform = Transform3D(0.971684, -0.235994, 0.0116717, 0.235994, 0.966874, -0.0972665, 0.0116692, 0.0972667, 0.99519, 0.0056477, -0.0231389, -0.00232763)
mesh = SubResource("CapsuleMesh_uj07d")
[node name="LeftThumbIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal"]
transform = Transform3D(0.999933, 0.0115872, 0.000412345, -0.0115873, 0.997402, 0.0711059, 0.000412717, -0.0711059, 0.997469, -0.000157043, -0.037434, 0.000962682)
mesh = SubResource("CapsuleMesh_j6wqi")
[node name="LeftThumbDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftThumbMetacarpal/LeftThumbProximal/LeftThumbIntermediate"]
transform = Transform3D(0.999924, 0.0122997, 6.88732e-05, -0.0122997, 0.999862, 0.0111714, 6.85304e-05, -0.0111715, 0.999937, -0.000109673, -0.0224483, 9.95249e-05)
mesh = SubResource("CapsuleMesh_gx52k")
[node name="LeftIndexMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.920796, -0.351825, -0.168387, -0.146033, 0.0893456, -0.985237, 0.361676, 0.931792, 0.030891, -0.118765, 0.204067, -0.0158058)
mesh = SubResource("CapsuleMesh_y5lbo")
[node name="LeftIndexProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal"]
transform = Transform3D(0.995428, 0.0952644, -0.00686568, -0.0952644, 0.985118, -0.143067, -0.00686571, 0.143067, 0.989689, -0.00156508, -0.0500568, -0.00234996)
mesh = SubResource("CapsuleMesh_u5cra")
[node name="LeftIndexIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal"]
transform = Transform3D(0.999955, 0.00944272, 0.000782929, -0.00944272, 0.986315, 0.164602, 0.000782091, -0.164602, 0.98636, -0.000105381, -0.0274207, 0.00183466)
mesh = SubResource("CapsuleMesh_hud78")
[node name="LeftIndexDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftIndexMetacarpal/LeftIndexProximal/LeftIndexIntermediate"]
transform = Transform3D(0.999588, -0.0285783, -0.00276972, 0.0285783, 0.980982, 0.191985, -0.00276955, -0.191985, 0.981394, 0.000272825, -0.0205106, 0.00183289)
mesh = SubResource("CapsuleMesh_15vi0")
[node name="LeftMiddleMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.974987, -0.222249, -0.00252551, 0.0133517, 0.0699075, -0.997464, 0.221862, 0.97248, 0.0711263, -0.131328, 0.208032, -0.0209381)
mesh = SubResource("CapsuleMesh_884yv")
[node name="LeftMiddleProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal"]
transform = Transform3D(0.975298, 0.219974, -0.0201218, -0.219974, 0.958907, -0.179188, -0.0201219, 0.179188, 0.983609, -0.00413054, -0.0501295, -0.0033651)
mesh = SubResource("CapsuleMesh_jbd03")
[node name="LeftMiddleIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal"]
transform = Transform3D(0.999978, 0.00656457, 0.000562455, -0.00656449, 0.98538, 0.170245, 0.000563354, -0.170245, 0.985402, -8.88109e-05, -0.0321045, 0.00230217)
mesh = SubResource("CapsuleMesh_b2yq4")
[node name="LeftMiddleDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftMiddleMetacarpal/LeftMiddleProximal/LeftMiddleIntermediate"]
transform = Transform3D(0.999126, -0.0415443, -0.00455535, 0.0415442, 0.975372, 0.21662, -0.0045562, -0.21662, 0.976245, 0.000399798, -0.0229201, 0.002087)
mesh = SubResource("CapsuleMesh_pvw3x")
[node name="LeftRingMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.994437, -0.0746316, 0.0743254, 0.078157, 0.0498008, -0.995696, 0.0706089, 0.995967, 0.0553568, -0.148493, 0.208353, -0.0227745)
mesh = SubResource("CapsuleMesh_mj0yp")
[node name="LeftRingProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal"]
transform = Transform3D(0.997261, 0.0733889, -0.00915674, -0.0733888, 0.966643, -0.245388, -0.00915743, 0.245388, 0.969382, -0.00133975, -0.046493, -0.00448087)
mesh = SubResource("CapsuleMesh_aj8d6")
[node name="LeftRingIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal"]
transform = Transform3D(0.999793, 0.0202755, 0.00160236, -0.0202754, 0.98737, 0.157129, 0.00160376, -0.157129, 0.987577, -0.000212997, -0.0286281, 0.0017647)
mesh = SubResource("CapsuleMesh_61kb8")
[node name="LeftRingDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftRingMetacarpal/LeftRingProximal/LeftRingIntermediate"]
transform = Transform3D(0.99999, 0.00453917, 0.000432035, -0.00452597, 0.976624, 0.214906, 0.000553579, -0.214906, 0.976634, -4.79221e-05, -0.0186928, 0.00190805)
mesh = SubResource("CapsuleMesh_q8ej2")
[node name="LeftPinkyMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm"]
transform = Transform3D(0.970349, 0.059013, 0.234392, 0.235304, -0.00892329, -0.971881, -0.0552621, 0.998217, -0.0225447, -0.163017, 0.203872, -0.0186913)
mesh = SubResource("CapsuleMesh_8hxcf")
[node name="LeftPinkyProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal"]
transform = Transform3D(0.988306, 0.15169, -0.0155462, -0.15169, 0.96764, -0.20165, -0.0155453, 0.201651, 0.979334, -0.00190479, -0.03885, -0.00253224)
mesh = SubResource("CapsuleMesh_chu0h")
[node name="LeftPinkyIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal"]
transform = Transform3D(0.999967, -0.00811745, -0.000837663, 0.00811745, 0.978894, 0.20421, -0.000837639, -0.20421, 0.978927, 7.8775e-05, -0.0220771, 0.00198543)
mesh = SubResource("CapsuleMesh_ek5ta")
[node name="LeftPinkyDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/LeftHand/LeftPalm/LeftPinkyMetacarpal/LeftPinkyProximal/LeftPinkyIntermediate"]
transform = Transform3D(0.999963, 0.00854993, 0.000962209, -0.00854997, 0.97495, 0.222259, 0.000962161, -0.222259, 0.974987, -6.29947e-05, -0.0168834, 0.00163205)
mesh = SubResource("CapsuleMesh_2kqg1")
[node name="RightHand" type="Node3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands"]
[node name="RightArm" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand"]
transform = Transform3D(0.633086, 0.758899, 0.152559, 0.211182, 0.0202787, -0.977236, -0.744718, 0.650892, -0.147428, 0.243868, 0.204395, 0.103209)
mesh = SubResource("CapsuleMesh_3idn1")
[node name="RightPalm" type="Node3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand"]
[node name="RightThumbMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.136539, 0.722682, 0.67756, 0.956999, 0.080491, -0.278701, -0.25595, 0.686478, -0.680616, 0.117662, 0.191586, 0.0146278)
mesh = SubResource("CapsuleMesh_evi5e")
[node name="RightThumbProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal"]
transform = Transform3D(0.973915, 0.226793, -0.00734438, -0.226793, 0.971847, -0.0638621, -0.00734586, 0.063862, 0.997932, -0.0053771, -0.0230416, -0.00151413)
mesh = SubResource("CapsuleMesh_yg1ei")
[node name="RightThumbIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal"]
transform = Transform3D(0.999376, -0.0352997, -0.000742555, 0.0352998, 0.998496, 0.0419445, -0.000739276, -0.0419445, 0.99912, 0.000463888, -0.0368274, 0.000550985)
mesh = SubResource("CapsuleMesh_4ca7c")
[node name="RightThumbDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightThumbMetacarpal/RightThumbProximal/RightThumbIntermediate"]
transform = Transform3D(0.999858, -0.0168108, 0.00022164, 0.0168107, 0.999514, -0.0262619, 0.000220001, 0.0262618, 0.999655, 0.000147164, -0.0218794, -0.000229731)
mesh = SubResource("CapsuleMesh_1bc4u")
[node name="RightIndexMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.842259, 0.475365, 0.254219, 0.194068, 0.172584, -0.965687, -0.502928, 0.862695, 0.0531077, 0.102263, 0.201164, -0.0206441)
mesh = SubResource("CapsuleMesh_yjqsy")
[node name="RightIndexProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal"]
transform = Transform3D(0.999667, -0.0256748, 0.00244968, 0.0256747, 0.981616, -0.189133, 0.0024513, 0.189133, 0.981948, 0.000415713, -0.0496469, -0.00306317)
mesh = SubResource("CapsuleMesh_j3lcc")
[node name="RightIndexIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal"]
transform = Transform3D(0.999996, -0.00299838, -0.000313576, 0.00299838, 0.978362, 0.206878, -0.000313532, -0.206878, 0.978367, 3.29465e-05, -0.0269501, 0.0022738)
mesh = SubResource("CapsuleMesh_i5m88")
[node name="RightIndexDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightIndexMetacarpal/RightIndexProximal/RightIndexIntermediate"]
transform = Transform3D(0.999853, 0.0170301, 0.00176276, -0.01703, 0.978632, 0.204911, 0.00176461, -0.204911, 0.978779, -0.000159994, -0.0201871, 0.00192538)
mesh = SubResource("CapsuleMesh_trt8t")
[node name="RightMiddleMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.929654, 0.355253, 0.0976667, 0.0481114, 0.145762, -0.988149, -0.365279, 0.923336, 0.118416, 0.11344, 0.205373, -0.0277658)
mesh = SubResource("CapsuleMesh_dukwl")
[node name="RightMiddleProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal"]
transform = Transform3D(0.983575, -0.179959, 0.0139558, 0.179959, 0.971714, -0.152924, 0.0139589, 0.152923, 0.988139, 0.00328472, -0.0497405, -0.00279084)
mesh = SubResource("CapsuleMesh_svsoj")
[node name="RightMiddleIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal"]
transform = Transform3D(0.999992, -0.00404462, -0.00037287, 0.00404434, 0.98301, 0.18351, -0.000375694, -0.18351, 0.983018, 5.32642e-05, -0.0312066, 0.00241873)
mesh = SubResource("CapsuleMesh_q3n4f")
[node name="RightMiddleDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightMiddleMetacarpal/RightMiddleProximal/RightMiddleIntermediate"]
transform = Transform3D(0.999086, 0.0425374, 0.00412627, -0.0425375, 0.980453, 0.192098, 0.00412574, -0.192098, 0.981367, -0.000406183, -0.0225408, 0.00183441)
mesh = SubResource("CapsuleMesh_3c2l2")
[node name="RightRingMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.976499, 0.214625, 0.019623, -0.00559167, 0.116249, -0.993204, -0.215447, 0.969754, 0.114717, 0.130203, 0.206898, -0.0326614)
mesh = SubResource("CapsuleMesh_yo16l")
[node name="RightRingProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal"]
transform = Transform3D(0.9966, -0.0817662, 0.0101817, 0.0817662, 0.966114, -0.244825, 0.0101817, 0.244825, 0.969514, 0.00145102, -0.0458786, -0.00434448)
mesh = SubResource("CapsuleMesh_2uyrh")
[node name="RightRingIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal"]
transform = Transform3D(0.99982, -0.0189111, -0.0014214, 0.0189111, 0.988593, 0.149417, -0.00142045, -0.149417, 0.988773, 0.000190943, -0.0277458, 0.00151117)
mesh = SubResource("CapsuleMesh_u1c6w")
[node name="RightRingDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightRingMetacarpal/RightRingProximal/RightRingIntermediate"]
transform = Transform3D(1, 0.000616185, 5.96549e-05, -0.00061623, 0.981621, 0.19084, 5.90358e-05, -0.19084, 0.981621, -4.97699e-06, -0.0180768, 0.00154756)
mesh = SubResource("CapsuleMesh_nnsu1")
[node name="RightPinkyMetacarpal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm"]
transform = Transform3D(0.984506, 0.0882317, -0.151536, -0.156128, 0.047664, -0.986586, -0.0798253, 0.994959, 0.060701, 0.145853, 0.203824, -0.0309396)
mesh = SubResource("CapsuleMesh_pn4qd")
[node name="RightPinkyProximal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal"]
transform = Transform3D(0.981501, -0.189586, 0.0266973, 0.189586, 0.942972, -0.273609, 0.0266976, 0.273609, 0.96147, 0.00234365, -0.038257, -0.00338273)
mesh = SubResource("CapsuleMesh_sy28p")
[node name="RightPinkyIntermediate" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal"]
transform = Transform3D(0.999901, -0.0140067, -0.00122491, 0.0140066, 0.98472, 0.17358, -0.00122508, -0.17358, 0.984819, 0.000132866, -0.0216809, 0.00164281)
mesh = SubResource("CapsuleMesh_dnlrb")
[node name="RightPinkyDistal" type="MeshInstance3D" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands/RightHand/RightPalm/RightPinkyMetacarpal/RightPinkyProximal/RightPinkyIntermediate"]
transform = Transform3D(0.999972, 0.00737919, 0.00080738, -0.00737915, 0.976307, 0.216265, 0.000807624, -0.216265, 0.976334, -5.24223e-05, -0.0163794, 0.00153229)
mesh = SubResource("CapsuleMesh_mtm4i")
[node name="Image" type="CanvasLayer" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport"]
layer = -1
[node name="Panel" type="Panel" parent="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Image" node_paths=PackedStringArray("tracker")]
material = ExtResource("17_6oesc")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_rr3q0")
script = ExtResource("4_sgil3")
side = 1
tracker = NodePath("../../../../../../UltraleapHandTracking")
distortion_texture = ExtResource("9_douml")
raw_image = ExtResource("14_drfhq")
[node name="HUD" parent="." node_paths=PackedStringArray("tracking") instance=ExtResource("3_2i584")]
layer = 100
tracking = NodePath("../UltraleapHandTracking")
[connection signal="current_device_tracking_mode_changed" from="." to="HUD" method="tracking_mode_changed"]
[connection signal="device_added" from="UltraleapHandTracking" to="." method="_on_hand_tracking_device_added"]
[connection signal="device_added" from="UltraleapHandTracking" to="HUD" method="on_device_added"]
[connection signal="device_removed" from="UltraleapHandTracking" to="." method="_on_hand_tracking_device_removed"]
[connection signal="device_removed" from="UltraleapHandTracking" to="HUD" method="on_device_removed"]
[connection signal="size_changed" from="Images/HBoxContainer/LeftSubViewportContainer/SubViewport" to="Images/HBoxContainer/LeftSubViewportContainer/SubViewport/Camera3D" method="_on_view_size_changed"]
[connection signal="size_changed" from="Images/HBoxContainer/RightSubViewportContainer/SubViewport" to="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Camera3D" method="_on_view_size_changed"]
[connection signal="device_selection" from="HUD" to="." method="_on_device_selection"]
[connection signal="device_selection" from="HUD" to="CanvasLayer/HBoxContainer/TextureRect" method="on_hud_device_selection"]
[connection signal="device_selection" from="HUD" to="CanvasLayer/HBoxContainer/TextureRect2" method="on_hud_device_selection"]
[connection signal="device_selection" from="HUD" to="Hands" method="on_hud_device_selection"]
[connection signal="device_selection" from="HUD" to="Images/HBoxContainer/RightSubViewportContainer/SubViewport/Hands" method="on_hud_device_selection"]
[connection signal="tracking_mode_request" from="HUD" to="UltraleapHandTracking" method="on_tracking_mode_request"]
[connection signal="undistort_toggled" from="HUD" to="." method="on_undistort_toggled"]
[connection signal="view_type_selected" from="HUD" to="." method="_on_hud_view_type_selected"]

View file

@ -0,0 +1,12 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://crj1x18yg0xsl"]
[ext_resource type="Shader" path="res://shaders/UltraleapCanvas.gdshader" id="1_ha4yc"]
[ext_resource type="Texture2D" uid="uid://dwx41gu1dkwgt" path="res://textures/RightDistortion.tres" id="2_ftovh"]
[ext_resource type="Texture2D" uid="uid://b7pxd4fx3yy1p" path="res://textures/RawRightImage.tres" id="3_oqg2a"]
[resource]
shader = ExtResource("1_ha4yc")
shader_parameter/undistort = true
shader_parameter/projection = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
shader_parameter/image = ExtResource("3_oqg2a")
shader_parameter/distortion = ExtResource("2_ftovh")

View file

@ -35,8 +35,8 @@ anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 276.0
offset_top = 550.0
offset_right = 276.0
offset_bottom = 550.0
offset_right = 2580.0
offset_bottom = 694.0
grow_horizontal = 2
grow_vertical = 2
pivot_offset = Vector2(276, 550)
@ -97,7 +97,7 @@ layout_mode = 2
layout_mode = 2
text = "FPS: 1"
[node name="CheckButton" type="CheckButton" parent="."]
[node name="UndistortToggle" type="CheckButton" parent="."]
offset_left = 18.0
offset_top = 64.0
offset_right = 140.0
@ -105,6 +105,21 @@ offset_bottom = 95.0
button_pressed = true
text = "Undistort"
[node name="OptionButton2" type="OptionButton" parent="."]
offset_left = 25.0
offset_top = 119.0
offset_right = 172.0
offset_bottom = 150.0
item_count = 3
selected = 0
popup/item_0/text = "Both"
popup/item_0/id = 0
popup/item_1/text = "Left"
popup/item_1/id = 1
popup/item_2/text = "Right"
popup/item_2/id = 2
[connection signal="item_selected" from="OptionButton" to="." method="button_item_selected"]
[connection signal="item_selected" from="Devices" to="." method="device_selected"]
[connection signal="toggled" from="CheckButton" to="." method="_on_undistort_button_toggled"]
[connection signal="toggled" from="UndistortToggle" to="." method="_on_undistort_button_toggled"]
[connection signal="item_selected" from="OptionButton2" to="." method="on_view_type_selected"]

View file

@ -2,5 +2,5 @@ extends Label
@export var prefix = "FPS:"
func _process(delta):
func _process(_delta):
text = prefix + " " + str(Performance.get_monitor(Performance.TIME_FPS))

View file

@ -12,6 +12,7 @@ extends CanvasLayer
signal tracking_mode_request(tracking_mode : UltraleapTypes.TrackingMode)
signal device_selection(serial : String)
signal undistort_toggled(enabled : bool)
signal view_type_selected(index : int)
var current_device : UltraleapDevice
@ -23,7 +24,7 @@ func _ready():
subtitle_animator.stop(false)
func _physics_process(delta):
func _physics_process(_delta):
if (current_device == null):
return
if Time.get_unix_time_from_system() - latest_update > 0.5:
@ -79,3 +80,7 @@ func tracking_mode_to_str(tracking_mode : UltraleapTypes.TrackingMode):
func _on_undistort_button_toggled(button_pressed):
emit_signal("undistort_toggled", button_pressed)
func on_view_type_selected(index):
emit_signal("view_type_selected", index)

View file

@ -1,4 +1,4 @@
extends TextureRect
extends CanvasItem
class_name ImagePuller
enum Side { Left, Right }
@ -8,25 +8,12 @@ enum Side { Left, Right }
@export var distortion_texture : Texture2D
@export var raw_image : Texture2D
var img : Image = Image.new()
var data_img : Image = Image.new()
var bg_data : PackedByteArray
var data : PackedByteArray
var last_size : Vector2i = Vector2i(0, 0)
var last_matrix_version = 999
var device_index : int = 0
var view_size : Vector2i
var image_size : Vector2i
func _process(_delta):
var length = min(view_size.x, view_size.y)
if length == 0:
return
if not Engine.is_editor_hint():
if tracker.devices.size() == 0:
@ -42,9 +29,8 @@ func _process(_delta):
image = device.get_right_image() if side == Side.Right else device.get_left_image()
# Get image size
image_size = image.get_size()
var image_size : Vector2i = image.get_size()
data = image.get_data()
flip_h = tracker.tracking_mode == UltraleapTypes.TrackingMode.Desktop
# Process the new distortion matrix if there's a new one
if image.get_matrix_version() != last_matrix_version:
@ -55,16 +41,8 @@ func _process(_delta):
if data.size() > 0:
data_img.set_data(image_size.x, image_size.y, false, Image.FORMAT_L8, data)
data_img.resize(length, length, Image.INTERPOLATE_NEAREST)
var x : int = view_size.x - length if side == Side.Left else 0
var y : int = (view_size.y - length) / 2
img.blit_rect(data_img, Rect2i(0, 0, length, length), Vector2(x, y))
last_size = image_size
texture.set_image(img)
if raw_image != null:
if raw_image != null and data_img.get_size() > Vector2i(0, 0):
raw_image.set_image(data_img)
@ -81,15 +59,3 @@ func process_distortion_matrix(matrix : PackedVector2Array):
var distortion_img : Image = Image.new()
distortion_img.set_data(64, 64, false, Image.FORMAT_RGF, matrix.to_byte_array())
distortion_texture.set_image(distortion_img)
func _on_view_size_changed(new_view_size : Vector2i):
view_size = new_view_size
view_size.x /= 2
_paint_black(view_size)
func _paint_black(surf_size : Vector2i):
bg_data.resize(surf_size.x * surf_size.y)
img.set_data(surf_size.x, surf_size.y, false, Image.FORMAT_L8, bg_data)
#img.convert(Image.FORMAT_RGBA8)

View file

@ -7,8 +7,9 @@ func _ready():
_update_projection(view_size)
func _on_view_size_changed(view_size):
_update_projection(view_size)
func _on_view_size_changed():
if get_viewport():
_update_projection(get_viewport().size)
func _update_projection(view_size):

View file

@ -1,24 +1,14 @@
extends Node3D
@export var tracking : UltraleapHandTracking
@export var camera : Camera3D
@export var hands : DebugHands
@export_node_path("CanvasLayer") var hud
@export var sky : ShaderMaterial
@export var materials_to_rectify : Array[Material]
@export_group("Camera positions")
@export_subgroup("Desktop")
@export var desktop_position : Vector3
@export var desktop_rotation : Vector3
@export_subgroup("HMD")
@export var hmd_position : Vector3
@export var hmd_rotation : Vector3
@export_subgroup("Screentop")
@export var screentop_position : Vector3
@export var screentop_rotation : Vector3
@export_group("Views")
@export var left_view : CanvasItem
@export var right_view : CanvasItem
signal view_size_changed(view_size : Vector2i)
signal current_device_tracking_mode_changed(tracking_mode : int)
var current_device : UltraleapDevice
var device_index : int
@ -42,8 +32,6 @@ func _on_device_selection(serial):
_close_device()
current_device = _get_device_from_serial(serial)
_open_device()
move_camera_based_on_tracking_mode(current_device.get_tracking_mode())
func _get_device_from_serial(serial : String):
@ -78,34 +66,21 @@ func _on_hand_tracking_device_removed(_device):
func _on_tracking_mode_changed(tracking_mode):
move_camera_based_on_tracking_mode(tracking_mode)
get_node(hud).tracking_mode_changed(tracking_mode)
func move_camera_based_on_tracking_mode(tracking_mode : UltraleapTypes.TrackingMode):
return
if (tracking_mode == UltraleapTypes.TrackingMode.HMD):
hands.position = Vector3(0, 0.4, 0.6)
hands.rotation = Vector3(deg_to_rad(90), deg_to_rad(180), 0)
camera.position = hands.position
camera.rotation = Vector3.ZERO
if (tracking_mode == UltraleapTypes.TrackingMode.Desktop):
hands.position = Vector3.ZERO
hands.rotation = Vector3.ZERO
camera.position = Vector3(0, 0.4, 0.6)
camera.rotation = Vector3(deg_to_rad(-30), 0, 0)
if (tracking_mode == UltraleapTypes.TrackingMode.Screentop):
hands.position = Vector3(0, 1, 0)
hands.rotation = Vector3(deg_to_rad(180), 0, 0)
camera.position = hands.position
camera.rotation = Vector3(deg_to_rad(-90), deg_to_rad(180), 0)
emit_signal("current_device_tracking_mode_changed", tracking_mode)
func on_undistort_toggled(enabled):
sky.set_shader_parameter("undistort", enabled)
for material in materials_to_rectify:
material.set_shader_parameter("undistort", enabled)
func deg_to_rad(vector : Vector3):
return Vector3(deg_to_rad(vector.x), deg_to_rad(vector.y), deg_to_rad(vector.z))
func _on_hud_view_type_selected(index):
if index == 0:
left_view.show()
right_view.show()
elif index == 1:
left_view.show()
right_view.hide()
elif index == 2:
left_view.hide()
right_view.show()

View file

@ -1,4 +1,5 @@
shader_type canvas_item;
render_mode unshaded;
#include "res://shaders/Ultraleap.gdshaderinc"
@ -16,5 +17,6 @@ void fragment() {
uv = get_projected_uv(uv, projection);
uv = get_rectified_uv(uv, distortion);
vec3 pixel = undistort_float * texture(image, uv).rgb + (1.0 - undistort_float) * texture(image, SCREEN_UV).rgb;
COLOR.rgb = pow(pixel, vec3(1.0));
//COLOR.rgb = pow(pixel, vec3(1.0));
COLOR.rgb = pixel;
}

View file

@ -13,5 +13,6 @@ void fragment() {
vec2 uv = get_projected_uv(SCREEN_UV, PROJECTION_MATRIX);
uv = get_rectified_uv(uv, distortion);
vec3 pixel = undistort_float * texture(image, uv).rgb + (1.0 - undistort_float) * texture(image, SCREEN_UV).rgb;
ALBEDO.rgb = pow(pixel, vec3(1.6));
//ALBEDO.rgb = pow(pixel, vec3(1.6));
ALBEDO.rgb = pixel;
}

View file

@ -0,0 +1,3 @@
[gd_resource type="ImageTexture" format=3 uid="uid://b7pxd4fx3yy1p"]
[resource]