SkeletonModification2DCCDIK¶
Inherits: SkeletonModification2D < Resource < RefCounted < Object
A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D.
Description¶
This SkeletonModification2D uses an algorithm called Cyclic Coordinate Descent Inverse Kinematics, or CCDIK, to manipulate a chain of bones in a Skeleton2D so it reaches a defined target.
CCDIK works by rotating a set of bones, typically called a "bone chain", on a single axis. Each bone is rotated to face the target from the tip (by default), which over a chain of bones allow it to rotate properly to reach the target. Because the bones only rotate on a single axis, CCDIK can look more robotic than other IK solvers.
Note: The CCDIK modifier has ccdik_joints
, which are the data objects that hold the data for each joint in the CCDIK chain. This is different from a bone! CCDIK joints hold the data needed for each bone in the bone chain used by CCDIK.
CCDIK also fully supports angle constraints, allowing for more control over how a solution is met.
Properties¶
|
||
|
||
|
Methods¶
get_ccdik_joint_bone2d_node ( int joint_idx ) const |
|
get_ccdik_joint_bone_index ( int joint_idx ) const |
|
get_ccdik_joint_constraint_angle_invert ( int joint_idx ) const |
|
get_ccdik_joint_constraint_angle_max ( int joint_idx ) const |
|
get_ccdik_joint_constraint_angle_min ( int joint_idx ) const |
|
get_ccdik_joint_enable_constraint ( int joint_idx ) const |
|
get_ccdik_joint_rotate_from_joint ( int joint_idx ) const |
|
void |
set_ccdik_joint_bone2d_node ( int joint_idx, NodePath bone2d_nodepath ) |
void |
set_ccdik_joint_bone_index ( int joint_idx, int bone_idx ) |
void |
set_ccdik_joint_constraint_angle_invert ( int joint_idx, bool invert ) |
void |
set_ccdik_joint_constraint_angle_max ( int joint_idx, float angle_max ) |
void |
set_ccdik_joint_constraint_angle_min ( int joint_idx, float angle_min ) |
void |
set_ccdik_joint_enable_constraint ( int joint_idx, bool enable_constraint ) |
void |
set_ccdik_joint_rotate_from_joint ( int joint_idx, bool rotate_from_joint ) |
Property Descriptions¶
int ccdik_data_chain_length = 0
The number of CCDIK joints in the CCDIK modification.
NodePath target_nodepath = NodePath("")
The NodePath to the node that is the target for the CCDIK modification. This node is what the CCDIK chain will attempt to rotate the bone chain to.
NodePath tip_nodepath = NodePath("")
The end position of the CCDIK chain. Typically, this should be a child of a Bone2D node attached to the final Bone2D in the CCDIK chain.
Method Descriptions¶
NodePath get_ccdik_joint_bone2d_node ( int joint_idx ) const
Returns the Bone2D node assigned to the CCDIK joint at joint_idx
.
int get_ccdik_j