SkeletonIK3D
Узел, используемый для поворота всех костей цепочки костей Skeleton3D таким образом, чтобы разместить конечную кость в желаемом трехмерном положении.
Узел, используемый для поворота всех костей цепочки костей Skeleton3D таким образом, чтобы разместить конечную кость в желаемом трехмерном положении.
SkeletonIK3D используется для вращения всех костей цепочки костей Skeleton3D таким образом, чтобы поместить конечную кость в желаемое положение в 3D. Типичный сценарий для IK в играх — поместить ноги персонажа на землю или руки персонажа на удерживаемый в данный момент объект. SkeletonIK использует FabrikInverseKinematic внутренне для решения цепочки костей и применяет результаты к свойству Skeleton3D bones_global_pose_override для всех затронутых костей в цепочке. При полном применении это перезаписывает любое преобразование костей из Animation или пользовательских поз костей, установленных пользователями. Применяемое количество можно контролировать с помощью свойства SkeletonModifier3D.Influence.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
SkeletonIK3DКонструктор
public SkeletonIK3D();Свойства10
InterpolationСвойство · Устарело
public float Interpolation { get; set; }Значение интерполяции для того, насколько результаты IK применяются к текущей цепочке костей скелета. Значение 1.0 полностью перезапишет все преобразования костей скелета, а значение 0.0 визуально отключит SkeletonIK.
MagnetСвойство
public Vector3 Magnet { get; set; }Вторая целевая позиция (первая SkeletonIK3D.Target имущество или target_node) для цепи ИК. Используйте магнитное положение (потолочная цель) для контроля за изгибом цепи ИК. Работает только в том случае, если костная цепь имеет более двух костей. Положение средней цепи будет линейно интерполировано магнитным положением.
MaxIterationsСвойство
public int MaxIterations { get; set; }Количество итерационных циклов, используемых решателем IK для получения более точных (и элегантных) результатов костной цепи.
MinDistanceСвойство
public float MinDistance { get; set; }Минимальное расстояние между костью и целью. Если расстояние меньше этого значения, решатель IK останавливает дальнейшие итерации.
OverrideTipBasisСвойство
public bool OverrideTipBasis { get; set; }Если true перезаписывает вращение чашечной кости с вращением SkeletonIK3D.Target (или target_node при условии определения).
RootBoneСвойство
public StringName RootBone { get; set; }Название текущей корневой кости, первой кости в цепочке IK.
Цель
TargetСвойство
public Transform3D Target { get; set; }Первая цель цепи ИК, в которой расположена верхняя кость, и если SkeletonIK3D.OverrideTipBasis это true, как поворачивается верхняя кость. target_node указывает на действующий узел, что вместо этого используется трансформация узла и это свойство игнорируется.
TargetEntityСвойство
public EntityPath TargetEntity { get; set; }Целевой узел EntityPath для цепочки IK. Если доступно, вместо свойства SkeletonIK3D.Target используется текущий Transform3D узла.
TipBoneСвойство
public StringName TipBone { get; set; }Название текущей конной кости, последней кости в цепи IK, помещенной на SkeletonIK3D.Target Преобразование (или target_node при условии определения).
UseMagnetСвойство
public bool UseMagnet { get; set; }Если true, то указывает решателю IK учитывать вторичную цель магнита (цель полюса) при расчете костной цепи. Используйте положение магнита (цель полюса) для управления изгибом цепи IK.
Методы24
GetInterpolationfloat
public float GetInterpolation();floatGetMagnetPositionVector3
public Vector3 GetMagnetPosition();Vector3GetMaxIterationsint
public int GetMaxIterations();intGetMinDistancefloat
public float GetMinDistance();floatGetParentSkeletonSkeleton3D
public Skeleton3D GetParentSkeleton();Возвращает родительский узел Skeleton3D, который присутствовал, когда SkeletonIK вошел в дерево сцены. Возвращает null, если родительский узел не был узлом Skeleton3D, когда SkeletonIK3D вошел в дерево сцены.
Skeleton3DGetRootBoneStringName
public StringName GetRootBone();StringNameGetTargetEntityEntityPath
public EntityPath GetTargetEntity();EntityPathGetTargetTransformTransform3D
public Transform3D GetTargetTransform();Transform3DGetTipBoneStringName
public StringName GetTipBone();StringNameIsOverrideTipBasisbool
public bool IsOverrideTipBasis();boolIsRunningbool
public bool IsRunning();Возвращает true, если SkeletonIK применяет эффекты IK на продолжающихся кадрах к костям Skeleton3D. Возвращает false, если SkeletonIK остановлен или SkeletonIK3D.Start был использован с параметром one_time, установленным на true.
boolIsUsingMagnetbool
public bool IsUsingMagnet();boolSetInterpolationvoid
public void SetInterpolation(float interpolation);| Имя | Тип | По умолчанию |
|---|---|---|
interpolation | float | — |
SetMagnetPositionvoid
public void SetMagnetPosition(Vector3 localPosition);| Имя | Тип | По умолчанию |
|---|---|---|
localPosition | Vector3 | — |
SetMaxIterationsvoid
public void SetMaxIterations(int iterations);| Имя | Тип | По умолчанию |
|---|---|---|
iterations | int | — |
SetMinDistancevoid
public void SetMinDistance(float minDistance);| Имя | Тип | По умолчанию |
|---|---|---|
minDistance | float | — |
SetOverrideTipBasisvoid
public void SetOverrideTipBasis(bool @override);| Имя | Тип | По умолчанию |
|---|---|---|
override | bool | — |
SetRootBonevoid
public void SetRootBone(StringName rootBone);| Имя | Тип | По умолчанию |
|---|---|---|
rootBone | StringName | — |
SetTargetEntityvoid
public void SetTargetEntity(EntityPath node);| Имя | Тип | По умолчанию |
|---|---|---|
node | EntityPath | — |
SetTargetTransformvoid
public void SetTargetTransform(Transform3D target);| Имя | Тип | По умолчанию |
|---|---|---|
target | Transform3D | — |
SetTipBonevoid
public void SetTipBone(StringName tipBone);| Имя | Тип | По умолчанию |
|---|---|---|
tipBone | StringName | — |
SetUseMagnetvoid
public void SetUseMagnet(bool use);| Имя | Тип | По умолчанию |
|---|---|---|
use | bool | — |
Startvoid
public void Start(bool oneTime = false);Начинает применять эффекты IK в каждом кадре к костям Skeleton3D, но вступит в силу только со следующего кадра. Если one_time равен true, это вступит в силу немедленно, но также сбросится в следующем кадре.
| Имя | Тип | По умолчанию |
|---|---|---|
oneTime | bool | false |
Stopvoid
public void Stop();Прекращает применение эффектов IK в каждом кадре к костям Skeleton3D, а также вызывает Skeleton3D.ClearBonesGlobalPoseOverride для удаления существующих переопределений для всех костей.