TwoBoneIK3D

Наследует: IKModifier3D < SkeletonModifier3D < Node3D < Node < Object

Решатель обратной кинематики на основе вращения при пересечении двух окружностей.

Описание

Этот IKModifier3D требует наличия целевого полюса. Он обеспечивает детерминированные результаты, строя плоскость из каждого сустава и целевого полюса и находя пересечение двух окружностей (дисков в 3D).

Этот IK может обрабатывать скручивание, задавая направление полюса. Если между каждой заданной костью находится более одной кости, их вращения игнорируются, а прямая линия, соединяющая корневой, средний и средний конечный суставы, рассматривается как виртуальная кость.

Свойства

int

setting_count

0

Методы

int

get_end_bone(index: int) const

BoneDirection

get_end_bone_direction(index: int) const

float

get_end_bone_length(index: int) const

String

get_end_bone_name(index: int) const

int

get_middle_bone(index: int) const

String

get_middle_bone_name(index: int) const

SecondaryDirection

get_pole_direction(index: int) const

Vector3

get_pole_direction_vector(index: int) const

NodePath

get_pole_node(index: int) const

int

get_root_bone(index: int) const

String

get_root_bone_name(index: int) const

NodePath

get_target_node(index: int) const

bool

is_end_bone_extended(index: int) const

bool

is_using_virtual_end(index: int) const

void

set_end_bone(index: int, bone: int)

void

set_end_bone_direction(index: int, bone_direction: BoneDirection)

void

set_end_bone_length(index: int, length: float)

void

set_end_bone_name(index: int, bone_name: String)

void

set_extend_end_bone(index: int, enabled: bool)

void

set_middle_bone(index: int, bone: int)

void

set_middle_bone_name(index: int, bone_name: String)

void

set_pole_direction(index: int, direction: SecondaryDirection)

void

set_pole_direction_vector(index: int, vector: Vector3)

void

set_pole_node(index: int, pole_node: NodePath)

void

set_root_bone(index: int, bone: int)

void

set_root_bone_name(index: int, bone_name: String)

void

set_target_node(index: int, target_node: NodePath)

void

set_use_virtual_end(index: int, enabled: bool)


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

int setting_count = 0 🔗

  • void set_setting_count(value: int)

  • int get_setting_count()

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


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

int get_end_bone(index: int) const 🔗

Возвращает индекс конечной кости.


BoneDirection get_end_bone_direction(index: int) const 🔗

Возвращает направление хвоста конечной кости, когда is_end_bone_extended() имеет значение true.


float get_end_bone_length(index: int) const 🔗

Возвращает длину хвостовой части конечной кости цепочки костей, когда is_end_bone_extended() имеет значение true.


String get_end_bone_name(index: int) const 🔗

Возвращает название конечной кости.


int get_middle_bone(index: int) const 🔗

Возвращает индекс средней кости.


String get_middle_bone_name(index: int) const 🔗

Возвращает название средней кости.


SecondaryDirection get_pole_direction(index: int) const 🔗

Возвращает направление полюса.


Vector3 get_pole_direction_vector(index: int) const 🔗

Возвращает вектор направления полюса.

Если get_pole_direction() равен SkeletonModifier3D.SECONDARY_DIRECTION_NONE, этот метод возвращает Vector3(0, 0, 0).


NodePath get_pole_node(index: int) const 🔗

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


int get_root_bone(index: int) const 🔗

Возвращает индекс корневой кости.


String get_root_bone_name(index: int) const 🔗

Возвращает имя корневой кости.


NodePath get_target_node(index: int) const 🔗

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


bool is_end_bone_extended(index: int) const 🔗

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


bool is_using_virtual_end(index: int) const 🔗

Возвращает true, если конечная кость является продолжением средней кости в качестве виртуальной кости.


void set_end_bone(index: int, bone: int) 🔗

Устанавливает индекс конечной кости.


void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗

Задает направление хвостовой части конечной кости, когда is_end_bone_extended() имеет значение true.


void set_end_bone_length(index: int, length: float) 🔗

Устанавливает длину хвостовой части конечной кости, когда is_end_bone_extended() имеет значение true.


void set_end_bone_name(index: int, bone_name: String) 🔗

Задает имя конечной кости.

Примечание: Конечная кость должна быть дочерней по отношению к средней кости.


void set_extend_end_bone(index: int, enabled: bool) 🔗

Если enabled равно true, конечная кость удлиняется, образуя хвост.


void set_middle_bone(index: int, bone: int) 🔗

Устанавливает средний индекс кости.


void set_middle_bone_name(index: int, bone_name: String) 🔗

Задает имя средней кости.

Примечание: Средняя кость должна быть дочерней по отношению к корневой кости.


void set_pole_direction(index: int, direction: SecondaryDirection) 🔗

Задает направление полюса.

Полюс расположен на средней кости и будет направлен к целевой точке.

Ось вращения — это вектор, ортогональный этому вектору и вектору прямого вращения.

Примечание: Направление полюса и вектор прямого вращения не должны быть коллинеарными, чтобы избежать непреднамеренного вращения.


void set_pole_direction_vector(index: int, vector: Vector3) 🔗

Задает вектор направления полюса.

Этот вектор нормализуется внутренним процессом.

Если длина вектора равна 0, он считается синонимом SkeletonModifier3D.SECONDARY_DIRECTION_NONE.


void set_pole_node(index: int, pole_node: NodePath) 🔗

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


void set_root_bone(index: int, bone: int) 🔗

Устанавливает индекс корневой кости.


void set_root_bone_name(index: int, bone_name: String) 🔗

Задает имя корневой кости.


void set_target_node(index: int, target_node: NodePath) 🔗

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


void set_use_virtual_end(index: int, enabled: bool) 🔗

Если enabled равно true, конечная кость отходит от средней кости как виртуальная кость.