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
Obsolète : This class may be changed or removed in future versions.
Hérite de : SkeletonModifier3D < Node3D < Node < Object
Un nœud utilisé pour faire pivoter tous les os d'une chaîne d'os de Skeleton3D d'une manière qui place l'os final à une position 3D souhaitée.
Description
SkeletonIK3D is used to rotate all bones of a Skeleton3D bone chain a way that places the end bone at a desired 3D position. A typical scenario for IK in games is to place a character's feet on the ground or a character's hands on a currently held object. SkeletonIK uses FabrikInverseKinematic internally to solve the bone chain and applies the results to the Skeleton3D bones_global_pose_override property for all affected bones in the chain. If fully applied, this overwrites any bone transform from Animations or bone custom poses set by users. The applied amount can be controlled with the SkeletonModifier3D.influence property.
# Apply IK effect automatically on every new frame (not the current)
skeleton_ik_node.start()
# Apply IK effect only on the current frame
skeleton_ik_node.start(true)
# Stop IK effect and reset bones_global_pose_override on Skeleton
skeleton_ik_node.stop()
# Apply full IK effect
skeleton_ik_node.set_influence(1.0)
# Apply half IK effect
skeleton_ik_node.set_influence(0.5)
# Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton)
skeleton_ik_node.set_influence(0.0)
Propriétés
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
get_parent_skeleton() const |
|
void |
|
void |
stop() |
Descriptions des propriétés
Obsolète : Use SkeletonModifier3D.influence instead.
Valeur de l'interpolation indiquant de combien les résultats de l'IK sont appliqués à la chaîne d'os du squelette actuelle. Une valeur de 1.0 écrasera toutes les transformations d'os du squelette complètement alors qu'une valeur de 0.0 désactivera visuellement le SkeletonIK.
Vector3 magnet = Vector3(0, 0, 0) 🔗
Secondary target position (first is target property or target_node) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position.
Nombre de boucles d'itération utilisées par le résolveur IK pour produire des résultats de chaîne d'os plus précis (et élégants).
La distance minimale entre l'os et la cible. Si la distance est en dessous de cette valeur, le solveur IK arrête les itérations.
bool override_tip_basis = true 🔗
Si true, écrase la rotation de l'os du bout avec la rotation de la cible target (ou le nœud cible target_node si il est définie).
StringName root_bone = &"" 🔗
void set_root_bone(value: StringName)
StringName get_root_bone()
Le nom de l'os racine actuel, le premier os de la chaîne 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()
Première cible de la chaîne IK où l'os du bout est placé et, si override_tip_basis vaut true, comment l'os du bout est tourné. Si un chemin target_node est disponible, la transformation des nœuds est utilisée à la place et cette propriété est ignorée.
NodePath target_node = NodePath("") 🔗
NodePath du nœud cible pour la chaîne IK. Si disponible, la Transform3D actuelle du nœud est utilisée au lieu de la propriété target.
StringName tip_bone = &"" 🔗
void set_tip_bone(value: StringName)
StringName get_tip_bone()
Le nom de l'os du bout actuel, le dernier os de la chaîne d'IK placé à la transformation target (ou target_node si défini).
Si true, ordonne au solveur IK de considérer la cible magnétique secondaire (cible du pôle) lors du calcul de la chaîne d'os. Utilisez la position de l'aimant (cible du pôle) pour contrôler la flexion de la chaîne IK.
Descriptions des méthodes
Skeleton3D get_parent_skeleton() const 🔗
Renvoie le nœud parent Skeleton3D qui était présent lorsque SkeletonIK est entré dans l'arbre de scène. Renvoie null si le nœud parent n'était pas un nœud Skeleton3D lorsque SkeletonIK3D est entré dans l'arbre de scène.
Renvoie true si SkeletonIK applique les effets d'IK sur des trames continues aux os Skeleton3D. Renvoie false si SkeletonIK est arrêté ou start() a été utilisé avec le paramètre one_time défini à true.
void start(one_time: bool = false) 🔗
Commence à appliquer des effets d'IK sur chaque trame aux os Skeleton3D mais ne prendra effet que sur la prochaine trame. Si one_time vaut true, cela prendra effet immédiatement, mais aussi sera réinitialisé sur la prochaine trame.
void stop() 🔗
Arrête d'appliquer les effets d'IK à chaque trame aux os Skeleton3D et appelle également Skeleton3D.clear_bones_global_pose_override() pour supprimer les redéfinitions existantes sur tous les os.