SkeletonModification2DFABRIK
Экспериментальное: This class may be changed or removed in future versions.
Наследует: SkeletonModification2D < Resource < RefCounted < Object
Модификация, использующая FABRIK для манипулирования серией узлов Bone2D для достижения цели.
Описание
В SkeletonModification2D используется алгоритм, называемый «обратной кинематикой прямого и обратного действия» (FABRIK), для поворота цепочки костей таким образом, чтобы она достигла цели.
FABRIK работает, зная положение и длину ряда костей, обычно называемых «цепочкой костей». Сначала выполняется прямой проход, который помещает последнюю кость в позицию цели. Затем все остальные кости перемещаются к конечной кости, оставаясь на заданном расстоянии. Затем выполняется обратный проход, в котором корневая/первая кость в цепочке FABRIK возвращается в начало координат. Затем все остальные кости перемещаются, оставаясь на заданном расстоянии. Это позволяет расположить цепочку костей таким образом, чтобы она достигла цели, когда это возможно, но при этом все кости остаются на правильном расстоянии друг от друга.
Благодаря особенностям работы FABRIK, он часто дает более естественные результаты, чем SkeletonModification2DCCDIK.
Примечание: Модификатор FABRIK содержит fabrik_joints, которые представляют собой объекты данных, хранящие данные для каждого сустава в цепочке FABRIK. Это отличается от узлов Bone2D! Суставы FABRIK содержат данные, необходимые для каждого Bone2D в цепочке костей, используемой FABRIK.
Чтобы контролировать движение суставов FABRIK, можно передать вектор магнита, который может подтолкнуть кости в определённом направлении перед решением, что даёт определённый уровень контроля над конечным результатом.
Свойства
|
||
|
Методы
get_fabrik_joint_bone2d_node(joint_idx: int) const |
|
get_fabrik_joint_bone_index(joint_idx: int) const |
|
get_fabrik_joint_magnet_position(joint_idx: int) const |
|
get_fabrik_joint_use_target_rotation(joint_idx: int) const |
|
void |
set_fabrik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) |
void |
set_fabrik_joint_bone_index(joint_idx: int, bone_idx: int) |
void |
set_fabrik_joint_magnet_position(joint_idx: int, magnet_position: Vector2) |
void |
set_fabrik_joint_use_target_rotation(joint_idx: int, use_target_rotation: bool) |
Описания свойств
int fabrik_data_chain_length = 0 🔗
Количество соединений FABRIK в модификации FABRIK.
NodePath target_nodepath = NodePath("") 🔗
NodePath к узлу, который является целью модификации FABRIK. Этот узел — то, к чему цепь FABRIK попытается повернуть цепочку костей.
Описания метода
NodePath get_fabrik_joint_bone2d_node(joint_idx: int) const 🔗
Возвращает узел Bone2D, назначенный суставу FABRIK в joint_idx.
int get_fabrik_joint_bone_index(joint_idx: int) const 🔗
Возвращает индекс узла Bone2D, назначенного суставу FABRIK в joint_idx.
Vector2 get_fabrik_joint_magnet_position(joint_idx: int) const 🔗
Возвращает вектор положения магнита для сочленения в joint_idx.
bool get_fabrik_joint_use_target_rotation(joint_idx: int) const 🔗
Возвращает, использует ли сочленение вращение цели, а не позволяет FABRIK вращать сочленение. Эта опция применяется только к кончику/конечному сочленению в цепочке.
void set_fabrik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) 🔗
Устанавливает узел Bone2D, назначенный суставу FABRIK, в joint_idx.
void set_fabrik_joint_bone_index(joint_idx: int, bone_idx: int) 🔗
Устанавливает индекс кости bone_idx сустава FABRIK в joint_idx. Когда это возможно, это также обновит bone2d_node сустава FABRIK на основе данных, предоставленных связанным скелетом.
void set_fabrik_joint_magnet_position(joint_idx: int, magnet_position: Vector2) 🔗
Устанавливает вектор положения магнита для сочленения в joint_idx.
void set_fabrik_joint_use_target_rotation(joint_idx: int, use_target_rotation: bool) 🔗
Устанавливает, будет ли соединение в joint_idx использовать вращение целевого узла вместо того, чтобы позволить FABRIK вращать узел.
Примечание: Эта опция работает только для конечного/последнего соединения в цепочке. Для всех остальных узлов эта опция будет игнорироваться.