瀏覽代碼

Fix for regression in SkeletonIK code

(cherry picked from commit c15e23396da5d44b23dd6edc0df8ccaebbd9f6bc)
TwistedTwigleg 4 年之前
父節點
當前提交
f50c8062dd
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      scene/animation/skeleton_ik.cpp

+ 4 - 0
scene/animation/skeleton_ik.cpp

@@ -280,6 +280,10 @@ void FabrikInverseKinematic::solve(Task *p_task, real_t blending_delta, bool ove
 		p_task->skeleton->set_bone_global_pose_override(p_task->chain.tips[i].chain_item->bone, Transform(), 0.0, true);
 		p_task->skeleton->set_bone_global_pose_override(p_task->chain.tips[i].chain_item->bone, Transform(), 0.0, true);
 	}
 	}
 
 
+	// Update the initial root transform
+	p_task->chain.chain_root.initial_transform = p_task->skeleton->get_bone_global_pose(p_task->chain.chain_root.bone);
+	p_task->chain.chain_root.current_pos = p_task->chain.chain_root.initial_transform.origin;
+
 	make_goal(p_task, p_task->skeleton->get_global_transform().affine_inverse(), blending_delta);
 	make_goal(p_task, p_task->skeleton->get_global_transform().affine_inverse(), blending_delta);
 
 
 	if (p_use_magnet && p_task->chain.middle_chain_item) {
 	if (p_use_magnet && p_task->chain.middle_chain_item) {