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...
SkeletonIK3D
Deprecato: This class may be changed or removed in future versions.
Eredita: SkeletonModifier3D < Node3D < Node < Object
Un nodo utilizzato per ruotare tutte le ossa di una catena ossea Skeleton3D in modo da posizionare l'osso finale nella posizione 3D desiderata.
Descrizione
SkeletonIK3D serve per ruotare tutte le ossa di una catena d'ossa di uno Skeleton3D in modo da posizionare l'osso finale in una posizione 3D desiderata. Uno scenario tipico per un IK nei giochi è quello di posizionare i piedi di un personaggio a terra o le mani di un personaggio su un oggetto mantenuto. SkeletonIK utilizza FabrikInverseKinematic internamente per risolvere la catena d'ossa e applica il risultato alla proprietà Skeleton3D bones_global_pose_override per tutte le ossa influenzate nella catena. Se applicato completamente, ciò sovrascrive qualsiasi trasformazione delle ossa dalle Animation o pose personalizzate delle ossa impostate dagli utenti. La quantità applicata può essere controllata con la proprietà SkeletonModifier3D.influence.
# Applica l'effetto IK automaticamente a ogni nuova frame (non l'attuale)
skeleton_ik_node.start()
# Applica l'effetto IK solo per la frame attuale
skeleton_ik_node.start(true)
# Interrompe l'effetto IK e ripristina bones_global_pose_override sullo scheletro
skeleton_ik_node.stop()
# Applica l'effetto IK completamente
skeleton_ik_node.set_influence(1.0)
# Applica l'effetto IK a metà
skeleton_ik_node.set_influence(0.5)
# Applica nessun effetto IK (anche un valore uguale o minore di 0.01 rimuove bones_global_pose_override sullo scheletro)
skeleton_ik_node.set_influence(0.0)
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
get_parent_skeleton() const |
|
void |
|
void |
stop() |
Descrizioni delle proprietà
Deprecato: Use SkeletonModifier3D.influence instead.
Valore di interpolazione per quanto i risultati IK sono applicati alla catena ossea dello scheletro attuale. Un valore di 1.0 sovrascriverà completamente tutte le trasformazioni ossee dello scheletro mentre un valore di 0.0 disabiliterà visivamente lo SkeletonIK.
Vector3 magnet = Vector3(0, 0, 0) 🔗
Posizione di destinazione secondaria (la prima è la proprietà target o target_node) per la catena IK. Usa la posizione del magnete (destinazione del polo) per controllare la flessione della catena IK. Funziona solo se la catena ossea ha più di 2 ossa. La posizione dell'osso della catena centrale sarà interpolata linearmente con la posizione del magnete.
Numero di cicli di iterazione utilizzati dal risolutore IK per produrre risultati più accurati (ed eleganti) sulla catena ossea.
La distanza minima tra l'osso e la destinazione. Se la distanza è inferiore a questo valore, il risolutore IK interrompe ulteriori iterazioni.
bool override_tip_basis = true 🔗
Se true sovrascrive la rotazione dell'osso della punta con la rotazione del target (o target_node se definito).
StringName root_bone = &"" 🔗
void set_root_bone(value: StringName)
StringName get_root_bone()
Il nome dell'osso radice attuale, il primo osso nella catena IK.
Transform3D target = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_target_transform(value: Transform3D)
Transform3D get_target_transform()
Prima destinazione della catena IK in cui è posizionato l'osso della punta e, se override_tip_basis è true, come viene ruotato l'osso della punta. Se è disponibile un percorso target_node, la trasformazione dei nodi è usata e questa proprietà viene ignorata.
NodePath target_node = NodePath("") 🔗
Il NodePath del nodo di destinazione] per la catena IK. Se disponibile, è utilizzato il Transform3D attuale del nodo al posto della proprietà target.
StringName tip_bone = &"" 🔗
void set_tip_bone(value: StringName)
StringName get_tip_bone()
Il nome dell'osso della punta attuale, l'ultimo osso nella catena IK posizionato nella trasformazione di target (o target_node se definito).
Se true, istruisce il risolutore IK a considerare la destinazione del magnete secondario (destinazione del polo) quando calcola la catena ossea. Usa la posizione del magnete (destinazione del polo) per controllare la flessione della catena IK.
Descrizioni dei metodi
Skeleton3D get_parent_skeleton() const 🔗
Restituisce il nodo Skeleton3D genitore che era presente quando questo SkeletonIK è entrato nell'albero di scene. Restituisce null se il nodo genitore non era un nodo Skeleton3D quando lo SkeletonIK3D è entrato nell'albero di scene.
Restituisce true se SkeletonIK sta applicando effetti IK su frame continui alle ossa Skeleton3D. Restituisce false se SkeletonIK è stato arrestato o è stato usato start() con il parametro one_time impostato su true.
void start(one_time: bool = false) 🔗
Inizia ad applicare gli effetti IK su ogni frame alle ossa dello Skeleton3D ma avrà effetto solo a partire dal frame successivo. Se one_time è true, avrà effetto immediatamente ma verrà anche reimpostato sul frame successivo.
void stop() 🔗
Interrompe l'applicazione degli effetti IK su ogni frame alle ossa Skeleton3D e richiama anche Skeleton3D.clear_bones_global_pose_override() per rimuovere le sostituzioni esistenti su tutte le ossa.