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
Eredita: ChainIK3D < IKModifier3D < SkeletonModifier3D < Node3D < Node < Object
Ereditato da: CCDIK3D, FABRIK3D, JacobianIK3D
Uno SkeletonModifier3D per avvicinarsi all'obiettivo ripetendo piccole rotazioni.
Descrizione
Classe base di SkeletonModifier3D per raggiungere l'obiettivo ripetendo piccole rotazioni.
Ogni catena di ossa (impostazione) ha un effettore, che è elaborato nell'ordine dell'elenco delle impostazioni. È possibile impostare alcune limitazioni per ogni articolazione.
Nota: Tutti i metodi di questa classe accettano un parametro index. Questo parametro specifica quale voce nell'elenco delle impostazioni restituire, se l'IK ha più voci (ad esempio, settings/<index>/target_node).
Proprietà
|
||
|
||
|
||
|
||
|
Metodi
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) |
Descrizioni delle proprietà
float angular_delta_limit = 0.034906585 🔗
La rotazione massima consentita per ciascun osso in una singola iterazione.
Nota: Questa limitazione viene applicata durante ogni iterazione. Ad esempio, se max_iterations è 4 e angular_delta_limit è 5 gradi, la rotazione massima possibile in un singolo frame è di 20 gradi.
Se false, il risultato viene calcolato a partire dal risultato IterateIK3D del frame precedente come stato iniziale.
Se true, il risultato IterateIK3D del frame precedente viene scartato. A questo punto, il nuovo risultato viene calcolato a partire dalla posa dell'osso escludendo IterateIK3D come stato iniziale. Ciò significa che il risultato sarà sempre uguale finché la posizione di destinazione e la posa dell'osso precedente sono le stesse. Tuttavia, se angular_delta_limit e max_iterations sono impostati su valori troppo piccoli, l'osso finale della catena non raggiungerà mai la destinazione.
Il numero di cicli di iterazione utilizzati dal risolutore IK per produrre risultati più accurati.
La distanza minima tra l'osso finale e la destinazione. Se la distanza è inferiore a questo valore, il risolutore IK interrompe ulteriori iterazioni.
Il numero di impostazioni.
Descrizioni dei metodi
JointLimitation3D get_joint_limitation(index: int, joint: int) const 🔗
Restituisce la limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
SecondaryDirection get_joint_limitation_right_axis(index: int, joint: int) const 🔗
Restituisce l'asse destro della limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
Vector3 get_joint_limitation_right_axis_vector(index: int, joint: int) const 🔗
Restituisce il vettore dell'asse destro per la limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
Se get_joint_limitation_right_axis() è SkeletonModifier3D.SECONDARY_DIRECTION_NONE, questo metodo restituisce Vector3(0, 0, 0).
Quaternion get_joint_limitation_rotation_offset(index: int, joint: int) const 🔗
Restituisce l'offset di rotazione della limitazione dell'articolazione in joint nell'elenco delle articolazioni della catena d'ossa.
La rotazione è effettuata nello spazio locale, definito dalla direzione dell'osso (in generale da genitore a figlio) come asse +Y e da get_joint_limitation_right_axis_vector() come asse +X.
Se gli assi +X e +Y non sono ortogonali, l'asse +X viene implicitamente modificato per renderlo ortogonale.
Inoltre, se la lunghezza di get_joint_limitation_right_axis_vector() è zero, lo spazio viene creato ruotando la posa di riferimento attraverso l'arco più breve che ruota l'asse +Y della posa di riferimento, in modo da farlo coincidere con la direzione dell'osso.
Qui, la posa di riferimento è la posa dell'osso immediatamente prima dell'elaborazione dell'IK.
RotationAxis get_joint_rotation_axis(index: int, joint: int) const 🔗
Restituisce l'asse di rotazione in joint nella lista delle articolazioni della catena d'ossa.
Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗
Restituisce il vettore dell'asse di rotazione per l'articolazione specificata nella catena d'ossa. Questo vettore rappresenta l'asse attorno al quale l'articolazione può ruotare. È determinato in base all'asse di rotazione impostato per l'articolazione.
Se get_joint_rotation_axis() è SkeletonModifier3D.ROTATION_AXIS_ALL, questo metodo restituisce Vector3(0, 0, 0).
NodePath get_target_node(index: int) const 🔗
Restituisce il nodo di destinazione che l'osso finale sta tentando di raggiungere.
void set_joint_limitation(index: int, joint: int, limitation: JointLimitation3D) 🔗
Imposta la limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
void set_joint_limitation_right_axis(index: int, joint: int, direction: SecondaryDirection) 🔗
Imposta l'asse destro della limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
void set_joint_limitation_right_axis_vector(index: int, joint: int, vector: Vector3) 🔗
Imposta il vettore facoltativo dell'asse destro per la limitazione dell'articolazione in joint nella lista delle articolazioni della catena d'ossa.
void set_joint_limitation_rotation_offset(index: int, joint: int, offset: Quaternion) 🔗
Imposta l'offset di rotazione della limitazione dell'articolazione in joint nell'elenco delle articolazioni della catena d'ossa.
La rotazione è effettuata nello spazio locale, definito dalla direzione dell'osso (in generale da genitore a figlio) come asse +Y e da get_joint_limitation_right_axis_vector() come asse +X.
Se gli assi +X e +Y non sono ortogonali, l'asse +X viene implicitamente modificato per renderlo ortogonale.
Inoltre, se la lunghezza di get_joint_limitation_right_axis_vector() è zero, lo spazio viene creato ruotando la posa di riferimento attraverso l'arco più breve che ruota l'asse +Y della posa di riferimento, in modo da farlo coincidere con la direzione dell'osso.
Qui, la posa di riferimento è la posa dell'osso immediatamente prima dell'elaborazione dell'IK.
void set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) 🔗
Imposta l'asse di rotazione dell'articolazione joint nell'elenco delle articolazioni della catena d'ossa.
Gli assi si basano sullo spazio della posa di riferimento. Se axis è SkeletonModifier3D.ROTATION_AXIS_CUSTOM, è possibile specificare qualsiasi asse.
Qui, la posa di riferimento è la posa dell'osso immediatamente prima dell'elaborazione dell'IK.
Nota: L'asse di rotazione e il vettore in avanti non dovrebbero essere collineari per evitare rotazioni indesiderate poiché ChainIK3D non tiene conto delle forze di torsione.
void set_joint_rotation_axis_vector(index: int, joint: int, axis_vector: Vector3) 🔗
Imposta il vettore dell'asse di rotazione per l'articolazione specificata nella catena d'ossa.
Questo vettore è normalizzato da un processo interno e rappresenta l'asse attorno al quale la catena d'ossa può ruotare.
Se la lunghezza del vettore è 0, è considerato come sinonimo di SkeletonModifier3D.ROTATION_AXIS_ALL.
void set_target_node(index: int, target_node: NodePath) 🔗
Imposta il nodo di destinazione che l'osso finale sta tentando di raggiungere.