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.
Checking the stable version of the documentation...
SkeletonModification2DCCDIK
實驗性: This class may be changed or removed in future versions.
繼承: SkeletonModification2D < Resource < RefCounted < Object
使用 CCDIK 操縱一系列骨骼到達某個 2D 目標的修改器。
說明
這種 SkeletonModification2D 使用的是名為迴圈座標下降逆向運動學(Cyclic Coordinate Descent Inverse Kinematics)的演算法,即 CCDIK,能夠對 Skeleton2D 中的一條骨骼鏈進行操作,從而抵達指定的目標。
CCDIK 的工作原理是讓一組骨骼圍繞單一軸旋轉,這組骨骼通常稱作“骨骼鏈”。每根骨骼的尖端都會轉向目標(預設),這樣整條骨骼鏈就能夠正確旋轉,從而抵達目標。因為這些骨骼都只圍繞單一軸進行旋轉,CCDIK 看起來能夠比其他 IK 解算器更加機械。
注意:CCDIK 修改器具有關節屬性 ccdik_joints,裡面是存放 CCDIK 鏈中各個關節資料的資料物件。關節和骨骼是兩碼事!CCDIK 關節存放的是 CCDIK 所使用的骨骼鏈中每根骨骼所需的資料。
CCDIK 還完全支援角度約束,能夠對求解過程進行更多控制。
屬性
|
||
|
||
|
方法
get_ccdik_joint_bone2d_node(joint_idx: int) const |
|
get_ccdik_joint_bone_index(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_invert(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_max(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_min(joint_idx: int) const |
|
get_ccdik_joint_enable_constraint(joint_idx: int) const |
|
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 🔗
CCDIK 修改中 CCDIK 關節的數量。
NodePath target_nodepath = NodePath("") 🔗
作為 CCDIK 修改目標的節點的 NodePath。該節點是 CCDIK 鏈會嘗試將該骨骼鏈旋轉到的節點。
NodePath tip_nodepath = NodePath("") 🔗
該 CCDIK 鏈的結束位置。通常,這應該是一個 Bone2D 節點的一個子節點,被附加到 CCDIK 鏈中的最終 Bone2D 上。
方法說明
NodePath get_ccdik_joint_bone2d_node(joint_idx: int) const 🔗
返回分配給位於 joint_idx 的 CCDIK 關節的 Bone2D 節點。
int get_ccdik_joint_bone_index(joint_idx: int) const 🔗
返回分配給位於 joint_idx 的 CCDIK 關節的 Bone2D 節點的索引。
bool get_ccdik_joint_constraint_angle_invert(joint_idx: int) const 🔗
返回索引為 joint_idx 的 CCDIK 關節是否使用反向關節約束。詳見 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 🔗
返回索引為 joint_idx 的 CCDIK 關節是否啟用角度約束。
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) 🔗
設定分配給位於 joint_idx 的 CCDIK 關節的 Bone2D 節點。
void set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int) 🔗
設定位於 joint_idx 的 CCDIK 關節的骨骼索引 joint_idx。可能時,還會根據所連結的骨架提供的資訊來更新 CCDIK 關節的 bone2d_node。
void set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool) 🔗
設定索引為 joint_idx 的 CCDIK 關節是否使用反向關節約束。
反向關節約束只會將該 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) 🔗
決定是否啟用 joint_idx 處 CCDIK 關節上的角度約束。為 true 時將啟用約束,在求解時納入考慮範圍。
void set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool) 🔗
設定位於 joint_idx 的關節是設為從關節旋轉,true,還是從尖端旋轉,false。