SkeletonModifier3D
Узел, который может модифицировать кости Skeleton3D.
Узел, который может модифицировать кости Skeleton3D.
SkeletonModifier3D извлекает целевой Skeleton3D, имея родителя Skeleton3D.
Если есть AnimationMixer, модификация всегда выполняется после процесса воспроизведения AnimationMixer.
Этот узел следует использовать для реализации пользовательских решателей IK, ограничений или физики скелета.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
SkeletonModifier3DКонструктор
public SkeletonModifier3D();Свойства2
ActiveСвойство
public bool Active { get; set; }Если true, то SkeletonModifier3D будет обработан.
InfluenceСвойство
public float Influence { get; set; }Устанавливает влияние модификации.
Примечание: Это значение используется Skeleton3D для смешивания, поэтому SkeletonModifier3D всегда должен применять только 100% результата без интерполяции.
Методы9
GetInfluencefloat
public float GetInfluence();floatGetSkeletonSkeleton3D
public Skeleton3D GetSkeleton();Возвращает родительский узел Skeleton3D, если он существует. В противном случае возвращает null.
Skeleton3DIsActivebool
public bool IsActive();boolSetActivevoid
public void SetActive(bool active);| Имя | Тип | По умолчанию |
|---|---|---|
active | bool | — |
SetInfluencevoid
public void SetInfluence(float influence);| Имя | Тип | По умолчанию |
|---|---|---|
influence | float | — |
_ProcessModificationvoid · Устарело
public virtual void _ProcessModification();Переопределите этот виртуальный метод, чтобы реализовать пользовательский модификатор скелета. Вам следует сделать что-то вроде получения текущей позы Skeleton3D и применить позу здесь.
SkeletonModifier3D._ProcessModification не должен применять SkeletonModifier3D.Influence к позам костей, поскольку Skeleton3D автоматически применяет влияние ко всем позам костей, заданным модификатором.
_ProcessModificationWithDeltavoid
public virtual void _ProcessModificationWithDelta(double delta);Переопределите этот виртуальный метод, чтобы реализовать пользовательский модификатор скелета. Вам следует получить текущую позу Skeleton3D и применить её здесь.
Метод SkeletonModifier3D._ProcessModificationWithDelta не должен применять SkeletonModifier3D.Influence к позам костей, поскольку Skeleton3D автоматически применяет влияние ко всем позам костей, заданным модификатором.
delta передаётся от родительского Skeleton3D. См. также Skeleton3D.Advance.
Примечание: Этот метод может быть вызван вне Entity._Process и Entity._PhysicsProcess с delta равным 0.0, поскольку модификация должна быть обработана сразу после инициализации Skeleton3D.
| Имя | Тип | По умолчанию |
|---|---|---|
delta | double | — |
_SkeletonChangedvoid
public virtual void _SkeletonChanged(Skeleton3D oldSkeleton, Skeleton3D newSkeleton);Вызывается при изменении скелета.
| Имя | Тип | По умолчанию |
|---|---|---|
oldSkeleton | Skeleton3D | — |
newSkeleton | Skeleton3D | — |
_ValidateBoneNamesvoid
public virtual void _ValidateBoneNames();Вызывается, когда необходимо проверить имена и индексы костей, например, при входе в дерево сцены или изменении скелета.
Сигналы и события1
ModificationProcessedСобытие
public event Action ModificationProcessed;Уведомляет о завершении модификации.
Примечание: Если вы хотите получить измененную позу кости модификатором, вы должны использовать Skeleton3D.GetBonePose или Skeleton3D.GetBoneGlobalPose в момент срабатывания этого сигнала.
SkeletonModifier3D.BoneAxis
| Значение | Описание |
|---|---|
MinusX = 1 | Перечисленное значение для оси -X. |
MinusY = 3 | Перечисленное значение для оси -Y. |
MinusZ = 5 | Перечисленное значение для оси -Z. |
PlusX = 0 | Перечисленное значение для оси +X. |
PlusY = 2 | Перечисленное значение для оси +Y. |
PlusZ = 4 | Перечисленное значение для оси +Z. |
SkeletonModifier3D.BoneDirection
| Значение | Описание |
|---|---|
FromParent = 6 | Перечисленное значение для оси от родительской кости до дочерней кости. |
MinusX = 1 | Перечисленное значение для оси -X. |
MinusY = 3 | Перечисленное значение для оси -Y. |
MinusZ = 5 | Перечисленное значение для оси -Z. |
PlusX = 0 | Перечисленное значение для оси +X. |
PlusY = 2 | Перечисленное значение для оси +Y. |
PlusZ = 4 | Перечисленное значение для оси +Z. |
SkeletonModifier3D.RotationAxis
| Значение | Описание |
|---|---|
All = 3 | Перечисленное значение для неограниченного вращения. |
Custom = 4 | Перечисляемое значение для необязательной оси вращения. |
X = 0 | Перечисленное значение для вращения оси X. |
Y = 1 | Перечисленное значение для вращения оси Y. |
Z = 2 | Перечисленное значение для вращения оси Z. |
SkeletonModifier3D.SecondaryDirection
| Значение | Описание |
|---|---|
Custom = 7 | Перечисляемое значение для необязательной оси. |
MinusX = 2 | Перечисленное значение для оси -X. |
MinusY = 4 | Перечисленное значение для оси -Y. |
MinusZ = 6 | Перечисленное значение для оси -Z. |
None = 0 | Перечисляемое значение для случая, когда ось не определена. |
PlusX = 1 | Перечисленное значение для оси +X. |
PlusY = 3 | Перечисленное значение для оси +Y. |
PlusZ = 5 | Перечисленное значение для оси +Z. |