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

Успадковує: Node3D < Node < Object

Успадковано від: BoneConstraint3D, BoneTwistDisperser3D, IKModifier3D, LimitAngularVelocityModifier3D, LookAtModifier3D, ModifierBoneTarget3D, PhysicalBoneSimulator3D, RetargetModifier3D, SkeletonIK3D, SpringBoneSimulator3D, XRBodyModifier3D, XRHandModifier3D

Вузол, який може змінювати кістки Skeleton3D.

Опис

SkeletonModifier3D отримує цільовий Skeleton3D, маючи батьківський елемент Skeleton3D.

Якщо є AnimationMixer, модифікація завжди виконується після процесу відтворення AnimationMixer.

Цей вузол слід використовувати для реалізації користувацьких IK-розв'язувачів, обмежень або фізики скелета.

Посібники

Властивості

bool

active

true

float

influence

1.0

Методи

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


Сигнали

modification_processed() 🔗

Повідомляє про завершення модифікації.

Примітка: Якщо ви хочете отримати змінену позу кістки за допомогою модифікатора, ви повинні використовувати Skeleton3D.get_bone_pose() або Skeleton3D.get_bone_global_pose() у момент спрацьовування цього сигналу.


Переліки

enum BoneAxis: 🔗

BoneAxis BONE_AXIS_PLUS_X = 0

Перераховане значення для осі +X.

BoneAxis BONE_AXIS_MINUS_X = 1

Перераховане значення для осі -X.

BoneAxis BONE_AXIS_PLUS_Y = 2

Перераховане значення для осі +Y.

BoneAxis BONE_AXIS_MINUS_Y = 3

Перераховане значення для осі -Y.

BoneAxis BONE_AXIS_PLUS_Z = 4

Перераховане значення для осі +Z.

BoneAxis BONE_AXIS_MINUS_Z = 5

Перераховане значення для осі -Z.


enum BoneDirection: 🔗

BoneDirection BONE_DIRECTION_PLUS_X = 0

Перераховане значення для осі +X.

BoneDirection BONE_DIRECTION_MINUS_X = 1

Перераховане значення для осі -X.

BoneDirection BONE_DIRECTION_PLUS_Y = 2

Перераховане значення для осі +Y.

BoneDirection BONE_DIRECTION_MINUS_Y = 3

Перераховане значення для осі -Y.

BoneDirection BONE_DIRECTION_PLUS_Z = 4

Перераховане значення для осі +Z.

BoneDirection BONE_DIRECTION_MINUS_Z = 5

Перераховане значення для осі -Z.

BoneDirection BONE_DIRECTION_FROM_PARENT = 6

Перераховане значення для осі від батьківської кістки до дочірньої кістки.


enum SecondaryDirection: 🔗

SecondaryDirection SECONDARY_DIRECTION_NONE = 0

Перечислюване значення для випадку, коли вісь невизначена.

SecondaryDirection SECONDARY_DIRECTION_PLUS_X = 1

Перераховане значення для осі +X.

SecondaryDirection SECONDARY_DIRECTION_MINUS_X = 2

Перераховане значення для осі -X.

SecondaryDirection SECONDARY_DIRECTION_PLUS_Y = 3

Перераховане значення для осі +Y.

SecondaryDirection SECONDARY_DIRECTION_MINUS_Y = 4

Перераховане значення для осі -Y.

SecondaryDirection SECONDARY_DIRECTION_PLUS_Z = 5

Перераховане значення для осі +Z.

SecondaryDirection SECONDARY_DIRECTION_MINUS_Z = 6

Перераховане значення для осі -Z.

SecondaryDirection SECONDARY_DIRECTION_CUSTOM = 7

Перечислюване значення для додаткової осі.


enum RotationAxis: 🔗

RotationAxis ROTATION_AXIS_X = 0

Перераховане значення повороту осі Х.

RotationAxis ROTATION_AXIS_Y = 1

Перераховане значення повороту осі Y.

RotationAxis ROTATION_AXIS_Z = 2

Перераховане значення повороту осі Z.

RotationAxis ROTATION_AXIS_ALL = 3

Перераховане значення для необмеженого обертання.

RotationAxis ROTATION_AXIS_CUSTOM = 4

Перечислюване значення для додаткової осі обертання.


Описи властивостей

bool active = true 🔗

  • void set_active(value: bool)

  • bool is_active()

Якщо true, то SkeletonModifier3D буде оброблятися.


float influence = 1.0 🔗

  • void set_influence(value: float)

  • float get_influence()

Встановлює вплив модифікації.

Примітка: Це значення використовується Skeleton3D для змішування, тому SkeletonModifier3D має завжди застосовувати лише 100% результату без інтерполяції.


Описи методів

void _process_modification() virtual 🔗

Застаріло: Use _process_modification_with_delta() instead.

Перевизначте цей віртуальний метод, щоб реалізувати власний модифікатор скелета. Вам слід виконати такі дії, як отримання поточної пози Skeleton3D та застосування її тут.

_process_modification() не повинен застосовувати influence до поз кісток, оскільки Skeleton3D автоматично застосовує вплив до всіх поз кісток, встановлених модифікатором.


void _process_modification_with_delta(delta: float) virtual 🔗

Перевизначте цей віртуальний метод, щоб реалізувати власний модифікатор скелета. Вам слід виконати такі дії, як отримання поточної пози Skeleton3D та застосування цієї пози тут.

_process_modification_with_delta() не повинен застосовувати influence до поз кісток, оскільки Skeleton3D автоматично застосовує вплив до всіх поз кісток, встановлених модифікатором.

delta передається з батьківського Skeleton3D. Див. також Skeleton3D.advance().

Примітка: Цей метод може бути викликаний поза Node._process() та Node._physics_process() з delta, що дорівнює 0.0, оскільки модифікація повинна бути оброблена негайно після ініціалізації Skeleton3D.


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

Викликається, коли змінюється скелет.


void _validate_bone_names() virtual 🔗

Викликається, коли потрібно перевірити назви та індекси кісток, наприклад, під час входу в дерево сцени або зміни скелета.


Skeleton3D get_skeleton() const 🔗

Повертає батьківський вузол Skeleton3D, якщо він існує. В іншому випадку повертає null.