SkeletonModification2DCCDIK

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

Наследует: SkeletonModification2D < Resource < RefCounted < Object

Модификация, использующая CCDIK для манипулирования серией костей с целью достижения цели в 2D.

Описание

Этот SkeletonModification2D использует алгоритм, называемый Обратная кинематика циклического спуска по координатам (CCDIK), для управления цепочкой костей в Skeleton2D так, чтобы она достигла определенной цели.

CCDIK работает, вращая набор костей, обычно называемый «цепочкой костей», вокруг одной оси. Каждая кость поворачивается так, чтобы быть обращенной к цели с кончика (по умолчанию), что позволяет ей вращаться правильно, достигая цели, через цепочку костей. Поскольку кости вращаются только вокруг одной оси, CCDIK может выглядеть более роботизированным, чем другие решатели IK.

Примечание: Модификатор CCDIK имеет ccdik_joints, которые являются объектами данных, которые содержат данные для каждого сустава в цепочке CCDIK. Это отличается от кости! Суставы CCDIK содержат данные, необходимые для каждой кости в цепочке костей, используемой CCDIK.

CCDIK также полностью поддерживает угловые ограничения, что позволяет лучше контролировать выполнение решения.

Свойства

int

ccdik_data_chain_length

0

NodePath

target_nodepath

NodePath("")

NodePath

tip_nodepath

NodePath("")

Методы

NodePath

get_ccdik_joint_bone2d_node(joint_idx: int) const

int

get_ccdik_joint_bone_index(joint_idx: int) const

bool

get_ccdik_joint_constraint_angle_invert(joint_idx: int) const

float

get_ccdik_joint_constraint_angle_max(joint_idx: int) const

float

get_ccdik_joint_constraint_angle_min(joint_idx: int) const

bool

get_ccdik_joint_enable_constraint(joint_idx: int) const

bool

get_ccdik_joint_rotate_from_joint(joint_idx: int) const

void

set_ccdik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath)

void

set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int)

void

set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool)

void

set_ccdik_joint_constraint_angle_max(joint_idx: int, angle_max: float)

void

set_ccdik_joint_constraint_angle_min(joint_idx: int, angle_min: float)

void

set_ccdik_joint_enable_constraint(joint_idx: int, enable_constraint: bool)

void

set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool)


Описания свойств

int ccdik_data_chain_length = 0 🔗

  • void set_ccdik_data_chain_length(value: int)

  • int get_ccdik_data_chain_length()

Количество соединений CCDIK в модификации CCDIK.


NodePath target_nodepath = NodePath("") 🔗

NodePath к узлу, который является целью модификации CCDIK. Это узел, к которому цепь CCDIK попытается повернуть цепочку костей.


NodePath tip_nodepath = NodePath("") 🔗

Конечная позиция цепочки CCDIK. Обычно это должен быть дочерний узел Bone2D, прикрепленный к конечному Bone2D в цепочке CCDIK.


Описания метода

NodePath get_ccdik_joint_bone2d_node(joint_idx: int) const 🔗

Возвращает узел Bone2D, назначенный суставу CCDIK в joint_idx.


int get_ccdik_joint_bone_index(joint_idx: int) const 🔗

Возвращает индекс узла Bone2D, назначенного суставу CCDIK в joint_idx.


bool get_ccdik_joint_constraint_angle_invert(joint_idx: int) const 🔗

Возвращает, использует ли соединение CCDIK в joint_idx инвертированное ограничение соединения. Подробности см. в set_ccdik_joint_constraint_angle_invert().


float get_ccdik_joint_constraint_angle_max(joint_idx: int) const 🔗

Возвращает максимальное ограничение угла для сочленения в joint_idx.


float get_ccdik_joint_constraint_angle_min(joint_idx: int) const 🔗

Возвращает минимальное ограничение угла для сочленения в joint_idx.


bool get_ccdik_joint_enable_constraint(joint_idx: int) const 🔗

Возвращает информацию о том, включены ли ограничения угла для соединения CCDIK в joint_idx.


bool get_ccdik_joint_rotate_from_joint(joint_idx: int) const 🔗

Возвращает, установлено ли соединение в joint_idx для вращения от сочленения, true, или для вращения от кончика, false. По умолчанию вращение происходит от кончика.


void set_ccdik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) 🔗

Устанавливает узел Bone2D, назначенный суставу CCDIK в joint_idx.


void set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int) 🔗

Устанавливает индекс кости bone_idx сустава CCDIK в joint_idx. Когда это возможно, это также обновит bone2d_node сустава CCDIK на основе данных, предоставленных связанным скелетом.


void set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool) 🔗

Устанавливает, использует ли соединение CCDIK в joint_idx инвертированное ограничение соединения.

Инвертированное ограничение соединения ограничивает соединение CCDIK только углами вне введенных минимальных и максимальных углов. По этой причине оно называется инвертированным ограничением соединения, так как оно ограничивает соединение снаружи введенных значений.


void set_ccdik_joint_constraint_angle_max(joint_idx: int, angle_max: float) 🔗

Устанавливает максимальное ограничение угла для сочленения в joint_idx.


void set_ccdik_joint_constraint_angle_min(joint_idx: int, angle_min: float) 🔗

Устанавливает минимальное ограничение угла для сочленения в joint_idx.


void set_ccdik_joint_enable_constraint(joint_idx: int, enable_constraint: bool) 🔗

Определяет, включены ли ограничения угла на сочленении CCDIK в joint_idx. Когда true, ограничения будут включены и учтены при решении.


void set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool) 🔗

Устанавливает, будет ли сочленение в joint_idx настроено на вращение от сочленения, true, или на вращение от кончика, false.