Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

TwoBoneIK3D

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

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

Описание

This IKModifier3D requires a pole target. It provides deterministic results by constructing a plane from each joint and pole target and finding the intersection of two circles (disks in 3D).

This IK can handle twist by setting the pole direction. If there are more than one bone between each set bone, their rotations are ignored, and the straight line connecting the root-middle and middle-end joints are treated as virtual bones.

Note: All the methods in this class take an index parameter. This parameter specifies which setting list entry to return if the IK has multiple entries (e.g. settings/<index>/root_bone_name).

Свойства

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, конечная кость отходит от средней кости как виртуальная кость.