ProjectRR — нативный прототип на ассетах ProjectR

- Все 189 скелетов Spine сконвертированы в нативные Godot Skeleton2D (.tscn), без Spine в рантайме
- Меню + сцены: подземелье (карта комнат), просмотр спрайтов, нативные анимации
- Кастомизация цвета (кожа/волосы/глаза) через шейдер
- Вытащенные текстуры/UI/шрифты + нарезка спрайтов из атласа
- Датасет комнат для LoRA, офлайн-инструменты конвертации в tools/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Leonid Pershin
2026-08-03 16:29:21 +03:00
co-authored by Claude Opus 4.8
commit 04cf5f90b0
2193 changed files with 360105 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_baby.png" id="1_lpufo"]
[sub_resource type="Animation" id="Animation_f4clr"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0huub"]
_data = {
&"animation": SubResource("Animation_f4clr")
}
[node name="Native" type="Node2D" unique_id=624959541]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1303578578]
position = Vector2(596.0399, 400.19775)
scale = Vector2(11.933129, -11.933129)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1713064384]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1237049933]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="BabyB_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=720956508]
texture = ExtResource("1_lpufo")
skeleton = NodePath("..")
polygon = PackedVector2Array(-24.22212, 12.42406, -20.63627, 16.5125, -16.35433, 17.66073, -7.522231, 18.24291, -4.024691, 17.28302, 0.83280945, 12.55472, 9.61414, 7.48172, 12.18867, 3.59915, 14.23861, -1.20219, 13.94568, -5.97163, 9.255491, -14.08906, 2.0385706, -16.02162, -1.8049693, -15.96008, -6.6989594, -14.5544, -20.81525, -6.38441, -22.37441, -0.5531, -22.0868, 3.56079, -24.59612, 4.99905, -25.81384, 9.60414)
uv = PackedVector2Array(58.97699, 2.3700562, 64.31061, 3.4312744, 67.445984, 6.5654297, 72.36621, 13.923157, 73.28369, 17.432068, 71.617615, 24.00293, 71.61493, 34.144287, 69.539795, 38.315186, 66.40668, 42.49115, 62.12976, 44.622192, 52.75476, 44.61908, 47.472656, 39.335327, 45.604187, 35.975952, 44.374542, 31.03479, 44.391815, 14.724731, 48.662292, 10.458801, 52.368835, 8.65094, 52.35974, 5.758667, 55.739014, 2.4015503)
polygons = [PackedInt32Array(16, 17, 18), PackedInt32Array(3, 16, 2), PackedInt32Array(5, 3, 4), PackedInt32Array(16, 18, 0), PackedInt32Array(1, 16, 0), PackedInt32Array(16, 1, 2), PackedInt32Array(3, 5, 16), PackedInt32Array(14, 5, 13), PackedInt32Array(5, 12, 13), PackedInt32Array(5, 15, 16), PackedInt32Array(5, 14, 15), PackedInt32Array(5, 6, 12), PackedInt32Array(6, 7, 12), PackedInt32Array(11, 12, 7), PackedInt32Array(7, 9, 11), PackedInt32Array(9, 10, 11), PackedInt32Array(7, 8, 9)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="BabyA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1003692793]
z_index = 1
texture = ExtResource("1_lpufo")
skeleton = NodePath("..")
polygon = PackedVector2Array(-6.4700704, 11.1277, -3.8404708, 15.72608, 0.17129913, 19.87942, 10.920399, 22.75879, 17.837759, 22.36506, 27.60789, 16.73708, 30.91719, 12.98452, 33.18158, 4.66843, 32.30855, -0.1791, 27.06319, -9.24791, 23.16436, -11.83216, 14.732061, -14.10332, 3.9622407, -15.11733, -0.48965946, -12.28344, -6.06632, 1.45389, -7.3769803, 6.30883)
uv = PackedVector2Array(19.72821, 5.3875732, 25.025269, 5.3656616, 30.628052, 6.7633667, 38.496216, 14.63269, 41.61389, 20.82013, 41.625, 32.095276, 40.029846, 36.837524, 33.960022, 42.956543, 29.32544, 44.624268, 18.848938, 44.61615, 14.661438, 42.53174, 8.478516, 36.364685, 2.215454, 27.5448, 2.4436646, 22.2724, 11.552307, 10.574219, 15.10144, 7.0116577)
polygons = [PackedInt32Array(11, 13, 14), PackedInt32Array(12, 13, 11), PackedInt32Array(5, 11, 4), PackedInt32Array(4, 11, 3), PackedInt32Array(14, 3, 11), PackedInt32Array(5, 10, 11), PackedInt32Array(14, 15, 0), PackedInt32Array(14, 0, 1), PackedInt32Array(3, 1, 2), PackedInt32Array(1, 3, 14), PackedInt32Array(9, 10, 8), PackedInt32Array(6, 7, 5), PackedInt32Array(10, 5, 8), PackedInt32Array(7, 8, 5)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1024410934]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_0huub")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_fetus_body.png" id="1_lgyxl"]
[sub_resource type="Animation" id="Animation_cb7ji"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_8kdfb"]
_data = {
&"animation": SubResource("Animation_cb7ji")
}
[node name="Native" type="Node2D" unique_id=459166671]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1582844396]
position = Vector2(660.4403, 442.65265)
scale = Vector2(13.632449, -13.632449)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1246612677]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1384114334]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="BabyB_fetalstage$0_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=716552441]
texture = ExtResource("1_lgyxl")
skeleton = NodePath("..")
polygon = PackedVector2Array(-1.3515112, 27.189, 3.9821088, 26.12778, 7.117479, 22.99363, 12.037709, 15.6359, 12.955189, 12.12699, 11.28911, 5.55613, 11.28643, -4.58523, 9.21129, -8.75613, 6.0781703, -12.93209, 1.8012607, -15.06313, -7.5737395, -15.06002, -12.85585, -9.77627, -14.72432, -6.41689, -15.95396, -1.47573, -15.936691, 14.83433, -11.666211, 19.10026, -7.959671, 20.90812, -7.968761, 23.80039, -4.589491, 27.15751)
uv = PackedVector2Array(16.97699, 2.3700562, 22.310608, 3.4312744, 25.445984, 6.5654297, 30.36621, 13.923157, 31.283691, 17.432068, 29.617615, 24.00293, 29.61493, 34.144287, 27.539795, 38.315186, 24.406677, 42.49115, 20.12976, 44.622192, 10.754761, 44.61908, 5.4726563, 39.335327, 3.604187, 35.975952, 2.3745422, 31.03479, 2.3918152, 14.724731, 6.6622925, 10.458801, 10.368835, 8.65094, 10.359741, 5.758667, 13.739014, 2.4015503)
polygons = [PackedInt32Array(16, 17, 18), PackedInt32Array(3, 16, 2), PackedInt32Array(5, 3, 4), PackedInt32Array(16, 18, 0), PackedInt32Array(1, 16, 0), PackedInt32Array(16, 1, 2), PackedInt32Array(3, 5, 16), PackedInt32Array(14, 5, 13), PackedInt32Array(5, 12, 13), PackedInt32Array(5, 15, 16), PackedInt32Array(5, 14, 15), PackedInt32Array(5, 6, 12), PackedInt32Array(6, 7, 12), PackedInt32Array(11, 12, 7), PackedInt32Array(7, 9, 11), PackedInt32Array(9, 10, 11), PackedInt32Array(7, 8, 9)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=409796301]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_8kdfb")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_fetus_head.png" id="1_n16yr"]
[sub_resource type="Animation" id="Animation_3rso0"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_8td7d"]
_data = {
&"animation": SubResource("Animation_3rso0")
}
[node name="Native" type="Node2D" unique_id=1787892455]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1464098984]
position = Vector2(513.9106, 236.1644)
scale = Vector2(14.671959, -14.671959)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1813785223]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=347202445]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="BabyA_fetalstage$0_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=766737398]
texture = ExtResource("1_n16yr")
skeleton = NodePath("..")
polygon = PackedVector2Array(6.4018397, 11.1671, 11.698939, 11.18899, 17.30173, 9.79136, 25.16989, 1.92205, 28.28759, -4.26542, 28.29869, -15.5406, 26.70352, -20.28282, 20.633772, -26.40188, 15.999171, -28.06957, 5.522671, -28.06136, 1.3352312, -25.97701, -4.847799, -19.81, -11.110879, -10.99007, -10.8826, -5.71766, -1.7740502, 5.98053, 1.7751096, 9.54307)
uv = PackedVector2Array(19.72821, 2.3875732, 25.025269, 2.3656616, 30.628052, 3.7633667, 38.496216, 11.63269, 41.61389, 17.82013, 41.625, 29.095276, 40.029846, 33.837524, 33.960022, 39.956543, 29.32544, 41.624268, 18.848938, 41.61615, 14.661438, 39.53174, 8.478516, 33.364685, 2.215454, 24.5448, 2.4436646, 19.2724, 11.552307, 7.5742188, 15.10144, 4.0116577)
polygons = [PackedInt32Array(11, 13, 14), PackedInt32Array(12, 13, 11), PackedInt32Array(5, 11, 4), PackedInt32Array(4, 11, 3), PackedInt32Array(14, 3, 11), PackedInt32Array(5, 10, 11), PackedInt32Array(14, 15, 0), PackedInt32Array(14, 0, 1), PackedInt32Array(3, 1, 2), PackedInt32Array(1, 3, 14), PackedInt32Array(9, 10, 8), PackedInt32Array(6, 7, 5), PackedInt32Array(10, 5, 8), PackedInt32Array(7, 8, 5)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1515759723]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_8td7d")
+47
View File
@@ -0,0 +1,47 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_fetus.png" id="1_mtar6"]
[sub_resource type="Animation" id="Animation_yr8dp"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_22sy7"]
_data = {
&"animation": SubResource("Animation_yr8dp")
}
[node name="Native" type="Node2D" unique_id=732512873]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1214989800]
position = Vector2(575.66095, 355.41058)
scale = Vector2(10.423723, -10.423723)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1242630032]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=419145843]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="BabyB_fetalstage$0_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1939577369]
texture = ExtResource("1_mtar6")
skeleton = NodePath("..")
polygon = PackedVector2Array(-1.3515112, 27.189, 3.9821088, 26.12778, 7.117479, 22.99363, 12.037709, 15.6359, 12.955189, 12.12699, 11.28911, 5.55613, 11.28643, -4.58523, 9.21129, -8.75613, 6.0781703, -12.93209, 1.8012607, -15.06313, -7.5737395, -15.06002, -12.85585, -9.77627, -14.72432, -6.41689, -15.95396, -1.47573, -15.936691, 14.83433, -11.666211, 19.10026, -7.959671, 20.90812, -7.968761, 23.80039, -4.589491, 27.15751)
uv = PackedVector2Array(58.97699, 2.3700562, 64.31061, 3.4312744, 67.445984, 6.5654297, 72.36621, 13.923157, 73.28369, 17.432068, 71.617615, 24.00293, 71.61493, 34.144287, 69.539795, 38.315186, 66.40668, 42.49115, 62.12976, 44.622192, 52.75476, 44.61908, 47.472656, 39.335327, 45.604187, 35.975952, 44.374542, 31.03479, 44.391815, 14.724731, 48.662292, 10.458801, 52.368835, 8.65094, 52.35974, 5.758667, 55.739014, 2.4015503)
polygons = [PackedInt32Array(16, 17, 18), PackedInt32Array(3, 16, 2), PackedInt32Array(5, 3, 4), PackedInt32Array(16, 18, 0), PackedInt32Array(1, 16, 0), PackedInt32Array(16, 1, 2), PackedInt32Array(3, 5, 16), PackedInt32Array(14, 5, 13), PackedInt32Array(5, 12, 13), PackedInt32Array(5, 15, 16), PackedInt32Array(5, 14, 15), PackedInt32Array(5, 6, 12), PackedInt32Array(6, 7, 12), PackedInt32Array(11, 12, 7), PackedInt32Array(7, 9, 11), PackedInt32Array(9, 10, 11), PackedInt32Array(7, 8, 9)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="BabyA_fetalstage$0_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1521818735]
z_index = 1
texture = ExtResource("1_mtar6")
skeleton = NodePath("..")
polygon = PackedVector2Array(6.4018397, 11.1671, 11.698939, 11.18899, 17.30173, 9.79136, 25.16989, 1.92205, 28.28759, -4.26542, 28.29869, -15.5406, 26.70352, -20.28282, 20.633772, -26.40188, 15.999171, -28.06957, 5.522671, -28.06136, 1.3352312, -25.97701, -4.847799, -19.81, -11.110879, -10.99007, -10.8826, -5.71766, -1.7740502, 5.98053, 1.7751096, 9.54307)
uv = PackedVector2Array(19.72821, 5.3875732, 25.025269, 5.3656616, 30.628052, 6.7633667, 38.496216, 14.63269, 41.61389, 20.82013, 41.625, 32.095276, 40.029846, 36.837524, 33.960022, 42.956543, 29.32544, 44.624268, 18.848938, 44.61615, 14.661438, 42.53174, 8.478516, 36.364685, 2.215454, 27.5448, 2.4436646, 22.2724, 11.552307, 10.574219, 15.10144, 7.0116577)
polygons = [PackedInt32Array(11, 13, 14), PackedInt32Array(12, 13, 11), PackedInt32Array(5, 11, 4), PackedInt32Array(4, 11, 3), PackedInt32Array(14, 3, 11), PackedInt32Array(5, 10, 11), PackedInt32Array(14, 15, 0), PackedInt32Array(14, 0, 1), PackedInt32Array(3, 1, 2), PackedInt32Array(1, 3, 14), PackedInt32Array(9, 10, 8), PackedInt32Array(6, 7, 5), PackedInt32Array(10, 5, 8), PackedInt32Array(7, 8, 5)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1740353769]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_22sy7")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_left_body.png" id="1_b8ccx"]
[sub_resource type="Animation" id="Animation_aw0hx"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ocq0m"]
_data = {
&"animation": SubResource("Animation_aw0hx")
}
[node name="Native" type="Node2D" unique_id=355360230]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1669280028]
position = Vector2(707.5597, 163.63208)
scale = Vector2(15.743565, -15.743565)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1302627722]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1355505912]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=248360973]
texture = ExtResource("1_b8ccx")
skeleton = NodePath("..")
polygon = PackedVector2Array(18.05194, 4.9483, 18.067081, -23.16284, -6.2595787, -29.8941, -26.6496, -9.43146)
uv = PackedVector2Array(47.051952, 2.0516968, 47.067078, 30.162811, 22.74038, 36.89415, 2.3503685, 16.431503)
polygons = [PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=844916930]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_ocq0m")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_left_head.png" id="1_fq8ld"]
[sub_resource type="Animation" id="Animation_4jm61"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_thcup"]
_data = {
&"animation": SubResource("Animation_4jm61")
}
[node name="Native" type="Node2D" unique_id=2084305987]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1676677466]
position = Vector2(509.53018, 482.5794)
scale = Vector2(11.636964, -11.636964)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=545166432]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1419541036]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="head_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2012225221]
texture = ExtResource("1_fq8ld")
skeleton = NodePath("..")
polygon = PackedVector2Array(35.40454, 21.76181, 17.65179, -13.97603, -12.981199, -14.2151, -4.3984413, 35.28235)
uv = PackedVector2Array(50.40548, 16.239304, 32.652763, 51.977104, 2.0197525, 52.2162, 10.602486, 2.7187805)
polygons = [PackedInt32Array(1, 3, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=2073645008]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_thcup")
@@ -0,0 +1,47 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_left.png" id="1_7okop"]
[sub_resource type="Animation" id="Animation_yjdu0"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jqv6e"]
_data = {
&"animation": SubResource("Animation_yjdu0")
}
[node name="Native" type="Node2D" unique_id=1578704678]
[node name="SpineRoot" type="Node2D" parent="." unique_id=305475694]
position = Vector2(601.3139, 383.80945)
scale = Vector2(8.837547, -8.837547)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=63091173]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=945527152]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="baby_body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1427873300]
texture = ExtResource("1_7okop")
skeleton = NodePath("..")
polygon = PackedVector2Array(18.05194, 4.9483, 18.067081, -23.16284, -6.2595787, -29.8941, -26.6496, -9.43146)
uv = PackedVector2Array(47.052025, 2.0516663, 47.06714, 30.162846, 22.74044, 36.894108, 2.3503876, 16.431492)
polygons = [PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="baby_head_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1774549501]
z_index = 1
texture = ExtResource("1_7okop")
skeleton = NodePath("..")
polygon = PackedVector2Array(35.40454, 21.76181, 17.65179, -13.97603, -12.981199, -14.2151, -4.3984413, 35.28235)
uv = PackedVector2Array(50.40548, 53.239265, 32.652763, 88.977165, 2.0197525, 89.21625, 10.602486, 39.718746)
polygons = [PackedInt32Array(1, 3, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1662146272]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_jqv6e")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_right_body.png" id="1_7x4av"]
[sub_resource type="Animation" id="Animation_tax6h"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_sbn3g"]
_data = {
&"animation": SubResource("Animation_tax6h")
}
[node name="Native" type="Node2D" unique_id=314093387]
[node name="SpineRoot" type="Node2D" parent="." unique_id=679494415]
position = Vector2(579.9116, 60.318928)
scale = Vector2(15.429341, -15.429341)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=805932432]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1079818798]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1949708393]
texture = ExtResource("1_7x4av")
skeleton = NodePath("..")
polygon = PackedVector2Array(24.018562, -32.09669, -8.779638, -38.08854, -16.22972, -5.21896, 18.45294, -0.75707)
uv = PackedVector2Array(37.06482, 36.9516, 3.7243652, 37.157135, 2.0951462, 3.4931946, 37.02568, 5.1216125)
polygons = [PackedInt32Array(1, 2, 3), PackedInt32Array(1, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=859274017]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_sbn3g")
@@ -0,0 +1,38 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_right_head.png" id="1_1fhya"]
[sub_resource type="Animation" id="Animation_qgjfa"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_32stn"]
_data = {
&"animation": SubResource("Animation_qgjfa")
}
[node name="Native" type="Node2D" unique_id=2035234422]
[node name="SpineRoot" type="Node2D" parent="." unique_id=790701560]
position = Vector2(669.0725, 418.00403)
scale = Vector2(10.145827, -10.145827)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=926962901]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1996407557]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="head_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=721012348]
texture = ExtResource("1_1fhya")
skeleton = NodePath("..")
polygon = PackedVector2Array(24.7469, 5.47355, -0.13018902, -22.66902, -30.47783, -2.32667, -4.6263213, 34.10309)
uv = PackedVector2Array(58.303894, 36.08136, 28.917725, 59.4765, 2.5636597, 34.17334, 34.34845, 2.7861328)
polygons = [PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1509769920]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_32stn")
@@ -0,0 +1,47 @@
[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/baby/spine/human_suckle_right.png" id="1_bsvpa"]
[sub_resource type="Animation" id="Animation_argnc"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wv4bm"]
_data = {
&"animation": SubResource("Animation_argnc")
}
[node name="Native" type="Node2D" unique_id=1084145542]
[node name="SpineRoot" type="Node2D" parent="." unique_id=578865117]
position = Vector2(662.86285, 344.10052)
scale = Vector2(7.9787645, -7.9787645)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1596070986]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=717602394]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="baby_head_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=610486273]
texture = ExtResource("1_bsvpa")
skeleton = NodePath("..")
polygon = PackedVector2Array(24.7469, 5.47355, -0.13018902, -22.66902, -30.47783, -2.32667, -4.6263213, 34.10309)
uv = PackedVector2Array(58.303894, 36.08136, 28.917725, 59.4765, 2.5636597, 34.17334, 34.34845, 2.7861328)
polygons = [PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="baby_body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1721081077]
z_index = 1
texture = ExtResource("1_bsvpa")
skeleton = NodePath("..")
polygon = PackedVector2Array(24.018562, -32.09669, -8.779638, -38.08854, -16.22972, -5.21896, 18.45294, -0.75707)
uv = PackedVector2Array(96.06482, 58.951538, 62.724365, 59.157104, 61.095154, 25.493164, 96.025696, 27.121582)
polygons = [PackedInt32Array(1, 2, 3), PackedInt32Array(1, 3, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1465002324]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_wv4bm")
@@ -0,0 +1,9 @@
human_baby.png
size:128,64
filter:Linear,Linear
BabyA_0
bounds:2,5,40,40
offsets:516,173,1080,1080
BabyB_0
bounds:44,2,30,43
offsets:511,186,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvix3y7jhxxmt"
path="res://.godot/imported/human_baby.png-0e948b0781ccee140fa9a846e26b5393.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_baby.png"
dest_files=["res://.godot/imported/human_baby.png-0e948b0781ccee140fa9a846e26b5393.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,9 @@
human_fetus.png
size:128,64
filter:Linear,Linear
BabyA_0
bounds:2,5,40,40
offsets:516,173,1080,1080
BabyB_0
bounds:44,2,30,43
offsets:511,186,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3wg2rh8do20s"
path="res://.godot/imported/human_fetus.png-f9e2c95e64c3246a2500e2643ab0ac6c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_fetus.png"
dest_files=["res://.godot/imported/human_fetus.png-f9e2c95e64c3246a2500e2643ab0ac6c.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,6 @@
human_fetus_body.png
size:64,64
filter:Linear,Linear
BabyB_0
bounds:2,2,30,43
offsets:511,186,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://pvcuhhdpmd0r"
path="res://.godot/imported/human_fetus_body.png-741b0adccb372fdbdc12d323a792c057.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_fetus_body.png"
dest_files=["res://.godot/imported/human_fetus_body.png-741b0adccb372fdbdc12d323a792c057.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,6 @@
human_fetus_head.png
size:64,64
filter:Linear,Linear
BabyA_0
bounds:2,2,40,40
offsets:516,173,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqnsoqxgou6aw"
path="res://.godot/imported/human_fetus_head.png-5566bcb772a1281dec8bbb0c4865efa9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_fetus_head.png"
dest_files=["res://.godot/imported/human_fetus_head.png-5566bcb772a1281dec8bbb0c4865efa9.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,9 @@
human_suckle_left.png
size:56,92
filter:Linear,Linear
B_bodyB_oni
bounds:2,2,46,35
offsets:573,238,1080,1080
B_headB_slave
bounds:2,39,49,51
offsets:587,253,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3h51u864xeju"
path="res://.godot/imported/human_suckle_left.png-bfb7fc422de7a99bfeb3985a8dfec967.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_left.png"
dest_files=["res://.godot/imported/human_suckle_left.png-bfb7fc422de7a99bfeb3985a8dfec967.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,6 @@
human_suckle_left_body.png
size:52,40
filter:Linear,Linear
B_bodyB_oni
bounds:2,2,46,35
offsets:573,238,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8xjesma7ejay"
path="res://.godot/imported/human_suckle_left_body.png-ee542169d3d9e41ff89285d4b41db7f1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_left_body.png"
dest_files=["res://.godot/imported/human_suckle_left_body.png-ee542169d3d9e41ff89285d4b41db7f1.ctex"]
[params]
compress/mode=0
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=false
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=1
@@ -0,0 +1,6 @@
human_suckle_left_head.png
size:56,56
filter:Linear,Linear
B_headB_slave
bounds:2,2,49,51
offsets:587,253,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d23flhgl0nirk"
path="res://.godot/imported/human_suckle_left_head.png-3883093d41b506ca260a98c7a812a0df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_left_head.png"
dest_files=["res://.godot/imported/human_suckle_left_head.png-3883093d41b506ca260a98c7a812a0df.ctex"]
[params]
compress/mode=0
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=false
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=1
@@ -0,0 +1,9 @@
human_suckle_right.png
size:128,64
filter:Linear,Linear
B_bodyA_slave
bounds:61,25,36,35
offsets:527,229,1080,1080
B_headA_slave
bounds:2,2,57,58
offsets:513,243,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://docmoda0rfmrm"
path="res://.godot/imported/human_suckle_right.png-4ad17ffade1e8df5077c45a977672fb0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_right.png"
dest_files=["res://.godot/imported/human_suckle_right.png-4ad17ffade1e8df5077c45a977672fb0.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -0,0 +1,6 @@
human_suckle_right_body.png
size:40,40
filter:Linear,Linear
B_bodyA_slave
bounds:2,3,36,35
offsets:527,229,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2s35hvqe5bbh"
path="res://.godot/imported/human_suckle_right_body.png-413288a46e5563196af950a460c79a57.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_right_body.png"
dest_files=["res://.godot/imported/human_suckle_right_body.png-413288a46e5563196af950a460c79a57.ctex"]
[params]
compress/mode=0
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=false
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=1
@@ -0,0 +1,6 @@
human_suckle_right_head.png
size:64,64
filter:Linear,Linear
B_headA_slave
bounds:2,2,57,58
offsets:513,243,1080,1080
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bx05iy0rihem1"
path="res://.godot/imported/human_suckle_right_head.png-aacdcdee830e4f39effbb7b5d0edf1e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://characters/baby/spine/human_suckle_right_head.png"
dest_files=["res://.godot/imported/human_suckle_right_head.png-aacdcdee830e4f39effbb7b5d0edf1e9.ctex"]
[params]
compress/mode=0
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=false
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=1