Resets global pose of IK chain bones being solved, rather than the whole skeleton. Resolves #38026
(cherry picked from commit e321d38c0e
)
This commit is contained in:
parent
6fb6107e6a
commit
68b968ff6c
|
@ -287,7 +287,15 @@ void FabrikInverseKinematic::solve(Task *p_task, real_t blending_delta, bool ove
|
||||||
return; // Skip solving
|
return; // Skip solving
|
||||||
}
|
}
|
||||||
|
|
||||||
p_task->skeleton->clear_bones_global_pose_override();
|
p_task->skeleton->set_bone_global_pose_override(p_task->chain.chain_root.bone, Transform(), 0.0, true);
|
||||||
|
|
||||||
|
if (p_task->chain.middle_chain_item) {
|
||||||
|
p_task->skeleton->set_bone_global_pose_override(p_task->chain.middle_chain_item->bone, Transform(), 0.0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < p_task->chain.tips.size(); i += 1) {
|
||||||
|
p_task->skeleton->set_bone_global_pose_override(p_task->chain.tips[i].chain_item->bone, Transform(), 0.0, true);
|
||||||
|
}
|
||||||
|
|
||||||
make_goal(p_task, p_task->skeleton->get_global_transform().affine_inverse().scaled(p_task->skeleton->get_global_transform().get_basis().get_scale()), blending_delta);
|
make_goal(p_task, p_task->skeleton->get_global_transform().affine_inverse().scaled(p_task->skeleton->get_global_transform().get_basis().get_scale()), blending_delta);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue