diff --git a/3d/ik/fabrik_ik.tscn b/3d/ik/fabrik_ik.tscn index 0545aba1..77a74f52 100644 --- a/3d/ik/fabrik_ik.tscn +++ b/3d/ik/fabrik_ik.tscn @@ -165,21 +165,28 @@ mesh = SubResource( 5 ) material/0 = SubResource( 6 ) [node name="Control" type="Control" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} [node name="Panel" type="Panel" parent="Control"] modulate = Color( 1, 1, 1, 0.784314 ) +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = -2.0 -margin_top = 530.0 -margin_right = 1028.0 -margin_bottom = 600.0 +margin_top = -70.0 +margin_right = 4.0 [node name="Label" type="Label" parent="Control/Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = 12.0 margin_top = 10.0 -margin_right = 1012.0 -margin_bottom = 41.0 +margin_right = -18.0 +margin_bottom = -29.0 text = "F.A.B.R.I.K IK Move mouse to move IK targets (Using 3 bones in the right hand, only 2 in the left. 3+ recommended)" @@ -187,10 +194,12 @@ align = 1 valign = 1 [node name="Label_extra" type="Label" parent="Control/Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = 12.0 margin_top = 80.0 -margin_right = 1012.0 -margin_bottom = 128.0 +margin_right = -18.0 +margin_bottom = 58.0 text = "NOTE: You will get a few errors when saving with FABRIK IK nodes in your scene This is a known bug. Please ignore the errors for now, as they do not do anything (They're just annoying. If you find a fix, please add it to the demo repository!)" @@ -198,9 +207,11 @@ align = 1 valign = 1 [node name="Label_left" type="Label" parent="Control/Panel"] -margin_left = 782.0 +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -248.0 margin_top = 4.0 -margin_right = 895.0 +margin_right = -135.0 margin_bottom = 18.0 text = "Left Hand" align = 1 @@ -214,19 +225,25 @@ text = "Right Hand" align = 1 [node name="Button_Next" type="Button" parent="Control"] -margin_left = 900.0 -margin_top = 540.0 -margin_right = 1019.0 -margin_bottom = 590.0 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -124.0 +margin_top = -60.0 +margin_right = -5.0 +margin_bottom = -10.0 text = "Next scene" script = ExtResource( 10 ) -scene_to_change_to = "res://fps/fps_example.tscn" +scene_to_change_to = "res://skeleton_ik.tscn" [node name="Button_Prev" type="Button" parent="Control"] +anchor_top = 1.0 +anchor_bottom = 1.0 margin_left = 10.0 -margin_top = 540.0 +margin_top = -60.0 margin_right = 129.0 -margin_bottom = 590.0 +margin_bottom = -10.0 text = "Previous scene" script = ExtResource( 10 ) scene_to_change_to = "res://look_at_ik.tscn" diff --git a/3d/ik/fps/fps_example.tscn b/3d/ik/fps/fps_example.tscn index 76e8f06c..dab2bb07 100644 --- a/3d/ik/fps/fps_example.tscn +++ b/3d/ik/fps/fps_example.tscn @@ -14,35 +14,35 @@ [ext_resource path="res://battle_bot_color.tres" type="Material" id=12] [ext_resource path="res://battle_bot_emission.tres" type="Material" id=13] -[sub_resource type="PlaneMesh" id=5] +[sub_resource type="PlaneMesh" id=1] size = Vector2( 40, 40 ) -[sub_resource type="SpatialMaterial" id=6] +[sub_resource type="SpatialMaterial" id=2] albedo_texture = ExtResource( 1 ) roughness = 0.2 uv1_scale = Vector3( 0.25, 0.25, 0.25 ) uv1_triplanar = true -[sub_resource type="BoxShape" id=7] +[sub_resource type="BoxShape" id=3] extents = Vector3( 20, 1, 20 ) -[sub_resource type="CubeMesh" id=8] +[sub_resource type="CubeMesh" id=4] size = Vector3( 4, 4, 4 ) -[sub_resource type="SpatialMaterial" id=9] +[sub_resource type="SpatialMaterial" id=5] albedo_color = Color( 0.148438, 1, 0, 1 ) albedo_texture = ExtResource( 1 ) uv1_triplanar = true -[sub_resource type="BoxShape" id=10] +[sub_resource type="BoxShape" id=6] extents = Vector3( 2, 2, 2 ) -[sub_resource type="SpatialMaterial" id=11] +[sub_resource type="SpatialMaterial" id=7] albedo_color = Color( 0, 0.882813, 1, 1 ) albedo_texture = ExtResource( 1 ) uv1_triplanar = true -[sub_resource type="ProceduralSky" id=3] +[sub_resource type="ProceduralSky" id=8] sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 ) sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 ) sky_curve = 0.25 @@ -50,9 +50,9 @@ ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 ) ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 ) ground_curve = 0.01 -[sub_resource type="Environment" id=4] +[sub_resource type="Environment" id=9] background_mode = 2 -background_sky = SubResource( 3 ) +background_sky = SubResource( 8 ) ambient_light_color = Color( 1, 0.909804, 0.784314, 1 ) ambient_light_energy = 1.4 ambient_light_sky_contribution = 0.72 @@ -65,17 +65,17 @@ glow_intensity = 0.2 glow_bloom = 0.03 glow_blend_mode = 0 -[sub_resource type="CapsuleShape" id=12] +[sub_resource type="CapsuleShape" id=10] radius = 4.0 height = 6.0 -[sub_resource type="Curve3D" id=13] +[sub_resource type="Curve3D" id=11] _data = { "points": PoolVector3Array( 0, 0, 0, 0, 0, 0, -2.43129, -0.955339, 0, 0, 0, 0, 0, 0, 0, -0.670561, 0.183959, 0, 0, 0, 0, 0, 0, 0, 0.64629, 0.228347, 0, 0, 0, 0, 0, 0, 0, 2.31825, -0.925747, 0 ), "tilts": PoolRealArray( 0, 0, 0, 0 ) } -[sub_resource type="Animation" id=14] +[sub_resource type="Animation" id=12] tracks/0/type = "value" tracks/0/path = NodePath("Lean_Path/PathFollow/IK_LookAt_Chest/Aim_pos:translation") tracks/0/interp = 1 @@ -113,7 +113,7 @@ tracks/2/keys = { "values": [ 80.0, 60.0 ] } -[sub_resource type="Animation" id=15] +[sub_resource type="Animation" id=13] tracks/0/type = "value" tracks/0/path = NodePath("Lean_Path/PathFollow/IK_LookAt_Chest/Camera:fov") tracks/0/interp = 1 @@ -151,7 +151,7 @@ tracks/2/keys = { "values": [ Vector3( 0, 0, 0 ), Vector3( 0, -2, 0 ) ] } -[sub_resource type="Animation" id=16] +[sub_resource type="Animation" id=14] tracks/0/type = "value" tracks/0/path = NodePath("Lean_Path/PathFollow/IK_LookAt_Chest/Aim_pos:translation") tracks/0/interp = 1 @@ -195,206 +195,206 @@ tracks/2/keys = { [node name="Floor_plane" type="MeshInstance" parent="Level"] transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0 ) -mesh = SubResource( 5 ) -material/0 = SubResource( 6 ) +mesh = SubResource( 1 ) +material/0 = SubResource( 2 ) [node name="StaticBody" type="StaticBody" parent="Level/Floor_plane"] [node name="CollisionShape" type="CollisionShape" parent="Level/Floor_plane/StaticBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.956119, 0 ) -shape = SubResource( 7 ) +shape = SubResource( 3 ) [node name="Walls" type="Spatial" parent="Level"] [node name="LargeWall" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, 0, 0, 10, 0, 0, 0, 10, -39.9997, 20.0003, 20.0002 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall2" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, 0, 0, 10, 0, 0, 0, 10, -39.9997, 20.0003, -19.9998 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall2"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall2/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall3" type="MeshInstance" parent="Level/Walls"] transform = Transform( -4.37114e-08, 0, -10, 0, 10, 0, 1, 0, -4.37114e-07, -18.9997, 20.0003, -40.9998 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall3"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall3/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall4" type="MeshInstance" parent="Level/Walls"] transform = Transform( -4.37114e-08, 0, -10, 0, 10, 0, 1, 0, -4.37114e-07, 21.0003, 20.0003, -40.9998 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall4"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall4/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall5" type="MeshInstance" parent="Level/Walls"] transform = Transform( -1, 0, 8.74228e-07, 0, 10, 0, -8.74228e-08, 0, -10, 41.0003, 20.0003, -19.9998 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall5"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall5/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall6" type="MeshInstance" parent="Level/Walls"] transform = Transform( -1, 0, 8.74228e-07, 0, 10, 0, -8.74228e-08, 0, -10, 41.0003, 20.0003, 20.0002 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall6"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall6/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall7" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1.31134e-07, 0, 10, 0, 10, 0, -1, 0, 1.31134e-06, 21.0003, 20.0003, 40.0002 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall7"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall7/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="LargeWall8" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1.31134e-07, 0, 10, 0, 10, 0, -1, 0, 1.31134e-06, -18.9997, 20.0003, 40.0002 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 9 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 5 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/LargeWall8"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/LargeWall8/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall" type="MeshInstance" parent="Level/Walls"] transform = Transform( 7.54979e-08, 0, 4, 0, 4, 0, -1, 0, 3.01992e-07, -9.9997, 8.00032, 22.0005 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall2" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, -4.76837e-07, 0, 4, 0, 1.19209e-07, 0, 4, -19.9997, 8.00032, 16.0005 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall2"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall2/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall3" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, -3.57627e-07, 0, 4, 0, 1.19209e-07, 0, 3, -19.9997, 8.00032, 2.00049 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall3"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall3/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall4" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, -4.76837e-07, 0, 4, 0, 1.19209e-07, 0, 4, -19.9997, 8.00032, -21.9995 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall4"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall4/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall5" type="MeshInstance" parent="Level/Walls"] transform = Transform( -1.62921e-07, 0, -4, 0, 4, 0, 1, 0, -6.51683e-07, -9.9997, 8.00032, -27.9995 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall5"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall5/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall6" type="MeshInstance" parent="Level/Walls"] transform = Transform( -1, 0, 8.26528e-07, 0, 4, 0, -2.06632e-07, 0, -4, 0.000319004, 8.00032, -21.9995 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall6"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall6/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall7" type="MeshInstance" parent="Level/Walls"] transform = Transform( -1.62921e-07, 0, -4, 0, 4, 0, 1, 0, -6.51683e-07, 10.0003, 8.00032, -15.9995 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall7"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall7/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall9" type="MeshInstance" parent="Level/Walls"] transform = Transform( 1, 0, -4.76837e-07, 0, 4, 0, 1.19209e-07, 0, 4, 25.0003, 8.00032, -25.9995 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall9"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall9/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall10" type="MeshInstance" parent="Level/Walls"] transform = Transform( 0.573577, 0, 3.27661, 0, 4, 0, -0.819152, 0, 2.29431, 23.0003, 8.00032, 3.00049 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall10"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall10/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall11" type="MeshInstance" parent="Level/Walls"] transform = Transform( -0.819152, 0, 2.29431, 0, 4, 0, -0.573577, 0, -3.27661, 22.2126, 8.00032, 14.7123 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall11"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall11/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="Wall12" type="MeshInstance" parent="Level/Walls"] transform = Transform( -0.627507, 2.10616, 2.29431, 0.642788, 3.06418, 0, -0.439385, 1.47475, -3.27661, 14.8402, 8.00032, 9.55015 ) -mesh = SubResource( 8 ) -material/0 = SubResource( 11 ) +mesh = SubResource( 4 ) +material/0 = SubResource( 7 ) [node name="StaticBody" type="StaticBody" parent="Level/Walls/Wall12"] [node name="CollisionShape" type="CollisionShape" parent="Level/Walls/Wall12/StaticBody"] -shape = SubResource( 10 ) +shape = SubResource( 6 ) [node name="DirectionalLight" type="DirectionalLight" parent="."] transform = Transform( 0.388878, -0.754027, 0.529355, 0, 0.574581, 0.818448, -0.921289, -0.318277, 0.223442, -9.77531, 11.5204, 11.766 ) @@ -402,50 +402,66 @@ light_color = Color( 1, 0.925598, 0.820313, 1 ) shadow_enabled = true [node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource( 4 ) +environment = SubResource( 9 ) [node name="Control" type="Control" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 +anchor_right = 1.0 +anchor_bottom = 1.0 [node name="Panel" type="Panel" parent="Control"] modulate = Color( 1, 1, 1, 0.784314 ) +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = -2.0 -margin_top = 530.0 -margin_right = 1028.0 -margin_bottom = 600.0 +margin_top = -70.0 +margin_right = 4.0 [node name="Label" type="Label" parent="Control/Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = 12.0 margin_top = 10.0 -margin_right = 1012.0 -margin_bottom = 41.0 -text = "Example use case: Dynamic FPS Animations +margin_right = -18.0 +margin_bottom = -29.0 +text = "F.A.B.R.I.K IK Example use case: Dynamic FPS Animations Controls: WASD/Arrows to move, left click to fire, right click to look down sights, Q/E to lean left/right Escape to free/lock mouse cursor" align = 1 valign = 1 [node name="Button_Prev" type="Button" parent="Control"] +anchor_top = 1.0 +anchor_bottom = 1.0 margin_left = 10.0 -margin_top = 540.0 +margin_top = -60.0 margin_right = 129.0 -margin_bottom = 590.0 +margin_bottom = -10.0 text = "Previous scene" script = ExtResource( 2 ) scene_to_change_to = "res://fabrik_ik.tscn" [node name="Crosshair" type="Control" parent="Control"] modulate = Color( 1, 1, 1, 0.784314 ) -margin_left = 492.0 -margin_top = 280.0 -margin_right = 532.0 -margin_bottom = 320.0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -20.0 +margin_top = -20.0 +margin_right = 20.0 +margin_bottom = 20.0 +__meta__ = { +"_edit_use_anchors_": false +} [node name="ColorRect" type="ColorRect" parent="Control/Crosshair"] margin_left = 19.0 margin_right = 21.0 margin_bottom = 40.0 +__meta__ = { +"_edit_use_anchors_": false +} [node name="ColorRect2" type="ColorRect" parent="Control/Crosshair"] margin_left = 40.0 @@ -459,13 +475,13 @@ script = ExtResource( 3 ) [node name="CollisionShape" type="CollisionShape" parent="KinematicBody"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 7, 0 ) -shape = SubResource( 12 ) +shape = SubResource( 10 ) [node name="CameraHolder" type="Spatial" parent="KinematicBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13, 0 ) [node name="Lean_Path" type="Path" parent="KinematicBody/CameraHolder"] -curve = SubResource( 13 ) +curve = SubResource( 11 ) [node name="PathFollow" type="PathFollow" parent="KinematicBody/CameraHolder/Lean_Path"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0412404, 0.205172, 0 ) @@ -499,7 +515,6 @@ __meta__ = { skeleton_path = NodePath("../../../../../../BattleBot/Armature/Skeleton") bones_in_chain = PoolStringArray( "Left_UpperArm", "Left_LowerArm", "Left_Hand" ) bones_in_chain_lengths = PoolRealArray( 1.97, 3, 0.1 ) -chain_iterations = 5 limit_chain_iterations = false use_middle_joint_target = true @@ -537,7 +552,6 @@ __meta__ = { skeleton_path = NodePath("../../../../../../BattleBot/Armature/Skeleton") bones_in_chain = PoolStringArray( "Right_UpperArm", "Right_LowerArm", "Right_Hand" ) bones_in_chain_lengths = PoolRealArray( 1.97, 3, 0.1 ) -chain_iterations = 3 limit_chain_iterations = false use_middle_joint_target = true @@ -581,9 +595,9 @@ bone_name = "Head" [node name="AnimationPlayer" type="AnimationPlayer" parent="KinematicBody/CameraHolder"] autoplay = "Start" playback_speed = 4.0 -anims/Aiming = SubResource( 14 ) -anims/Idle = SubResource( 15 ) -anims/Start = SubResource( 16 ) +anims/Aiming = SubResource( 12 ) +anims/Idle = SubResource( 13 ) +anims/Start = SubResource( 14 ) [node name="Weapon" type="Spatial" parent="KinematicBody/CameraHolder"] diff --git a/3d/ik/look_at_ik.tscn b/3d/ik/look_at_ik.tscn index 765d7373..329b8229 100644 --- a/3d/ik/look_at_ik.tscn +++ b/3d/ik/look_at_ik.tscn @@ -95,31 +95,42 @@ bone_name = "Right_UpperArm" additional_rotation = Vector3( 0, 0, 180 ) [node name="Control" type="Control" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 +anchor_right = 1.0 +anchor_bottom = 1.0 [node name="Panel" type="Panel" parent="Control"] modulate = Color( 1, 1, 1, 0.784314 ) +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = -2.0 -margin_top = 530.0 -margin_right = 1028.0 -margin_bottom = 600.0 +margin_top = -70.0 +margin_right = 4.0 +__meta__ = { +"_edit_use_anchors_": false +} [node name="Label" type="Label" parent="Control/Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 margin_left = 12.0 margin_top = 10.0 -margin_right = 1012.0 -margin_bottom = 41.0 +margin_right = -18.0 +margin_bottom = -29.0 text = "LookAt IK Move mouse to move IK targets" align = 1 valign = 1 [node name="Button_Next" type="Button" parent="Control"] -margin_left = 900.0 -margin_top = 540.0 -margin_right = 1019.0 -margin_bottom = 590.0 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -124.0 +margin_top = -60.0 +margin_right = -5.0 +margin_bottom = -10.0 text = "Next scene" script = ExtResource( 8 ) scene_to_change_to = "res://fabrik_ik.tscn" diff --git a/3d/ik/project.godot b/3d/ik/project.godot index 176cf6fb..abcf5706 100644 --- a/3d/ik/project.godot +++ b/3d/ik/project.godot @@ -19,11 +19,6 @@ config/name="3D IK" run/main_scene="res://look_at_ik.tscn" config/icon="res://icon.png" -[display] - -window/stretch/mode="2d" -window/stretch/aspect="keep" - [editor_plugins] enabled=PoolStringArray( "sade" ) diff --git a/3d/ik/skeleton_ik.tscn b/3d/ik/skeleton_ik.tscn new file mode 100644 index 00000000..00f77cf4 --- /dev/null +++ b/3d/ik/skeleton_ik.tscn @@ -0,0 +1,168 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://skeleton_ik_runner.gd" type="Script" id=1] +[ext_resource path="res://addons/sade/ik_look_at.png" type="Texture" id=2] +[ext_resource path="res://addons/sade/editor_gizmo_texture.png" type="Texture" id=3] +[ext_resource path="res://godot_battle_bot.dae" type="PackedScene" id=4] +[ext_resource path="res://target_from_mousepos.gd" type="Script" id=5] +[ext_resource path="res://battle_bot_color.tres" type="Material" id=6] +[ext_resource path="res://battle_bot_emission.tres" type="Material" id=7] +[ext_resource path="res://button_change_scene.gd" type="Script" id=8] +[ext_resource path="res://addons/sade/ik_look_at.gd" type="Script" id=9] + +[sub_resource type="PlaneMesh" id=1] +size = Vector2( 40, 40 ) + +[sub_resource type="SpatialMaterial" id=2] +albedo_texture = ExtResource( 3 ) +roughness = 0.2 +uv1_scale = Vector3( 0.25, 0.25, 0.25 ) +uv1_triplanar = true + +[sub_resource type="ProceduralSky" id=3] +sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 ) +sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 ) +sky_curve = 0.25 +ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 ) +ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 ) +ground_curve = 0.01 + +[sub_resource type="Environment" id=4] +background_mode = 2 +background_sky = SubResource( 3 ) +ambient_light_color = Color( 1, 0.909804, 0.784314, 1 ) +ambient_light_energy = 1.4 +ambient_light_sky_contribution = 0.72 +tonemap_mode = 3 +glow_enabled = true +glow_levels/1 = true +glow_levels/2 = true +glow_levels/5 = false +glow_intensity = 0.2 +glow_bloom = 0.03 +glow_blend_mode = 0 + +[sub_resource type="CubeMesh" id=5] +size = Vector3( 1, 1, 1 ) + +[sub_resource type="SpatialMaterial" id=6] +albedo_color = Color( 0, 0.191406, 0.765625, 1 ) +roughness = 0.0 + +[node name="Skeleton_IK" type="Spatial"] + +[node name="Floor_plane" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = SubResource( 2 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.56827, 0.673454, -0.472789, 0, 0.574581, 0.818448, 0.822842, -0.465099, 0.326517, -9.77531, 11.5204, 11.766 ) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource( 4 ) + +[node name="BattleBot" parent="." instance=ExtResource( 4 )] + +[node name="godot_battle_bot" parent="BattleBot/Armature/Skeleton" index="0"] +material/0 = ExtResource( 6 ) +material/1 = ExtResource( 7 ) + +[node name="SkeletonIK_Left" type="SkeletonIK" parent="BattleBot/Armature/Skeleton" index="1"] +process_priority = 1 +root_bone = "Left_UpperArm" +tip_bone = "Left_Hand" +target_node = NodePath("../../../../Camera/targets/Target_Left") +script = ExtResource( 1 ) + +[node name="SkeletonIK_Right" type="SkeletonIK" parent="BattleBot/Armature/Skeleton" index="2"] +process_priority = 1 +root_bone = "Right_UpperArm" +tip_bone = "Right_Hand" +target_node = NodePath("../../../../Camera/targets/Target_Right") +script = ExtResource( 1 ) + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.5, 11 ) +fov = 74.0 +script = ExtResource( 5 ) +MOVEMENT_SPEED = -8.0 +flip_axis = true + +[node name="targets" type="Spatial" parent="Camera"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -8 ) + +[node name="IK_LookAt_Head" type="Spatial" parent="Camera/targets"] +script = ExtResource( 9 ) +__meta__ = { +"_editor_icon": ExtResource( 2 ) +} +skeleton_path = NodePath("../../../../Skeleton_IK/BattleBot/Armature/Skeleton") +bone_name = "Head" +additional_rotation = Vector3( 90, 0, 0 ) + +[node name="MeshInstance" type="MeshInstance" parent="Camera/targets"] +mesh = SubResource( 5 ) +material/0 = SubResource( 6 ) + +[node name="Target_Left" type="Position3D" parent="Camera/targets"] +transform = Transform( -0.179447, 0.98366, -0.0145678, 0.981822, 0.178142, -0.0654973, -0.0618319, -0.0260563, -0.997746, 0.653517, -0.112305, -0.760886 ) + +[node name="Target_Right" type="Position3D" parent="Camera/targets"] +transform = Transform( -0.0217688, 0.998559, -0.0490576, 0.992503, 0.0274873, 0.119085, 0.120262, -0.0460975, -0.991671, -0.683053, 0.0251284, -0.811513 ) + +[node name="Control" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Panel" type="Panel" parent="Control"] +modulate = Color( 1, 1, 1, 0.784314 ) +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -2.0 +margin_top = -70.0 +margin_right = 4.0 + +[node name="Label" type="Label" parent="Control/Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 12.0 +margin_top = 10.0 +margin_right = -18.0 +margin_bottom = -29.0 +text = "SkeletonIK node +Move mouse to move IK targets" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button_Next" type="Button" parent="Control"] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -124.0 +margin_top = -60.0 +margin_right = -5.0 +margin_bottom = -10.0 +text = "Next scene" +script = ExtResource( 8 ) +scene_to_change_to = "res://fps/fps_example.tscn" + +[node name="Button_Prev" type="Button" parent="Control"] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_left = 10.0 +margin_top = -60.0 +margin_right = 129.0 +margin_bottom = -10.0 +text = "Previous scene" +script = ExtResource( 8 ) +scene_to_change_to = "res://fabrik_ik.tscn" + +[editable path="BattleBot"] diff --git a/3d/ik/skeleton_ik_runner.gd b/3d/ik/skeleton_ik_runner.gd new file mode 100644 index 00000000..de6e43fc --- /dev/null +++ b/3d/ik/skeleton_ik_runner.gd @@ -0,0 +1,4 @@ +extends SkeletonIK + +func _ready(): + start(false)