reckfellENGINE

IterateIK3D

SkeletonModifier3D, позволяющий приблизиться к цели путем повторения небольших вращений.

На этой странице
class IterateIK3DReckfellSharpНаследует ChainIK3D

SkeletonModifier3D, позволяющий приблизиться к цели путем повторения небольших вращений.

Базовый класс SkeletonModifier3D :: подход к достижению цели путем повторения небольших ротаций. У каждой цепи костей есть один исполнитель, который обрабатывается в порядке списка. Вы можете установить некоторые ограничения для каждого сустава. Примечание: Все методы в этом классе принимают index параметр. Этот параметр указывает, какая строка списка для возвращения, если IK имеет несколько записей (например. settings/<index>/target_node). Примечание: Когда IterateIK3D.SetJointRotationAxis или IterateIK3D.SetJointLimitation Это происходит потому, что IK вычисляет путь через итерации, а в некоторых случаях он может достичь предела в ходе процесса и не решить его. SkeletonModifier3Ds и порядок итерации вручную.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства5

AngularDeltaLimitСвойство
# AngularDeltaLimit
C#
public double AngularDeltaLimit { get; set; }

Максимальное значение, на которое каждая кость может повернуться за одну итерацию. Примечание: Это ограничение применяется на каждой итерации. Например, если IterateIK3D.MaxIterations равно 4 и IterateIK3D.AngularDeltaLimit равно 5 градусам, то максимальное возможное вращение за один кадр составляет 20 градусов.

DeterministicСвойство
# Deterministic
C#
public bool Deterministic { get; set; }

Если false, результат вычисляется на основе результата IterateIK3D предыдущего кадра в качестве начального состояния. Если true, результат IterateIK3D предыдущего кадра отбрасывается. В этот момент новый результат вычисляется на основе положения кости без учета IterateIK3D в качестве начального состояния. Это означает, что результат всегда будет равен, пока целевая позиция и предыдущая позиция кости совпадают. Однако, если значения IterateIK3D.AngularDeltaLimit и IterateIK3D.MaxIterations установлены слишком мало, конечная кость цепочки никогда не достигнет цели.

MaxIterationsСвойство
# MaxIterations
C#
public int MaxIterations { get; set; }

Количество итераций, используемых решателем обратной кинематики для получения более точных результатов.

MinDistanceСвойство
# MinDistance
C#
public double MinDistance { get; set; }

Минимальное расстояние между конечной костью и целью. Если расстояние меньше этого значения, решатель обратной кинематики прекращает дальнейшие итерации.

SettingCountСвойство
# SettingCount
C#
public int SettingCount { get; set; }

Количество настроек.

Методы24

GetAngularDeltaLimitdouble
# GetAngularDeltaLimit
C#
public double GetAngularDeltaLimit();
Возвращает double
GetJointLimitationJointLimitation3D
# GetJointLimitation
C#
public JointLimitation3D GetJointLimitation(int index, int joint);

Возвращает ограничение по суставу в joint в списке суставов костной цепи.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает JointLimitation3D
GetJointLimitationRightAxisSkeletonModifier3D.SecondaryDirection
# GetJointLimitationRightAxis
C#
public SkeletonModifier3D.SecondaryDirection GetJointLimitationRightAxis(int index, int joint);

Возвращает ограничение по оси правого сустава в точке joint в списке суставов костной цепи.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает SkeletonModifier3D.SecondaryDirection
GetJointLimitationRightAxisVectorVector3
# GetJointLimitationRightAxisVector
C#
public Vector3 GetJointLimitationRightAxisVector(int index, int joint);

Возвращает вектор правой оси ограничения сустава в точке joint в списке суставов костной цепи. Если IterateIK3D.GetJointLimitationRightAxis равен SkeletonModifier3D.SecondaryDirection.None, этот метод возвращает Vector3(0, 0, 0).

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает Vector3
GetJointLimitationRotationOffsetQuaternion
# GetJointLimitationRotationOffset
C#
public Quaternion GetJointLimitationRotationOffset(int index, int joint);

Возвращает совместную ротацию ограничений, joint в суставном списке костей. Вращение производится в местном пространстве, которое строится по направлению кости (в целом от родителя к ребенку) в качестве оси +Y и IterateIK3D.GetJointLimitationRightAxisVector как ось +X. Если оси +X и +Y не являются ортогональными, то ось +X имплицитно изменяется для того, чтобы сделать ее ортогональной. Кроме того, если длина IterateIK3D.GetJointLimitationRightAxisVector - ноль, пространство создается путем вращения исходной позы с использованием самой короткой дуги, которая вращается осью +Y исходной позы, с тем чтобы она соответствовала направлению кости. Здесь эталонная поза представляет собой костный отсек или кость сразу же перед обработкой IK в зависимости от IterateIK3D.IsJointUsingRestForLimitation.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает Quaternion
GetJointRotationAxisSkeletonModifier3D.RotationAxis
# GetJointRotationAxis
C#
public SkeletonModifier3D.RotationAxis GetJointRotationAxis(int index, int joint);

Возвращает ось вращения в joint в списке суставов цепочки костей.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает SkeletonModifier3D.RotationAxis
GetJointRotationAxisVectorVector3
# GetJointRotationAxisVector
C#
public Vector3 GetJointRotationAxisVector(int index, int joint);

Возвращает вектор оси вращения для указанного сустава в костной цепи. Этот вектор представляет ось, вокруг которой может вращаться сустав. Он определяется на основе оси вращения, заданной для сустава. Если IterateIK3D.GetJointRotationAxis равен SkeletonModifier3D.RotationAxis.All, этот метод возвращает Vector3(0, 0, 0).

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает Vector3
GetMaxIterationsint
# GetMaxIterations
C#
public int GetMaxIterations();
Возвращает int
GetMinDistancedouble
# GetMinDistance
C#
public double GetMinDistance();
Возвращает double
GetTargetEntityEntityPath
# GetTargetEntity
C#
public EntityPath GetTargetEntity(int index);

Возвращает целевой узел, до которого пытается добраться конечная кость.

Параметры
ИмяТипПо умолчанию
indexint—
Возвращает EntityPath
IsDeterministicbool
# IsDeterministic
C#
public bool IsDeterministic();
Возвращает bool
IsJointUsingRestForLimitationbool
# IsJointUsingRestForLimitation
C#
public bool IsJointUsingRestForLimitation(int index, int joint);

Возвращается ли ограничение на joint в суставном списке кости применяется на основе Skeleton3D.GetBoneRest.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
Возвращает bool
SetAngularDeltaLimitvoid
# SetAngularDeltaLimit
C#
public void SetAngularDeltaLimit(double angularDeltaLimit);
Параметры
ИмяТипПо умолчанию
angularDeltaLimitdouble—
SetDeterministicvoid
# SetDeterministic
C#
public void SetDeterministic(bool deterministic);
Параметры
ИмяТипПо умолчанию
deterministicbool—
SetJointLimitationvoid
# SetJointLimitation
C#
public void SetJointLimitation(int index, int joint, JointLimitation3D limitation);

Устанавливает ограничение на количество суставов в joint в списке суставов костной цепи.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
limitationJointLimitation3D—
SetJointLimitationRightAxisvoid
# SetJointLimitationRightAxis
C#
public void SetJointLimitationRightAxis(int index, int joint, SkeletonModifier3D.SecondaryDirection direction);

Устанавливает ограничение по оси вращения сустава справа в точке joint в списке суставов костной цепи.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
directionSkeletonModifier3D.SecondaryDirection—
SetJointLimitationRightAxisVectorvoid
# SetJointLimitationRightAxisVector
C#
public void SetJointLimitationRightAxisVector(int index, int joint, Vector3 vector);

Устанавливает необязательный вектор оси ограничения сустава справа в joint в списке суставов костной цепи.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
vectorVector3—
SetJointLimitationRotationOffsetvoid
# SetJointLimitationRotationOffset
C#
public void SetJointLimitationRotationOffset(int index, int joint, Quaternion offset);

Устанавливает смещение вращения ограничения сустава в joint в списке суставов цепочки костей. Вращение выполняется в локальном пространстве, которое строится по направлению кости (как правило, от родителя к потомку) в качестве оси +Y и IterateIK3D.GetJointLimitationRightAxisVector в качестве оси +X. Если оси +X и +Y не ортогональны, ось +X неявно изменяется, чтобы сделать её ортогональной. Также, если длина IterateIK3D.GetJointLimitationRightAxisVector равна нулю, пространство создаётся путём вращения эталонной позы с использованием кратчайшей дуги, которая поворачивает ось +Y эталонной позы в соответствии с направлением кости. В данном случае эталонной позой является поза кости непосредственно перед обработкой обратной кинематики (IK).

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
offsetQuaternion—
SetJointRotationAxisvoid
# SetJointRotationAxis
C#
public void SetJointRotationAxis(int index, int joint, SkeletonModifier3D.RotationAxis axis);

Установить ось вращения на joint в суставном списке костей. Ось основана на пространстве исходной позы, если axis это SkeletonModifier3D.RotationAxis.CustomВы можете указать любую ось. Здесь исходная поза - это кость непосредственно перед обработкой IK. Примечание: Ось вращения и вектор спереди не должны быть однолинейными, чтобы избежать непреднамеренного вращения, поскольку ChainIK3D не влияет на силу перегиба. Примечание: С момента IterateIK3D никогда не изменяет поворот, поворот не фиксируется IterateIK3D.SetJointRotationAxis даже если IterateIK3D.IsJointUsingRestForLimitation это true.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
axisSkeletonModifier3D.RotationAxis—
SetJointRotationAxisVectorvoid
# SetJointRotationAxisVector
C#
public void SetJointRotationAxisVector(int index, int joint, Vector3 axisVector);

Задает вектор оси вращения для указанного сустава в костной цепи. Этот вектор нормализуется внутренним процессом и представляет ось, вокруг которой может вращаться костная цепь. Если длина вектора равна 0, он считается синонимом SkeletonModifier3D.RotationAxis.All.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
axisVectorVector3—
SetJointUseRestForLimitationvoid
# SetJointUseRestForLimitation
C#
public void SetJointUseRestForLimitation(int index, int joint, bool enabled);

Устанавливается ли ограничение и ось вращения на joint в суставном списке кости применяется на основе Skeleton3D.GetBoneRestСм. также IterateIK3D.SetJointRotationAxis. Примечание: Это ограничение применяется к вращению, рассчитанному этим модификатором. Если исходная поза поворачивается вокруг одной и той же оси, то ограничение действует так, как если бы оно также ограничивало вращение исходной позы. Вращение, которое этот изменяющий не изменяется, например поворот, не ограничивается. Примечание: Определённая форма ограничения Gizmo будет уважать исходную позу, только когда эта опция false и модификатор активирован.

Параметры
ИмяТипПо умолчанию
indexint—
jointint—
enabledbool—
SetMaxIterationsvoid
# SetMaxIterations
C#
public void SetMaxIterations(int maxIterations);
Параметры
ИмяТипПо умолчанию
maxIterationsint—
SetMinDistancevoid
# SetMinDistance
C#
public void SetMinDistance(double minDistance);
Параметры
ИмяТипПо умолчанию
minDistancedouble—
SetTargetEntityvoid
# SetTargetEntity
C#
public void SetTargetEntity(int index, EntityPath targetEntity);

Задает целевой узел, до которого пытается добраться конечная кость.

Параметры
ИмяТипПо умолчанию
indexint—
targetEntityEntityPath—
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.