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.

SkeletonModification2DCCDIK

Sperimentale: This class may be changed or removed in future versions.

Eredita: SkeletonModification2D < Resource < RefCounted < Object

Una modificazione che utilizza il CCDIK per manipolare una serie di ossa per raggiungere un obiettivo in 2D.

Descrizione

Questo SkeletonModification2D utilizza un algoritmo chiamato Cyclic Coordinate Descent Inverse Kinematics, o CCDIK, per manipolare una catena di ossa in uno Skeleton2D in modo che raggiunga un obiettivo definito.

CCDIK funziona ruotando un insieme di ossa, in genere chiamato "catena di ossa", su un singolo asse. Ogni osso viene ruotato per puntare verso l'obiettivo dalla punta (per impostazione predefinita), che su una catena di ossa gli consente di ruotare correttamente per raggiungere l'obiettivo. Poiché le ossa ruotano solo su un singolo asse, CCDIK può apparire più robotico di altri risolutori IK.

Nota: Il modificatore CCDIK ha ccdik_joints, che sono gli oggetti dati che contengono i dati per ogni articolazione nella catena CCDIK. Questo è diverso da un osso! I giunti CCDIK contengono i dati necessari per ogni osso nella catena di ossa utilizzata da CCDIK.

Inoltre, CCDIK supporta totalmente i vincoli angolari, consentendo un maggiore controllo sul modo in cui viene soddisfatta una soluzione.

Proprietà

int

ccdik_data_chain_length

0

NodePath

target_nodepath

NodePath("")

NodePath

tip_nodepath

NodePath("")

Metodi

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)


Descrizioni delle proprietà

int ccdik_data_chain_length = 0 🔗

  • void set_ccdik_data_chain_length(value: int)

  • int get_ccdik_data_chain_length()

Il numero di articolazioni CCDIK nella modificazione CCDIK.


NodePath target_nodepath = NodePath("") 🔗

Il NodePath al nodo che è l'obiettivo per la modificazione CCDIK. Questo nodo è ciò verso cui la catena CCDIK tenterà di ruotare la catena d'ossa.


NodePath tip_nodepath = NodePath("") 🔗

La posizione finale della catena CCDIK. In genere, dovrebbe essere un figlio di un nodo Bone2D collegato al Bone2D finale nella catena CCDIK.


Descrizioni dei metodi

NodePath get_ccdik_joint_bone2d_node(joint_idx: int) const 🔗

Restituisce il nodo Bone2D assegnato all'articolazione CCDIK all'indice joint_idx.


int get_ccdik_joint_bone_index(joint_idx: int) const 🔗

Restituisce l'indice del nodo Bone2D assegnato all'articolazione CCDIK all'indice joint_idx.


bool get_ccdik_joint_constraint_angle_invert(joint_idx: int) const 🔗

Restituisce se l'articolazione CCDIK all'indice joint_idx utilizza un vincolo invertito di articolazione. Vedi set_ccdik_joint_constraint_angle_invert() per i dettagli.


float get_ccdik_joint_constraint_angle_max(joint_idx: int) const 🔗

Restituisce il vincolo angolare massimo per l'articolazione all'indice joint_idx.


float get_ccdik_joint_constraint_angle_min(joint_idx: int) const 🔗

Restituisce il limite minimo dell'angolo per l'articolazione all'indice joint_idx.


bool get_ccdik_joint_enable_constraint(joint_idx: int) const 🔗

Restituisce se i vincoli angolari sull'articolazione CCDIK all'indice joint_idx sono abilitati.


bool get_ccdik_joint_rotate_from_joint(joint_idx: int) const 🔗

Restituisce se l'articolazione all'indice joint_idx è impostata per ruotare dal giunto, true, o per ruotare dalla punta, false. L'impostazione predefinita è ruotare dalla punta.


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

Imposta il nodo Bone2D assegnato all'articolazione CCDIK all'indice joint_idx.


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

Imposta l'indice osseo, bone_idx, dell'articolazione CCDIK su joint_idx. Quando possibile, questo aggiornerà anche il bone2d_node dell'articolazione CCDIK in base ai dati forniti dallo scheletro collegato.


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

Imposta se l'articolazione CCDIK all'indice joint_idx utilizza un vincolo invertito di articolazione.

Un vincolo invertito vincola l'articolazione CCDIK solo agli angoli esterni degli angoli minimo e massimo immessi. Per questo motivo, viene definito vincolo invertito, in quanto vincola l'articolazione all'esterno dei valori immessi.


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

Imposta il limite massimo dell'angolo per l'articolazione all'indice joint_idx.


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

Imposta il vincolo angolare minimo per l'articolazione all'indice joint_idx.


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

Determina se i vincoli angolari sull'articolazione CCDIK all'indice joint_idx sono abilitati. Quando true, i vincoli saranno abilitati e presi in considerazione durante la risoluzione.


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

Imposta se l'articolazione all'indice joint_idx è impostato per ruotare dal giunto, true, o per ruotare dalla punta, false.