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.

IterateIK3D

Hereda: ChainIK3D < IKModifier3D < SkeletonModifier3D < Node3D < Node < Object

Heredado por: CCDIK3D, FABRIK3D, JacobianIK3D

Un SkeletonModifier3D para acercarse al objetivo repitiendo pequeñas rotaciones.

Descripción

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).

Propiedades

float

angular_delta_limit

0.034906585

bool

deterministic

false

int

max_iterations

4

float

min_distance

0.001

int

setting_count

0

Métodos

JointLimitation3D

get_joint_limitation(index: int, joint: int) const

SecondaryDirection

get_joint_limitation_right_axis(index: int, joint: int) const

Vector3

get_joint_limitation_right_axis_vector(index: int, joint: int) const

Quaternion

get_joint_limitation_rotation_offset(index: int, joint: int) const

RotationAxis

get_joint_rotation_axis(index: int, joint: int) const

Vector3

get_joint_rotation_axis_vector(index: int, joint: int) const

NodePath

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)


Descripciones de Propiedades

float angular_delta_limit = 0.034906585 🔗

  • void set_angular_delta_limit(value: float)

  • float get_angular_delta_limit()

La cantidad máxima que cada hueso puede rotar en una sola iteración.

Nota: Esta limitación se aplica durante cada iteración. Por ejemplo, si max_iterations es 4 y angular_delta_limit es 5 grados, la rotación máxima posible en un solo fotograma es de 20 grados.


bool deterministic = false 🔗

  • void set_deterministic(value: bool)

  • bool is_deterministic()

Si es false, el resultado se calcula a partir del resultado de IterateIK3D del fotograma anterior como estado inicial.

Si es true, el resultado de IterateIK3D del fotograma anterior se descarta. En este punto, el nuevo resultado se calcula a partir de la pose del hueso excluyendo IterateIK3D como estado inicial. Esto significa que el resultado siempre será igual mientras la posición objetivo y la pose del hueso anterior sean las mismas. Sin embargo, si angular_delta_limit y max_iterations se establecen demasiado pequeños, el hueso final de la cadena nunca alcanzará el objetivo.


int max_iterations = 4 🔗

  • void set_max_iterations(value: int)

  • int get_max_iterations()

El número de bucles de iteración utilizados por el solucionador de IK para producir resultados más precisos.


float min_distance = 0.001 🔗

  • void set_min_distance(value: float)

  • float get_min_distance()

La distancia mínima entre el hueso final y el objetivo. Si la distancia es inferior a este valor, el solucionador de IK detiene cualquier iteración adicional.


int setting_count = 0 🔗

  • void set_setting_count(value: int)

  • int get_setting_count()

El número de configuraciones.


Descripciones de Métodos

JointLimitation3D get_joint_limitation(index: int, joint: int) const 🔗

Devuelve la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.


SecondaryDirection get_joint_limitation_right_axis(index: int, joint: int) const 🔗

Devuelve el eje derecho de la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.


Vector3 get_joint_limitation_right_axis_vector(index: int, joint: int) const 🔗

Devuelve el vector del eje derecho de la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.

Si get_joint_limitation_right_axis() es SkeletonModifier3D.SECONDARY_DIRECTION_NONE, este método devuelve 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 🔗

Devuelve el eje de rotación en joint en la lista de articulaciones de la cadena de huesos.


Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗

Devuelve el vector del eje de rotación para la articulación especificada en la cadena de huesos. Este vector representa el eje alrededor del cual la articulación puede rotar. Se determina en función del eje de rotación establecido para la articulación.

Si get_joint_rotation_axis() es SkeletonModifier3D.ROTATION_AXIS_ALL, este método devuelve Vector3(0, 0, 0).


NodePath get_target_node(index: int) const 🔗

Devuelve el nodo objetivo que el hueso final está intentando alcanzar.


void set_joint_limitation(index: int, joint: int, limitation: JointLimitation3D) 🔗

Establece la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.


void set_joint_limitation_right_axis(index: int, joint: int, direction: SecondaryDirection) 🔗

Establece el eje derecho de la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.


void set_joint_limitation_right_axis_vector(index: int, joint: int, vector: Vector3) 🔗

Establece el vector opcional del eje derecho de la limitación de la articulación en joint en la lista de articulaciones de la cadena de huesos.


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) 🔗

Establece el vector del eje de rotación para la articulación especificada en la cadena de huesos.

Este vector se normaliza mediante un proceso interno y representa el eje alrededor del cual puede rotar la cadena de huesos.

Si la longitud del vector es 0, se considera sinónimo de SkeletonModifier3D.ROTATION_AXIS_ALL.


void set_target_node(index: int, target_node: NodePath) 🔗

Establece el nodo objetivo que el hueso final intenta alcanzar.