Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

int

ccdik_data_chain_length

0

NodePath

target_nodepath

NodePath("")

NodePath

tip_nodepath

NodePath("")

Methods

NodePath

get_ccdik_joint_bone2d_node ( int joint_idx ) const

int

get_ccdik_joint_bone_index ( int joint_idx ) const

bool

get_ccdik_joint_constraint_angle_invert ( int joint_idx ) const

float

get_ccdik_joint_constraint_angle_max ( int joint_idx ) const

float

get_ccdik_joint_constraint_angle_min ( int joint_idx ) const

bool

get_ccdik_joint_enable_constraint ( int joint_idx ) const

bool

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

  • void set_ccdik_data_chain_length ( int value )

  • int get_ccdik_data_chain_length ( )

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.