From 2e681e132a467e28639495538898195036840b37 Mon Sep 17 00:00:00 2001 From: TwistedTwigleg Date: Wed, 29 Jan 2020 17:52:25 -0500 Subject: [PATCH] IK demo: Fixed bug in FABRIK IK that would cause the right arm to freak out by changing the middle joint code. --- 3d/ik/addons/sade/ik_fabrik.gd | 5 +++-- 3d/ik/fabrik_ik.tscn | 1 - 3d/ik/look_at_ik.tscn | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/3d/ik/addons/sade/ik_fabrik.gd b/3d/ik/addons/sade/ik_fabrik.gd index bf93c61e..cd3263c1 100644 --- a/3d/ik/addons/sade/ik_fabrik.gd +++ b/3d/ik/addons/sade/ik_fabrik.gd @@ -190,8 +190,9 @@ func solve_chain(): # If we are using middle joint target (and have more than 2 bones), move our middle joint towards it! if use_middle_joint_target == true: if bone_nodes.size() > 2: - var middle_point_pos = middle_joint_target.global_transform - bone_nodes[bone_nodes.size()/2].global_transform.origin = middle_point_pos.origin + var middle_point_pos = middle_joint_target.global_transform.origin + var middle_point_pos_diff = (middle_point_pos - bone_nodes[bone_nodes.size()/2].global_transform.origin) + bone_nodes[bone_nodes.size()/2].global_transform.origin += middle_point_pos_diff.normalized() # Get the difference between our end effector (the final bone in the chain) and the target var dif = (bone_nodes[bone_nodes.size()-1].global_transform.origin - target_pos).length() diff --git a/3d/ik/fabrik_ik.tscn b/3d/ik/fabrik_ik.tscn index 77a74f52..df0d7402 100644 --- a/3d/ik/fabrik_ik.tscn +++ b/3d/ik/fabrik_ik.tscn @@ -95,7 +95,6 @@ __meta__ = { skeleton_path = NodePath("../../../BattleBot/Armature/Skeleton") bones_in_chain = PoolStringArray( "Left_UpperArm", "Left_LowerArm" ) bones_in_chain_lengths = PoolRealArray( 1.97, 3 ) -chain_iterations = 10 limit_chain_iterations = false use_middle_joint_target = true diff --git a/3d/ik/look_at_ik.tscn b/3d/ik/look_at_ik.tscn index 329b8229..d66c46e9 100644 --- a/3d/ik/look_at_ik.tscn +++ b/3d/ik/look_at_ik.tscn @@ -133,6 +133,9 @@ margin_right = -5.0 margin_bottom = -10.0 text = "Next scene" script = ExtResource( 8 ) +__meta__ = { +"_edit_use_anchors_": false +} scene_to_change_to = "res://fabrik_ik.tscn" [editable path="BattleBot"]