Skip to main content

Inverse

The InverseKinematics plugin provides a solver for inverse kinematics (IK) chains in 3D space. It enables procedural control over the positioning and orientation of articulated structures such as robotic arms or character rigs. The solver supports fixed, slider, hinge, and ball joint types, with configurable joint limits, weights, and constraints for precise control.

IK chains can be automatically constructed from Node, ObjectNode, or Body instances by specifying the start and end objects. The solver uses a Jacobian-based algorithm, delivering high precision and performance for real-time applications.

The plugin utilizes numerical methods from TellusimNumerical and does not required external dependencies.

#include <physics/inverse/include/TellusimInverse.h>

Example

InverseKinematics solver;

// Create inverse kinematics chain
if(!solver.create(first_body, last_body)) return false;

// Solve inverse kinematics chain
if(!solver.solve(target_position, target_rotation)) return false;

// Retrieve solver parameters
for(uint32_t i = 0; i < solver.getNumJoints(); i++) {
float32_t parameter = solver.getJointParameter(i);
const Vector3f &parameters = solver.getJointParameters(i);
const Vector3f &position = solver.getPosition(i);
const Quaternionf &rotation = solver.getRotation(i);
const Matrix4x3f &transform = solver.getTransform(i);
}