Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
IterateIK3D
Hérite de : ChainIK3D < IKModifier3D < SkeletonModifier3D < Node3D < Node < Object
Hérité par : CCDIK3D, FABRIK3D, JacobianIK3D
A SkeletonModifier3D to approach the goal by repeating small rotations.
Description
Base class of SkeletonModifier3D to approach the goal by repeating small rotations.
Each bone chain (setting) has one effector, which is processed in order of the setting list. You can set some limitations for each joint.
Note: All the methods in this class take an index parameter. This parameter specifies which setting list entry to return if the IK has multiple entries (e.g. settings/<index>/target_node).
Propriétés
|
||
|
||
|
||
|
||
|
Méthodes
get_joint_limitation(index: int, joint: int) const |
|
get_joint_limitation_right_axis(index: int, joint: int) const |
|
get_joint_limitation_right_axis_vector(index: int, joint: int) const |
|
get_joint_limitation_rotation_offset(index: int, joint: int) const |
|
get_joint_rotation_axis(index: int, joint: int) const |
|
get_joint_rotation_axis_vector(index: int, joint: int) const |
|
get_target_node(index: int) const |
|
void |
set_joint_limitation(index: int, joint: int, limitation: JointLimitation3D) |
void |
set_joint_limitation_right_axis(index: int, joint: int, direction: SecondaryDirection) |
void |
set_joint_limitation_right_axis_vector(index: int, joint: int, vector: Vector3) |
void |
set_joint_limitation_rotation_offset(index: int, joint: int, offset: Quaternion) |
void |
set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) |
void |
set_joint_rotation_axis_vector(index: int, joint: int, axis_vector: Vector3) |
void |
set_target_node(index: int, target_node: NodePath) |
Descriptions des propriétés
float angular_delta_limit = 0.034906585 🔗
The maximum amount each bone can rotate in a single iteration.
Note: This limitation is applied during each iteration. For example, if max_iterations is 4 and angular_delta_limit is 5 degrees, the maximum rotation possible in a single frame is 20 degrees.
If false, the result is calculated from the previous frame's IterateIK3D result as the initial state.
If true, the previous frame's IterateIK3D result is discarded. At this point, the new result is calculated from the bone pose excluding the IterateIK3D as the initial state. This means the result will be always equal as long as the target position and the previous bone pose are the same. However, if angular_delta_limit and max_iterations are set too small, the end bone of the chain will never reach the target.
The number of iteration loops used by the IK solver to produce more accurate results.
The minimum distance between the end bone and the target. If the distance is below this value, the IK solver stops any further iterations.
Le nombre de paramètres.
Descriptions des méthodes
JointLimitation3D get_joint_limitation(index: int, joint: int) const 🔗
Returns the joint limitation at joint in the bone chain's joint list.
SecondaryDirection get_joint_limitation_right_axis(index: int, joint: int) const 🔗
Returns the joint limitation right axis at joint in the bone chain's joint list.
Vector3 get_joint_limitation_right_axis_vector(index: int, joint: int) const 🔗
Returns the joint limitation right axis vector at joint in the bone chain's joint list.
If get_joint_limitation_right_axis() is SkeletonModifier3D.SECONDARY_DIRECTION_NONE, this method returns Vector3(0, 0, 0).
Quaternion get_joint_limitation_rotation_offset(index: int, joint: int) const 🔗
Returns the joint limitation rotation offset at joint in the bone chain's joint list.
Rotation is done in the local space which is constructed by the bone direction (in general parent to child) as the +Y axis and get_joint_limitation_right_axis_vector() as the +X axis.
If the +X and +Y axes are not orthogonal, the +X axis is implicitly modified to make it orthogonal.
Also, if the length of get_joint_limitation_right_axis_vector() is zero, the space is created by rotating the reference pose using the shortest arc that rotates the +Y axis of the reference pose to match the bone direction.
In here, the reference pose is the bone pose immediately before processing IK.
RotationAxis get_joint_rotation_axis(index: int, joint: int) const 🔗
Renvoie l'axe de rotation à la liaison joint dans la liste des liaisons de la chaîne d'os.
Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗
Renvoie le vecteur de l'axe de rotation à la liaison spécifiée dans la liste des liaisons de la chaîne d'os. Ce vecteur représente l'axe autour duquel la liaison peut tourner. Il est déterminé en fonction de l'axe de rotation défini pour la liaison.
Si get_joint_rotation_axis() vaut SkeletonModifier3D.ROTATION_AXIS_ALL, cette méthode renvoie Vector3(0, 0, 0).
NodePath get_target_node(index: int) const 🔗
Renvoie le nœud cible que l'os final tente d'atteindre.
void set_joint_limitation(index: int, joint: int, limitation: JointLimitation3D) 🔗
Sets the joint limitation at joint in the bone chain's joint list.
void set_joint_limitation_right_axis(index: int, joint: int, direction: SecondaryDirection) 🔗
Sets the joint limitation right axis at joint in the bone chain's joint list.
void set_joint_limitation_right_axis_vector(index: int, joint: int, vector: Vector3) 🔗
Sets the optional joint limitation right axis vector at joint in the bone chain's joint list.
void set_joint_limitation_rotation_offset(index: int, joint: int, offset: Quaternion) 🔗
Sets the joint limitation rotation offset at joint in the bone chain's joint list.
Rotation is done in the local space which is constructed by the bone direction (in general parent to child) as the +Y axis and get_joint_limitation_right_axis_vector() as the +X axis.
If the +X and +Y axes are not orthogonal, the +X axis is implicitly modified to make it orthogonal.
Also, if the length of get_joint_limitation_right_axis_vector() is zero, the space is created by rotating the reference pose using the shortest arc that rotates the +Y axis of the reference pose to match the bone direction.
In here, the reference pose is the bone pose immediately before processing IK.
void set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) 🔗
Sets the rotation axis at joint in the bone chain's joint list.
The axes are based on the reference pose's space, if axis is SkeletonModifier3D.ROTATION_AXIS_CUSTOM, you can specify any axis.
In here, the reference pose is the bone pose immediately before processing IK.
Note: The rotation axis and the forward vector shouldn't be colinear to avoid unintended rotation since ChainIK3D does not factor in twisting forces.
void set_joint_rotation_axis_vector(index: int, joint: int, axis_vector: Vector3) 🔗
Définit le vecteur d'axe de rotation pour la liaison spécifiée dans la chaîne d'os.
Ce vecteur est normalisé par un processus interne et représente l'axe autour duquel la chaîne d'os peut tourner.
Si la longueur du vecteur est de 0, il est considéré comme synonyme de SkeletonModifier3D.ROTATION_AXIS_ALL.
void set_target_node(index: int, target_node: NodePath) 🔗
Définit le nœud cible que l'os final tente d'atteindre.