SkeletonModification2DFABRIK

Експериментальний: This class may be changed or removed in future versions.

Успадковує: SkeletonModification2D < Resource < RefCounted < Object

Модифікація, яка використовує FABRIK для маніпуляції рядками Bone2D, щоб досягти мети.

Опис

Цей SkeletonModification2D використовує алгоритм під назвою Forward And Backward Reaching Inverse Kinematics, або FABRIK, для обертання ланцюжка кісток так, щоб він досяг цілі.

FABRIK працює, знаючи положення та довжини серії кісток, яку зазвичай називають «ланцюгом кісток». Спочатку він виконує прохід вперед, який розміщує останню кістку в положенні цілі. Потім усі інші кістки переміщуються до верхівкової кістки, щоб вони залишалися на визначеній відстані від кістки. Потім виконується прохід назад, де корінь/перша кістка в ланцюзі FABRIK повертається до початку координат. Потім усі інші кістки переміщуються, щоб вони залишалися на визначеній відстані від кістки. Це позиціонує ланцюжок кісток таким чином, щоб він досяг цілі, коли це можливо, але всі кістки залишаються на правильній відстані одна від одної.

Завдяки тому, як працює FABRIK, він часто дає більш природні результати, ніж ті, що спостерігаються в SkeletonModification2DCCDIK.

Примітка: Модифікатор FABRIK має fabrik_joints, які є об'єктами даних, що містять дані для кожного суглоба в ланцюжку FABRIK. Це відрізняється від вузлів Bone2D! Суглоби FABRIK містять дані, необхідні для кожного Bone2D в ланцюжку кісток, що використовується FABRIK.

Щоб допомогти контролювати рух суглобів FABRIK, можна передати вектор магніту, який може зміщувати кістки в певному напрямку перед розв'язанням, надаючи певний рівень контролю над кінцевим результатом.

Властивості

int

fabrik_data_chain_length

0

NodePath

target_nodepath

NodePath("")

Методи

NodePath

get_fabrik_joint_bone2d_node(joint_idx: int) const

int

get_fabrik_joint_bone_index(joint_idx: int) const

Vector2

get_fabrik_joint_magnet_position(joint_idx: int) const

bool

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 🔗

  • void set_fabrik_data_chain_length(value: int)

  • int get_fabrik_data_chain_length()

Кількість суглобів 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 обертати вузол.

Примітка: Цей варіант працює тільки для наконечника/фінального суглоба в ланцюжку. Для всіх інших вузлів цей варіант буде ігноруватися.