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.

BoneTwistDisperser3D

Hérite de : SkeletonModifier3D < Node3D < Node < Object

Un nœud qui propage et disperse la torsion de l'os enfant aux os parent.

Description

This BoneTwistDisperser3D allows for smooth twist interpolation between multiple bones by dispersing the end bone's twist to the parents. This only changes the twist without changing the global position of each joint.

This is useful for smoothly twisting bones in combination with CopyTransformModifier3D and IK.

Note: If an extracted twist is greater than 180 degrees, flipping occurs. This is similar to ConvertTransformModifier3D.

Note: Most 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>/root_bone_name).

Propriétés

bool

mutable_bone_axes

true

int

setting_count

0

Méthodes

void

clear_settings()

Curve

get_damping_curve(index: int) const

DisperseMode

get_disperse_mode(index: int) const

int

get_end_bone(index: int) const

BoneDirection

get_end_bone_direction(index: int) const

String

get_end_bone_name(index: int) const

int

get_joint_bone(index: int, joint: int) const

String

get_joint_bone_name(index: int, joint: int) const

int

get_joint_count(index: int) const

float

get_joint_twist_amount(index: int, joint: int) const

int

get_reference_bone(index: int) const

String

get_reference_bone_name(index: int) const

int

get_root_bone(index: int) const

String

get_root_bone_name(index: int) const

Quaternion

get_twist_from(index: int) const

float

get_weight_position(index: int) const

bool

is_end_bone_extended(index: int) const

bool

is_twist_from_rest(index: int) const

void

set_damping_curve(index: int, curve: Curve)

void

set_disperse_mode(index: int, disperse_mode: DisperseMode)

void

set_end_bone(index: int, bone: int)

void

set_end_bone_direction(index: int, bone_direction: BoneDirection)

void

set_end_bone_name(index: int, bone_name: String)

void

set_extend_end_bone(index: int, enabled: bool)

void

set_joint_twist_amount(index: int, joint: int, twist_amount: float)

void

set_root_bone(index: int, bone: int)

void

set_root_bone_name(index: int, bone_name: String)

void

set_twist_from(index: int, from: Quaternion)

void

set_twist_from_rest(index: int, enabled: bool)

void

set_weight_position(index: int, weight_position: float)


Énumérations

enum DisperseMode: 🔗

DisperseMode DISPERSE_MODE_EVEN = 0

Attribue des valeurs de sorte qu’elles augmentent de manière monotone de 0.0 à 1.0, en garantissant que tous les poids soient égaux. Par exemple, avec cinq articulations, les valeurs seraient 0.2, 0.4, 0.6, 0.8 et 1.0 en partant de l’os racine.

DisperseMode DISPERSE_MODE_WEIGHTED = 1

Attribue des valeurs de sorte qu’elles augmentent de manière monotone de 0.0 à 1.0, en se basant sur la longueur des os entre les segments d’articulations. Voir également set_weight_position().

DisperseMode DISPERSE_MODE_CUSTOM = 2

Vous pouvez attribuer des valeurs arbitraires à la liste des articulations. Voir également set_joint_twist_amount().

Lorsque is_end_bone_extended() est false, un enfant de l’os de référence existe uniquement pour déterminer l’axe de torsion, donc sa valeur personnalisée n’a absolument aucun effet.


Descriptions des propriétés

bool mutable_bone_axes = true 🔗

  • void set_mutable_bone_axes(value: bool)

  • bool are_bone_axes_mutable()

If true, the solver retrieves the bone axis from the bone pose every frame.

If false, the solver retrieves the bone axis from the bone rest and caches it.


int setting_count = 0 🔗

  • void set_setting_count(value: int)

  • int get_setting_count()

Le nombre de paramètres.


Descriptions des méthodes

void clear_settings() 🔗

Efface tous les paramètres.


Curve get_damping_curve(index: int) const 🔗

Renvoie la courbe d'amortissement lorsque get_disperse_mode() est DISPERSE_MODE_CUSTOM.


DisperseMode get_disperse_mode(index: int) const 🔗

Renvoie s'il faut utiliser l'assignation automatique ou autoriser l'assignation manuelle.


int get_end_bone(index: int) const 🔗

Renvoie l'index de l'os de fin de la chaîne d'os.


BoneDirection get_end_bone_direction(index: int) const 🔗

Renvoie la direction de la queue de l'os de fin de la chaîne d'os lorsque is_end_bone_extended() vaut true.


String get_end_bone_name(index: int) const 🔗

Renvoie le nom de l'os de fin de la chaîne d'os.


int get_joint_bone(index: int, joint: int) const 🔗

Renvoie l'index de l'os à la liaison joint dans la liste de liaisons de la chaîne d'os.


String get_joint_bone_name(index: int, joint: int) const 🔗

Renvoie le nom de l'os à la liaison joint dans la liste de liaisons de la chaîne d'os.


int get_joint_count(index: int) const 🔗

Renvoie la quantité de liaisons dans la liste des liaisons de la chaîne d'os.


float get_joint_twist_amount(index: int, joint: int) const 🔗

Définit la quantité de gravité de la liaison joint dans la liste des liaisons de la chaîne d'os lorsque get_disperse_mode() vaut DISPERSE_MODE_CUSTOM.


int get_reference_bone(index: int) const 🔗

Returns the reference bone to extract twist of the setting at index.

This bone is either the end of the chain or its parent, depending on is_end_bone_extended().


String get_reference_bone_name(index: int) const 🔗

Returns the reference bone name to extract twist of the setting at index.

This bone is either the end of the chain or its parent, depending on is_end_bone_extended().


int get_root_bone(index: int) const 🔗

Renvoie l'index de l'os racine de la chaîne d'os.


String get_root_bone_name(index: int) const 🔗

Renvoie le nom de l'os racine de la chaîne d'os.


Quaternion get_twist_from(index: int) const 🔗

Returns the rotation to an arbitrary state before twisting for the current bone pose to extract the twist when is_twist_from_rest() is false.


float get_weight_position(index: int) const 🔗

Renvoie la position à laquelle diviser le segment entre les articulations pour la répartition du poids lorsque get_disperse_mode() vaut DISPERSE_MODE_WEIGHTED.


bool is_end_bone_extended(index: int) const 🔗

Renvoie true si l'os final est prolongé pour avoir une queue.


bool is_twist_from_rest(index: int) const 🔗

Returns true if extracting the twist amount from the difference between the bone rest and the current bone pose.


void set_damping_curve(index: int, curve: Curve) 🔗

Définit la courbe d'amortissement quand get_disperse_mode() est DISPERSE_MODE_CUSTOM.


void set_disperse_mode(index: int, disperse_mode: DisperseMode) 🔗

Définit si la quantité est attribuée automatiquement ou manuellement.


void set_end_bone(index: int, bone: int) 🔗

Définit l'index de l'os de fin de la chaîne d'os.


void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗

Définit la direction de la queue de l'os de fin de la chaîne d'os lorsque is_end_bone_extended() vaut true.


void set_end_bone_name(index: int, bone_name: String) 🔗

Définit le nom de l'os de fin de la chaîne d'os.

Note : L'os de fin doit être l'os racine ou un enfant de l'os racine. S'ils sont les mêmes, la queue doit être étendue par set_extend_end_bone() pour faire gigoter l'os.


void set_extend_end_bone(index: int, enabled: bool) 🔗

Si enabled vaut true, l'os final est prolongé pour avoir une queue.

Si enabled vaut false, get_reference_bone() devient un parent de l'os final et il utilise le vecteur à l'os final comme axe de torsion.


void set_joint_twist_amount(index: int, joint: int, twist_amount: float) 🔗

Définit la quantité de gravité de la liaison joint dans la liste des liaisons de la chaîne d'os lorsque get_disperse_mode() is DISPERSE_MODE_CUSTOM.


void set_root_bone(index: int, bone: int) 🔗

Définit l'index de l'os racine de la chaîne d'os.


void set_root_bone_name(index: int, bone_name: String) 🔗

Définit le nom de l'os racine de la chaîne d'os.


void set_twist_from(index: int, from: Quaternion) 🔗

Définit la rotation dans un état arbitraire avant la torsion pour la pose actuelle de l’os afin d’extraire la torsion lorsque is_twist_from_rest() est false.

Autrement dit, en appelant set_twist_from() depuis le signal SkeletonModifier3D.modification_processed d’un SkeletonModifier3D spécifique, vous pouvez extraire uniquement les torsions générées par les modificateurs traités après celui-ci mais avant ce BoneTwistDisperser3D.


void set_twist_from_rest(index: int, enabled: bool) 🔗

Si enabled est true, la quantité de torsion est extraite à partir de la différence entre la pose de repos de l’os et la pose actuelle de l’os.

Si enabled est false, la quantité de torsion est extraite à partir de la différence entre get_twist_from() et la pose actuelle de l’os. Voir également set_twist_from().


void set_weight_position(index: int, weight_position: float) 🔗

Définit la position à laquelle diviser le segment entre les articulations pour l’attribution des poids lorsque get_disperse_mode() est DISPERSE_MODE_WEIGHTED.

Par exemple, lorsque weight_position est 0.5, si deux segments d’os d’une longueur de 1.0 existent entre trois articulations, les poids sont attribués à chaque articulation de la racine vers l’extrémité avec des ratios de 0.5, 1.0 et 0.5. Les valeurs deviennent alors respectivement 0.25, 0.75 et 1.0.