SkeletonModification2DFabrik
Модификация, использующая FABRIK для манипулирования серией узлов Bone2D для достижения цели.
Модификация, использующая FABRIK для манипулирования серией узлов Bone2D для достижения цели.
В SkeletonModification2D используется алгоритм, называемый «обратной кинематикой прямого и обратного действия» (FABRIK), для поворота цепочки костей таким образом, чтобы она достигла цели.
FABRIK работает, зная положение и длину ряда костей, обычно называемых «цепочкой костей». Сначала выполняется прямой проход, который помещает последнюю кость в позицию цели. Затем все остальные кости перемещаются к конечной кости, оставаясь на заданном расстоянии. Затем выполняется обратный проход, в котором корневая/первая кость в цепочке FABRIK возвращается в начало координат. Затем все остальные кости перемещаются, оставаясь на заданном расстоянии. Это позволяет расположить цепочку костей таким образом, чтобы она достигла цели, когда это возможно, но при этом все кости остаются на правильном расстоянии друг от друга.
Благодаря особенностям работы FABRIK, он часто дает более естественные результаты, чем SkeletonModification2DCcdik.
Примечание: Модификатор FABRIK содержит fabrik_joints, которые представляют собой объекты данных, хранящие данные для каждого сустава в цепочке FABRIK. Это отличается от узлов Bone2D! Суставы FABRIK содержат данные, необходимые для каждого Bone2D в цепочке костей, используемой FABRIK.
Чтобы контролировать движение суставов FABRIK, можно передать вектор магнита, который может подтолкнуть кости в определённом направлении перед решением, что даёт определённый уровень контроля над конечным результатом.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
SkeletonModification2DFabrikКонструктор
public SkeletonModification2DFabrik();Свойства2
FabrikDataChainLengthСвойство
public int FabrikDataChainLength { get; set; }Количество соединений FABRIK в модификации FABRIK.
TargetEntitypathСвойство
public EntityPath TargetEntitypath { get; set; }EntityPath к узлу, который является целью модификации FABRIK. Этот узел — то, к чему цепь FABRIK попытается повернуть цепочку костей.
Методы12
GetFabrikDataChainLengthint
public int GetFabrikDataChainLength();intGetFabrikJointBone2DEntityEntityPath
public EntityPath GetFabrikJointBone2DEntity(int jointIdx);Возвращает узел Bone2D, назначенный суставу FABRIK в joint_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
EntityPathGetFabrikJointBoneIndexint
public int GetFabrikJointBoneIndex(int jointIdx);Возвращает индекс узла Bone2D, назначенного суставу FABRIK в joint_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
intGetFabrikJointMagnetPositionVector2
public Vector2 GetFabrikJointMagnetPosition(int jointIdx);Возвращает вектор положения магнита для сочленения в joint_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
Vector2GetFabrikJointUseTargetRotationbool
public bool GetFabrikJointUseTargetRotation(int jointIdx);Возвращает, использует ли сочленение вращение цели, а не позволяет FABRIK вращать сочленение. Эта опция применяется только к кончику/конечному сочленению в цепочке.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
boolGetTargetEntityEntityPath
public EntityPath GetTargetEntity();EntityPathSetFabrikDataChainLengthvoid
public void SetFabrikDataChainLength(int length);| Имя | Тип | По умолчанию |
|---|---|---|
length | int | — |
SetFabrikJointBone2DEntityvoid
public void SetFabrikJointBone2DEntity(int jointIdx, EntityPath bone2DEntitypath);Устанавливает узел Bone2D, назначенный суставу FABRIK, в joint_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
bone2DEntitypath | EntityPath | — |
SetFabrikJointBoneIndexvoid
public void SetFabrikJointBoneIndex(int jointIdx, int boneIdx);Устанавливает индекс костей, bone_idx, из сустава FABRIK joint_idx. По возможности, это также позволит обновить bone2d_node на основе данных, представленных скелетом, связанным между собой.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
boneIdx | int | — |
SetFabrikJointMagnetPositionvoid
public void SetFabrikJointMagnetPosition(int jointIdx, Vector2 magnetPosition);Устанавливает вектор положения магнита для сочленения в joint_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
magnetPosition | Vector2 | — |
SetFabrikJointUseTargetRotationvoid
public void SetFabrikJointUseTargetRotation(int jointIdx, bool useTargetRotation);Устанавливает, будет ли соединение в joint_idx использовать вращение целевого узла вместо того, чтобы позволить FABRIK вращать узел.
Примечание: Эта опция работает только для конечного/последнего соединения в цепочке. Для всех остальных узлов эта опция будет игнорироваться.
| Имя | Тип | По умолчанию |
|---|---|---|
jointIdx | int | — |
useTargetRotation | bool | — |
SetTargetEntityvoid
public void SetTargetEntity(EntityPath targetEntitypath);| Имя | Тип | По умолчанию |
|---|---|---|
targetEntitypath | EntityPath | — |