Browse Source

Added SkeletonIK example to IK demo. Updated the anchors on all of the UI so it can scale to any sized window. Removed the project settings keeping the aspect ratio the same

TwistedTwigleg 5 years ago
parent
commit
40bcc0f55f
6 changed files with 340 additions and 131 deletions
  1. 35 18
      3d/ik/fabrik_ik.tscn
  2. 111 97
      3d/ik/fps/fps_example.tscn
  3. 22 11
      3d/ik/look_at_ik.tscn
  4. 0 5
      3d/ik/project.godot
  5. 168 0
      3d/ik/skeleton_ik.tscn
  6. 4 0
      3d/ik/skeleton_ik_runner.gd

+ 35 - 18
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"

+ 111 - 97
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"]
 

+ 22 - 11
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"

+ 0 - 5
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" )

+ 168 - 0
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"]

+ 4 - 0
3d/ik/skeleton_ik_runner.gd

@@ -0,0 +1,4 @@
+extends SkeletonIK
+
+func _ready():
+	start(false)