Files
project-rr/characters/shortstack/shortstack_portrait_stand_native.tscn
Leonid PershinandClaude Opus 4.8 04cf5f90b0 ProjectRR — нативный прототип на ассетах ProjectR
- Все 189 скелетов Spine сконвертированы в нативные Godot Skeleton2D (.tscn), без Spine в рантайме
- Меню + сцены: подземелье (карта комнат), просмотр спрайтов, нативные анимации
- Кастомизация цвета (кожа/волосы/глаза) через шейдер
- Вытащенные текстуры/UI/шрифты + нарезка спрайтов из атласа
- Датасет комнат для LoRA, офлайн-инструменты конвертации в tools/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 16:29:21 +03:00

342 lines
16 KiB
Plaintext

[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/shortstack/spine/shortstack_portrait_stand.png" id="1_kth52"]
[sub_resource type="Animation" id="Animation_1cd5x"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g4s60"]
_data = {
&"animation": SubResource("Animation_1cd5x")
}
[node name="Native" type="Node2D" unique_id=477423355]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1391310746]
position = Vector2(640, 360)
scale = Vector2(3.84, -3.84)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=392226025]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=300406663]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="C_hairG_hairback$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=92979996]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-6.9999995, -11, -58, -11, -58.000004, 75, -7.0000033, 75)
uv = PackedVector2Array(52.999996, 146, 2, 146, 2, 60, 52.999996, 60)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armB_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1314253727]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 1
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(40.000004, -75, -3.9999967, -75, -3.999999, -23, 40, -23)
uv = PackedVector2Array(140, 140, 96, 140, 96, 87.99999, 140, 87.99999)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1570927994]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 2
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(23.000004, -75, -43.999996, -75, -44, -7, 23, -7)
uv = PackedVector2Array(124, 221.00002, 57, 221.00002, 57, 153, 124, 153)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairF_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=537913641]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 3
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(34, -18, -39, -18, -39.000004, 57, 33.999996, 57)
uv = PackedVector2Array(130, 298, 57, 298, 57, 223, 130, 223)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_earB_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1642067794]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 4
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(58, -20, 14.000001, -20, 14, 8, 58, 8)
uv = PackedVector2Array(260, 128, 216, 128, 216, 100, 260, 100)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairE_hairfront$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=860462702]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 5
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(37, -13, 22, -13, 22, 20, 37, 20)
uv = PackedVector2Array(171, 55.000004, 156, 55.000004, 156, 21.999998, 171, 21.999998)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_titsB_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=815649099]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 6
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(58.000004, -75, 7.0000033, -75, 7.0000014, -31, 58, -31)
uv = PackedVector2Array(230, 174.99998, 179.00002, 174.99998, 179.00002, 131, 230, 131)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_nippleB_nipple$0_#08" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1724523382]
modulate = Color(1, 0.6784314, 0.6117647, 1)
z_index = 7
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(58.000004, -75, 46.000004, -75, 46.000004, -52, 58.000004, -52)
uv = PackedVector2Array(296, 171.99998, 284, 171.99998, 284, 149, 296, 149)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_titsB_L" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1774361181]
z_index = 8
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(58.000004, -67, 15.000003, -67, 15.000002, -36, 58, -36)
uv = PackedVector2Array(298, 236.00002, 255, 236.00002, 255, 205, 298, 205)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_pregnant_pregnantsize$0_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1219771152]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 9
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(17.000004, -75, -9.999997, -75, -9.999997, -70, 17.000004, -70)
uv = PackedVector2Array(123, 151, 96, 151, 96, 146, 123, 146)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_legA1_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=450619950]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 10
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-43.999996, -75, -44.999996, -75, -44.999996, -74, -43.999996, -74)
uv = PackedVector2Array(256, 239.00002, 255, 239.00002, 255, 238, 256, 238)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=164215087]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 11
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-20.999996, -75, -57.999996, -75, -58, -19, -21, -19)
uv = PackedVector2Array(87.99999, 58, 51, 58, 51, 2, 87.99999, 2)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armA_L" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1624223991]
z_index = 12
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-36, -34, -46, -34, -46, -24, -36, -24)
uv = PackedVector2Array(270, 78.99999, 260, 78.99999, 260, 69, 270, 69)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armclothA2_#05" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1366155854]
modulate = Color(0.7137255, 0.6666667, 0.44705883, 1)
z_index = 13
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-28.999998, -60, -57.999996, -60, -58, -32, -28.999998, -32)
uv = PackedVector2Array(291, 128, 262, 128, 262, 100, 291, 100)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_titsA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1206056681]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 14
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(17.000004, -75, -46.999996, -75, -47, -30, 17.000002, -30)
uv = PackedVector2Array(195.99998, 230, 132, 230, 132, 185.00002, 195.99998, 185.00002)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_nippleA_nipple$0_#08" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1265563227]
modulate = Color(1, 0.6784314, 0.6117647, 1)
z_index = 15
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(5.0000033, -75, -34.999996, -75, -35, -29, 5.0000014, -29)
uv = PackedVector2Array(213.99998, 129, 174, 129, 174, 83, 213.99998, 83)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_titsA_L" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2105394987]
z_index = 16
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(5.0000033, -75, -44.999996, -75, -45, -33, 5.0000014, -33)
uv = PackedVector2Array(282, 171.99998, 231.99998, 171.99998, 231.99998, 130, 282, 130)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_milkA_milk$0" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=923890818]
z_index = 17
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-13.999997, -75, -18.999996, -75, -18.999998, -65, -13.999997, -65)
uv = PackedVector2Array(289, 147, 284, 147, 284, 137, 289, 137)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_bodyclothA_#06" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1737685708]
z_index = 18
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(32.000004, -59, -18.999998, -59, -19, -18, 32, -18)
uv = PackedVector2Array(177, 183, 126, 183, 126, 142, 177, 142)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_headA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=29150729]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 19
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(33, -25, -27.999998, -25, -28.000002, 41, 33, 41)
uv = PackedVector2Array(192.99998, 298, 132, 298, 132, 231.99998, 192.99998, 231.99998)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_earA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1570884029]
modulate = Color(0.4862745, 0.69411767, 0.3372549, 1)
z_index = 20
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-14.999999, -20, -58, -20, -58, 9, -15, 9)
uv = PackedVector2Array(298, 203.00002, 255, 203.00002, 255, 174, 298, 174)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_eyeB2" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2137324814]
z_index = 21
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(29, -6, -17, -6, -17, 7, 29, 7)
uv = PackedVector2Array(153.99998, 55.000004, 108, 55.000004, 108, 42, 153.99998, 42)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_eyeB1_#01" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1731099094]
modulate = Color(0.8509804, 0.5411765, 0.3882353, 1)
z_index = 22
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(33, -6, -21, -6, -21, 11, 33, 11)
uv = PackedVector2Array(109, 82, 55.000004, 82, 55.000004, 65, 109, 65)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_faceB2" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=32987571]
z_index = 23
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(17, -21, -7.999999, -21, -7.9999995, -8, 17, -8)
uv = PackedVector2Array(297, 83, 272, 83, 272, 70, 297, 70)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_faceB1_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=384572646]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 24
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(32, 12, -11.000001, 12, -11.000001, 22, 31.999998, 22)
uv = PackedVector2Array(258, 78.99999, 214.99998, 78.99999, 214.99998, 69, 258, 69)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairD_hairfront$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1433500807]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 25
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(-19, -11, -35, -11, -35, 23, -19.000002, 23)
uv = PackedVector2Array(105.99999, 63, 90, 63, 90, 29, 105.99999, 29)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairC_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=115000305]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 26
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(49, -6, 19, -6, 18.999998, 49, 48.999996, 49)
uv = PackedVector2Array(171.99998, 140, 142, 140, 142, 85, 171.99998, 85)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairB_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=539089231]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 27
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(10, -3, -51, -3, -51.000004, 54, 9.999998, 54)
uv = PackedVector2Array(256, 298, 195, 298, 195, 241, 256, 241)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_hairA_hairfront$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1162852318]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 28
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(38, -1, -9, -1, -9.000003, 55, 37.999996, 55)
uv = PackedVector2Array(49, 58, 2, 58, 2, 2, 49, 2)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_eyeA_#01" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1914309743]
modulate = Color(0.8509804, 0.5411765, 0.3882353, 1)
z_index = 29
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(33, -6, -21, -6, -21, 11, 33, 11)
uv = PackedVector2Array(270, 97.99999, 216, 97.99999, 216, 81, 270, 81)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_faceA2" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1787281742]
z_index = 30
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(17, -21, -7.999999, -21, -7.9999995, -8, 17, -8)
uv = PackedVector2Array(297, 97.99999, 272, 97.99999, 272, 85, 297, 85)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_faceA1_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1316350853]
modulate = Color(0.18039216, 0.29803923, 0.19607843, 1)
z_index = 31
texture = ExtResource("1_kth52")
skeleton = NodePath("..")
polygon = PackedVector2Array(32, 12, -11.000001, 12, -11.000001, 22, 31.999998, 22)
uv = PackedVector2Array(213, 81, 170, 81, 170, 71, 213, 71)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(2, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=760130730]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_g4s60")