diff --git a/.gitignore b/.gitignore index 68f29fe..ea80a45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ - -tests/gltf_export/.import/ - -tests/blend_export/.import/ - -tests/blend_export/.godot/imported/ +.godot +.import tests/blend_export/**/*.import diff --git a/tests/gltf_skeleton_tests/TestModels.tscn b/tests/gltf_skeleton_tests/TestModels.tscn new file mode 100644 index 0000000..2a09d57 --- /dev/null +++ b/tests/gltf_skeleton_tests/TestModels.tscn @@ -0,0 +1,304 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://gltf_tests/modified_bone_animation_test.glb" type="PackedScene" id=1] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCaseV2Animated.glb" type="PackedScene" id=2] +[ext_resource path="res://gltf_tests/duplicate_skinned_mesh_combined.glb" type="PackedScene" id=3] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV2.glb" type="PackedScene" id=4] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb" type="PackedScene" id=5] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthers.glb" type="PackedScene" id=6] +[ext_resource path="res://gltf_tests/MeshSkinnedToItself.glb" type="PackedScene" id=7] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb" type="PackedScene" id=8] +[ext_resource path="res://gltf_tests/NestedSkeletonReproV3.glb" type="PackedScene" id=9] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCaseV2WithBody.glb" type="PackedScene" id=10] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCase_renamemesh.glb" type="PackedScene" id=11] +[ext_resource path="res://gltf_tests/DirectParentedSkeletons.glb" type="PackedScene" id=12] + +[sub_resource type="AnimationNodeAnimation" id="AutoplayA_01"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeAnimation" id="AutoplayA_02"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayA_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayA_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayA"] +states/state_1/node = SubResource( "AutoplayA_01" ) +states/state_2/node = SubResource( "AutoplayA_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayA_03" ), &"state_2", &"state_1", SubResource( "AutoplayA_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayB_01"] +filters = [] +animation = &"ArmatureAnimation" +[sub_resource type="AnimationNodeAnimation" id="AutoplayB_02"] +filters = [] +animation = &"ArmatureAnimation" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayB_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayB_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayB"] +states/state_1/node = SubResource( "AutoplayB_01" ) +states/state_2/node = SubResource( "AutoplayB_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayB_03" ), &"state_2", &"state_1", SubResource( "AutoplayB_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayC_01"] +filters = [] +animation = &"CrazyAnimation" +[sub_resource type="AnimationNodeAnimation" id="AutoplayC_02"] +filters = [] +animation = &"CrazyAnimation" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayC_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayC_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayC"] +states/state_1/node = SubResource( "AutoplayC_01" ) +states/state_2/node = SubResource( "AutoplayC_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayC_03" ), &"state_2", &"state_1", SubResource( "AutoplayC_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayD_01"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeAnimation" id="AutoplayD_02"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayD_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayD_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayD"] +states/state_1/node = SubResource( "AutoplayD_01" ) +states/state_2/node = SubResource( "AutoplayD_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayD_03" ), &"state_2", &"state_1", SubResource( "AutoplayD_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayE_01"] +filters = [] +animation = &"SpinningCubes" +[sub_resource type="AnimationNodeAnimation" id="AutoplayE_02"] +filters = [] +animation = &"SpinningCubes" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayE_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayE_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayE"] +states/state_1/node = SubResource( "AutoplayE_01" ) +states/state_2/node = SubResource( "AutoplayE_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayE_03" ), &"state_2", &"state_1", SubResource( "AutoplayE_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayF_01"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeAnimation" id="AutoplayF_02"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayF_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayF_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayF"] +states/state_1/node = SubResource( "AutoplayF_01" ) +states/state_2/node = SubResource( "AutoplayF_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayF_03" ), &"state_2", &"state_1", SubResource( "AutoplayF_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayG_01"] +filters = [] +animation = &"BendCylinders" +[sub_resource type="AnimationNodeAnimation" id="AutoplayG_02"] +filters = [] +animation = &"BendCylinders" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayG_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayG_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayG"] +states/state_1/node = SubResource( "AutoplayG_01" ) +states/state_2/node = SubResource( "AutoplayG_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayG_03" ), &"state_2", &"state_1", SubResource( "AutoplayG_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayH_01"] +filters = [] +animation = &"CrazyAnimation" +[sub_resource type="AnimationNodeAnimation" id="AutoplayH_02"] +filters = [] +animation = &"CrazyAnimation" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayH_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayH_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayH"] +states/state_1/node = SubResource( "AutoplayH_01" ) +states/state_2/node = SubResource( "AutoplayH_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayH_03" ), &"state_2", &"state_1", SubResource( "AutoplayH_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayI_01"] +filters = [] +animation = &"ArmatureAnimation" +[sub_resource type="AnimationNodeAnimation" id="AutoplayI_02"] +filters = [] +animation = &"ArmatureAnimation" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayI_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayI_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayI"] +states/state_1/node = SubResource( "AutoplayI_01" ) +states/state_2/node = SubResource( "AutoplayI_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayI_03" ), &"state_2", &"state_1", SubResource( "AutoplayI_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayJ_01"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeAnimation" id="AutoplayJ_02"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayJ_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayJ_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayJ"] +states/state_1/node = SubResource( "AutoplayJ_01" ) +states/state_2/node = SubResource( "AutoplayJ_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayJ_03" ), &"state_2", &"state_1", SubResource( "AutoplayJ_04" )] +start_node = "state_1" + +[sub_resource type="AnimationNodeAnimation" id="AutoplayK_01"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeAnimation" id="AutoplayK_02"] +filters = [] +animation = &"SpinningCubesV2" +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayK_03"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachineTransition" id="AutoplayK_04"] +switch_mode = 2 +auto_advance = true +[sub_resource type="AnimationNodeStateMachine" id="AutoplayK"] +states/state_1/node = SubResource( "AutoplayK_01" ) +states/state_2/node = SubResource( "AutoplayK_02" ) +transitions = [&"state_1", &"state_2", SubResource( "AutoplayK_03" ), &"state_2", &"state_1", SubResource( "AutoplayK_04" )] +start_node = "state_1" + +[node name="Node3D" type="Node3D"] +script = null + +[node name="MeshSkinnedToItselfAndOthersV2WithTail" parent="." instance=ExtResource( 8 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="MeshSkinnedToItselfAndOthersV2WithTail"] +tree_root = SubResource( "AutoplayA" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="modified_bone_animation_test" parent="." instance=ExtResource( 1 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="modified_bone_animation_test"] +tree_root = SubResource( "AutoplayB" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="NestedSkeletonReproCaseV2Animated" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="NestedSkeletonReproCaseV2Animated"] +tree_root = SubResource( "AutoplayC" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="MeshSkinnedToItselfAndOthersV2" parent="." instance=ExtResource( 4 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="MeshSkinnedToItselfAndOthersV2"] +tree_root = SubResource( "AutoplayD" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="MeshSkinnedToItselfAndOthers" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="MeshSkinnedToItselfAndOthers"] +tree_root = SubResource( "AutoplayE" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="MeshSkinnedToItselfAndOthersV1x" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="MeshSkinnedToItselfAndOthersV1x"] +tree_root = SubResource( "AutoplayF" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="duplicate_skinned_mesh_combined" parent="." instance=ExtResource( 3 )] +transform = Transform( 0, 0.1, 0, -0.1, 0, 0, 0, 0, 0.1, -2, 2, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="duplicate_skinned_mesh_combined"] +tree_root = SubResource( "AutoplayG" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="NestedSkeletonReproV3" parent="." instance=ExtResource( 9 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="NestedSkeletonReproV3"] +tree_root = SubResource( "AutoplayH" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="MeshSkinnedToItself" parent="." instance=ExtResource( 7 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[node name="NestedSkeletonReproCaseV2WithBody" parent="." instance=ExtResource( 10 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0 ) + +[node name="NestedSkeletonReproCase_renamemesh" parent="." instance=ExtResource( 11 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, 0 ) + +[node name="DirectParentedSkeletons" parent="." instance=ExtResource( 12 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) + +[editable path="MeshSkinnedToItselfAndOthersV2WithTail"] +[editable path="modified_bone_animation_test"] +[editable path="NestedSkeletonReproCaseV2Animated"] +[editable path="MeshSkinnedToItselfAndOthersV2"] +[editable path="MeshSkinnedToItselfAndOthersV1x"] +[editable path="duplicate_skinned_mesh_combined"] +[editable path="MeshSkinnedToItselfAndOthers"] +[editable path="MeshSkinnedToItself"] +[editable path="NestedSkeletonReproCaseV2WithBody"] +[editable path="NestedSkeletonReproCase_renamemesh"] +[editable path="NestedSkeletonReproV3"] +[editable path="DirectParentedSkeletons"] diff --git a/tests/gltf_skeleton_tests/TestModels_noanim.tscn b/tests/gltf_skeleton_tests/TestModels_noanim.tscn new file mode 100644 index 0000000..60bf584 --- /dev/null +++ b/tests/gltf_skeleton_tests/TestModels_noanim.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://gltf_tests/modified_bone_animation_test.glb" type="PackedScene" id=1] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCaseV2Animated.glb" type="PackedScene" id=2] +[ext_resource path="res://gltf_tests/duplicate_skinned_mesh_combined.glb" type="PackedScene" id=3] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV2.glb" type="PackedScene" id=4] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb" type="PackedScene" id=5] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthers.glb" type="PackedScene" id=6] +[ext_resource path="res://gltf_tests/MeshSkinnedToItself.glb" type="PackedScene" id=7] +[ext_resource path="res://gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb" type="PackedScene" id=8] +[ext_resource path="res://gltf_tests/NestedSkeletonReproV3.glb" type="PackedScene" id=9] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCaseV2WithBody.glb" type="PackedScene" id=10] +[ext_resource path="res://gltf_tests/NestedSkeletonReproCase_renamemesh.glb" type="PackedScene" id=11] +[ext_resource path="res://gltf_tests/DirectParentedSkeletons.glb" type="PackedScene" id=12] + +[sub_resource type="AnimationNodeAnimation" id="modified_bone_animation_test"] +animation = &"ArmatureAnimation" + +[node name="Node3D" type="Node3D"] +script = null + +[node name="MeshSkinnedToItselfAndOthersV2WithTail" parent="." instance=ExtResource( 8 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0 ) + +[node name="modified_bone_animation_test" parent="." instance=ExtResource( 1 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) + +[node name="AnimationTree" type="AnimationTree" parent="modified_bone_animation_test"] +tree_root = SubResource( "modified_bone_animation_test" ) +anim_player = NodePath("../AnimationPlayer") +active = true + +[node name="NestedSkeletonReproCaseV2Animated" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0 ) + +[node name="MeshSkinnedToItselfAndOthersV2" parent="." instance=ExtResource( 4 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[node name="MeshSkinnedToItselfAndOthers" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0 ) + +[node name="MeshSkinnedToItselfAndOthersV1x" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0 ) + +[node name="duplicate_skinned_mesh_combined" parent="." instance=ExtResource( 3 )] +transform = Transform( 0, 0.1, 0, -0.1, 0, 0, 0, 0, 0.1, -2, 2, 0 ) + +[node name="NestedSkeletonReproV3" parent="." instance=ExtResource( 9 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 0 ) + +[node name="MeshSkinnedToItself" parent="." instance=ExtResource( 7 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[node name="NestedSkeletonReproCaseV2WithBody" parent="." instance=ExtResource( 10 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0 ) + +[node name="NestedSkeletonReproCase_renamemesh" parent="." instance=ExtResource( 11 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, 0 ) + +[node name="DirectParentedSkeletons" parent="." instance=ExtResource( 12 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) + +[editable path="MeshSkinnedToItselfAndOthersV2WithTail"] +[editable path="modified_bone_animation_test"] +[editable path="NestedSkeletonReproCaseV2Animated"] +[editable path="MeshSkinnedToItselfAndOthersV2"] +[editable path="MeshSkinnedToItselfAndOthersV1x"] +[editable path="duplicate_skinned_mesh_combined"] +[editable path="MeshSkinnedToItselfAndOthers"] +[editable path="MeshSkinnedToItself"] +[editable path="NestedSkeletonReproCaseV2WithBody"] +[editable path="NestedSkeletonReproCase_renamemesh"] +[editable path="NestedSkeletonReproV3"] +[editable path="DirectParentedSkeletons"] diff --git a/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb b/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb new file mode 100644 index 0000000..1618917 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb.import b/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb.import new file mode 100644 index 0000000..60f3099 --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/DirectParentedSkeletons.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://duoiepw26xxf" +path="res://.godot/imported/DirectParentedSkeletons.glb-bcd53dfc080581455af9ab887e50f2ba.scn" + +[deps] + +source_file="res://gltf_tests/DirectParentedSkeletons.glb" +dest_files=["res://.godot/imported/DirectParentedSkeletons.glb-bcd53dfc080581455af9ab887e50f2ba.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb new file mode 100644 index 0000000..f8904d4 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb.import new file mode 100644 index 0000000..c328a8e --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItself.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dy3y3t81knkqb" +path="res://.godot/imported/MeshSkinnedToItself.glb-deee8e08f3151bd9287668b1d3941d62.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItself.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItself.glb-deee8e08f3151bd9287668b1d3941d62.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb new file mode 100644 index 0000000..00f8c5e Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb.import new file mode 100644 index 0000000..102d755 --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthers.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dmeag3j0gpnly" +path="res://.godot/imported/MeshSkinnedToItselfAndOthers.glb-494932e134f4724fa2f480207306c114.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItselfAndOthers.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItselfAndOthers.glb-494932e134f4724fa2f480207306c114.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb new file mode 100644 index 0000000..538a57d Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb.import new file mode 100644 index 0000000..977bb8d --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://d0404a2mn4wik" +path="res://.godot/imported/MeshSkinnedToItselfAndOthersV1x.glb-ab96467ae6fb3b33ae1d9a8d37824954.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItselfAndOthersV1x.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItselfAndOthersV1x.glb-ab96467ae6fb3b33ae1d9a8d37824954.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb new file mode 100644 index 0000000..4336aee Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb.import new file mode 100644 index 0000000..f628d1e --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://kk28nkdfv1yg" +path="res://.godot/imported/MeshSkinnedToItselfAndOthersV2.glb-cbad2a314958181155c917d5253c69db.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItselfAndOthersV2.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItselfAndOthersV2.glb-cbad2a314958181155c917d5253c69db.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb new file mode 100644 index 0000000..abfb75f Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb.import new file mode 100644 index 0000000..1d00c6a --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cclbgr58klrt8" +path="res://.godot/imported/MeshSkinnedToItselfAndOthersV2WithTail.glb-5c30b66707202d482aa600e0a24743be.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItselfAndOthersV2WithTail.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItselfAndOthersV2WithTail.glb-5c30b66707202d482aa600e0a24743be.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb new file mode 100644 index 0000000..580d34b Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb.import b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb.import new file mode 100644 index 0000000..7858fc3 --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/MeshSkinnedToItselfAndOthersV3.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cjj1vomqen7gq" +path="res://.godot/imported/MeshSkinnedToItselfAndOthersV3.glb-593799b8bc045ea6a04db5b968470125.scn" + +[deps] + +source_file="res://gltf_tests/MeshSkinnedToItselfAndOthersV3.glb" +dest_files=["res://.godot/imported/MeshSkinnedToItselfAndOthersV3.glb-593799b8bc045ea6a04db5b968470125.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb new file mode 100644 index 0000000..5744ab0 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb.import b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb.import new file mode 100644 index 0000000..bb1a55c --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bu0bo7cnb7c81" +path="res://.godot/imported/NestedSkeletonReproCase.glb-c81949c01820d54eb73805ed065923a2.scn" + +[deps] + +source_file="res://gltf_tests/NestedSkeletonReproCase.glb" +dest_files=["res://.godot/imported/NestedSkeletonReproCase.glb-c81949c01820d54eb73805ed065923a2.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb new file mode 100644 index 0000000..7d0af90 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb.import b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb.import new file mode 100644 index 0000000..40a240b --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2Animated.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cka4qceh300pb" +path="res://.godot/imported/NestedSkeletonReproCaseV2Animated.glb-992ac79dfc427b29ceeb930f3d98b932.scn" + +[deps] + +source_file="res://gltf_tests/NestedSkeletonReproCaseV2Animated.glb" +dest_files=["res://.godot/imported/NestedSkeletonReproCaseV2Animated.glb-992ac79dfc427b29ceeb930f3d98b932.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb new file mode 100644 index 0000000..8f8de93 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb.import b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb.import new file mode 100644 index 0000000..e737735 --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCaseV2WithBody.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ccdn5dqjfrgsw" +path="res://.godot/imported/NestedSkeletonReproCaseV2WithBody.glb-075056b077bf20102c24100df453ad66.scn" + +[deps] + +source_file="res://gltf_tests/NestedSkeletonReproCaseV2WithBody.glb" +dest_files=["res://.godot/imported/NestedSkeletonReproCaseV2WithBody.glb-075056b077bf20102c24100df453ad66.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb new file mode 100644 index 0000000..fb78e56 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb.import b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb.import new file mode 100644 index 0000000..4d0e45b --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproCase_renamemesh.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ccecsuatvflqi" +path="res://.godot/imported/NestedSkeletonReproCase_renamemesh.glb-9517162d1b570b6fae4b7f6a55ed8219.scn" + +[deps] + +source_file="res://gltf_tests/NestedSkeletonReproCase_renamemesh.glb" +dest_files=["res://.godot/imported/NestedSkeletonReproCase_renamemesh.glb-9517162d1b570b6fae4b7f6a55ed8219.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb new file mode 100644 index 0000000..d8c03e9 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb.import b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb.import new file mode 100644 index 0000000..15e8768 --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/NestedSkeletonReproV3.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://rv7ro10w2jl4" +path="res://.godot/imported/NestedSkeletonReproV3.glb-79730a6dc0d76819c422b809685119d9.scn" + +[deps] + +source_file="res://gltf_tests/NestedSkeletonReproV3.glb" +dest_files=["res://.godot/imported/NestedSkeletonReproV3.glb-79730a6dc0d76819c422b809685119d9.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb b/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb new file mode 100644 index 0000000..2aad5b3 Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb.import b/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb.import new file mode 100644 index 0000000..1584c9b --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/duplicate_skinned_mesh_combined.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bd54q20rhhw60" +path="res://.godot/imported/duplicate_skinned_mesh_combined.glb-aa98802ca169e7316f73ee17ada09617.scn" + +[deps] + +source_file="res://gltf_tests/duplicate_skinned_mesh_combined.glb" +dest_files=["res://.godot/imported/duplicate_skinned_mesh_combined.glb-aa98802ca169e7316f73ee17ada09617.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb b/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb new file mode 100644 index 0000000..d666d3b Binary files /dev/null and b/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb differ diff --git a/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb.import b/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb.import new file mode 100644 index 0000000..383e35f --- /dev/null +++ b/tests/gltf_skeleton_tests/gltf_tests/modified_bone_animation_test.glb.import @@ -0,0 +1,30 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cve3ee5hdutu8" +path="res://.godot/imported/modified_bone_animation_test.glb-b0ddb307fdebaaf595f3061a40d93968.scn" + +[deps] + +source_file="res://gltf_tests/modified_bone_animation_test.glb" +dest_files=["res://.godot/imported/modified_bone_animation_test.glb-b0ddb307fdebaaf595f3061a40d93968.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +animation/import=true +animation/bake_reset_animation=true +animation/fps=15 +import_script/path="" +_subresources={ +} diff --git a/tests/gltf_skeleton_tests/project.godot b/tests/gltf_skeleton_tests/project.godot new file mode 100644 index 0000000..ac2091f --- /dev/null +++ b/tests/gltf_skeleton_tests/project.godot @@ -0,0 +1,19 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="GLTF Skeleton Tests" +run/main_scene="res://TestModels.tscn" +config/icon="res://icon.png" + +[rendering] + +environment/default_environment="res://default_env.tres"