SkeletonModifier3D

Наследует: Node3D < Node < Object

Наследуется от: BoneConstraint3D, 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.


Описания свойств

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().


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

Вызывается при изменении скелета.


void _validate_bone_names() virtual 🔗

Вызывается, когда необходимо проверить имя и индекс кости, например, время входа в дерево или изменение скелета.


Skeleton3D get_skeleton() const 🔗

Получить родительский узел Skeleton3D, если он найден.