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.

SkeletonModifier3D

Hérite de : Node3D < Node < Object

Hérité par : BoneConstraint3D, BoneTwistDisperser3D, IKModifier3D, LimitAngularVelocityModifier3D, LookAtModifier3D, ModifierBoneTarget3D, PhysicalBoneSimulator3D, RetargetModifier3D, SkeletonIK3D, SpringBoneSimulator3D, XRBodyModifier3D, XRHandModifier3D

Un nœud qui peut modifier les os d'un Skeleton3D.

Description

SkeletonModifier3D récupère un Skeleton3D cible en ayant un Skeleton3D parent.

S'il y a un AnimationMixer, une modification s'effectue toujours après le processus de lecture de l'AnimationMixer.

Ce nœud devrait être utilisé pour implémenter des solveur d'IK, des contraintes ou de la physique de squelette personnalisés.

Tutoriels

Propriétés

bool

active

true

float

influence

1.0

Méthodes

void

_process_modification() virtual

void

_process_modification_with_delta(delta: float) virtual

void

_skeleton_changed(old_skeleton: Skeleton3D, new_skeleton: Skeleton3D) virtual

void

_validate_bone_names() virtual

Skeleton3D

get_skeleton() const


Signaux

modification_processed() 🔗

Notifie quand la modification a été terminée.

Note : Si vous voulez obtenir la pose d'os modifiée par le modificateur, vous devez utiliser Skeleton3D.get_bone_pose() ou Skeleton3D.get_bone_global_pose() au moment où ce signal est tiré.


Énumérations

enum BoneAxis: 🔗

BoneAxis BONE_AXIS_PLUS_X = 0

Valeur d'énumération pour l'axe +X.

BoneAxis BONE_AXIS_MINUS_X = 1

Valeur d'énumération pour l'axe -X.

BoneAxis BONE_AXIS_PLUS_Y = 2

Valeur d'énumération pour l'axe +Y.

BoneAxis BONE_AXIS_MINUS_Y = 3

Valeur d'énumération pour l'axe -Y.

BoneAxis BONE_AXIS_PLUS_Z = 4

Valeur d'énumération pour l'axe +Z.

BoneAxis BONE_AXIS_MINUS_Z = 5

Valeur d'énumération pour l'axe -Z.


enum BoneDirection: 🔗

BoneDirection BONE_DIRECTION_PLUS_X = 0

Valeur d'énumération pour l'axe +X.

BoneDirection BONE_DIRECTION_MINUS_X = 1

Valeur d'énumération pour l'axe -X.

BoneDirection BONE_DIRECTION_PLUS_Y = 2

Valeur d'énumération pour l'axe +Y.

BoneDirection BONE_DIRECTION_MINUS_Y = 3

Valeur d'énumération pour l'axe -Y.

BoneDirection BONE_DIRECTION_PLUS_Z = 4

Valeur d'énumération pour l'axe +Z.

BoneDirection BONE_DIRECTION_MINUS_Z = 5

Valeur d'énumération pour l'axe -Z.

BoneDirection BONE_DIRECTION_FROM_PARENT = 6

Valeur d’énumération pour l'axe qui va d'un os parent vers l'os enfant.


enum SecondaryDirection: 🔗

SecondaryDirection SECONDARY_DIRECTION_NONE = 0

Enumerated value for the case when the axis is undefined.

SecondaryDirection SECONDARY_DIRECTION_PLUS_X = 1

Valeur d'énumération pour l'axe +X.

SecondaryDirection SECONDARY_DIRECTION_MINUS_X = 2

Valeur d'énumération pour l'axe -X.

SecondaryDirection SECONDARY_DIRECTION_PLUS_Y = 3

Valeur d'énumération pour l'axe +Y.

SecondaryDirection SECONDARY_DIRECTION_MINUS_Y = 4

Valeur d'énumération pour l'axe -Y.

SecondaryDirection SECONDARY_DIRECTION_PLUS_Z = 5

Valeur d'énumération pour l'axe +Z.

SecondaryDirection SECONDARY_DIRECTION_MINUS_Z = 6

Valeur d'énumération pour l'axe -Z.

SecondaryDirection SECONDARY_DIRECTION_CUSTOM = 7

Enumerated value for an optional axis.


enum RotationAxis: 🔗

RotationAxis ROTATION_AXIS_X = 0

Valeur d'énumération pour la rotation de l'axe X.

RotationAxis ROTATION_AXIS_Y = 1

Valeur d'énumération pour la rotation de l'axe Y.

RotationAxis ROTATION_AXIS_Z = 2

Valeur d'énumération pour la rotation de l'axe Z.

RotationAxis ROTATION_AXIS_ALL = 3

Valeur d'énumération pour la rotation sans contraintes.

RotationAxis ROTATION_AXIS_CUSTOM = 4

Enumerated value for an optional rotation axis.


Descriptions des propriétés

bool active = true 🔗

  • void set_active(value: bool)

  • bool is_active()

Si true, le SkeletonModifier3D traitera.


float influence = 1.0 🔗

  • void set_influence(value: float)

  • float get_influence()

Définit l'influence de la modification.

Note : Cette valeur est utilisée par Skeleton3D pour mélanger, de sorte que le SkeletonModifier3D devrait toujours seulement appliquer 100% du résultat sans interpolation.


Descriptions des méthodes

void _process_modification() virtual 🔗

Obsolète : Use _process_modification_with_delta() instead.

Redéfinissez cette méthode virtuelle pour implémenter un modificateur de squelette personnalisé. Vous devriez faire des choses comme obtenir la pose actuelle du Skeleton3D et appliquer la pose ici.

_process_modification() ne doit pas appliquer influence aux poses des os car le Skeleton3D applique automatiquement l'influence à toutes les poses des os définies par le modificateur.


void _process_modification_with_delta(delta: float) virtual 🔗

Override this virtual method to implement a custom skeleton modifier. You should do things like get the Skeleton3D's current pose and apply the pose here.

_process_modification_with_delta() must not apply influence to bone poses because the Skeleton3D automatically applies influence to all bone poses set by the modifier.

delta is passed from parent Skeleton3D. See also Skeleton3D.advance().

Note: This method may be called outside Node._process() and Node._physics_process() with delta is 0.0, since the modification should be processed immediately after initialization of the Skeleton3D.


void _skeleton_changed(old_skeleton: Skeleton3D, new_skeleton: Skeleton3D) virtual 🔗

Appelée quand le squelette est changé.


void _validate_bone_names() virtual 🔗

Called when bone names and indices need to be validated, such as when entering the scene tree or changing skeleton.


Skeleton3D get_skeleton() const 🔗

Returns the parent Skeleton3D node if it exists. Otherwise, returns null.