Skip to content

Commit 0b5ad6c

Browse files
committed
Merge pull request godotengine#112573 from TokageItLab/fix-jacobian-gradient
Fix JacobianIK to apply gradient correctly
2 parents 3cc90cd + 069206b commit 0b5ad6c

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

doc/classes/JacobianIK3D.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22
<class name="JacobianIK3D" inherits="IterateIK3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
33
<brief_description>
4-
Pseudo inverse Jacobian matrix based inverse kinematics solver.
4+
Jacobian transpose based inverse kinematics solver.
55
</brief_description>
66
<description>
77
[JacobianIK3D] calculates rotations for all joints simultaneously, producing natural and smooth movement. It is particularly suited for biological animations.

scene/3d/jacobian_ik_3d.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ void JacobianIK3D::_solve_iteration(double p_delta, Skeleton3D *p_skeleton, Iter
5454
continue;
5555
}
5656

57-
Quaternion to_rot = Quaternion(axis.normalized(), axis.length() / MAX(CMP_EPSILON, head_to_effector.length()));
57+
Quaternion to_rot = Quaternion(axis.normalized(), MIN(axis.length() / MAX(CMP_EPSILON, head_to_effector.length_squared()), angular_delta_limit)); // Clip by angular_delta_limit for stability.
5858

5959
for (int j = TAIL; j < chain_size; j++) {
6060
Vector3 to_tail = p_setting->chain[j] - current_head;

0 commit comments

Comments
 (0)