Inverse kinematics solver for three.js using the FABRIK algorithm with ball-joint constraints.
THREE.IK is an inverse kinematics library for three.js that implements the FABRIK algorithm to solve joint rotations for reaching target positions. It enables realistic character animation and robotic movement simulations by calculating how chains of bones should rotate to achieve desired end effector positions. The library supports multiple chains with multiple effectors and includes ball-joint constraints for natural movement limits.
Three.js developers creating character animations, robotic simulations, or interactive 3D applications requiring realistic joint movement. Game developers and 3D visualization engineers who need inverse kinematics capabilities within their three.js projects.
Developers choose THREE.IK because it provides a specialized, well-integrated inverse kinematics solution specifically for three.js with a straightforward API. Unlike general-purpose IK libraries, it works natively with three.js Bone objects and includes visualization tools, making it easier to implement and debug complex IK systems in WebGL applications.
inverse kinematics for three.js
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements the fast, iterative FABRIK algorithm for efficient inverse kinematics solving, as highlighted in the README and demo examples.
Supports complex IK systems with multiple chains and end effectors working simultaneously, enabling realistic character animations and robotic simulations.
Includes IKHelper for visualizing bones and chains directly in the scene, simplifying debugging and setup, as shown in the usage example.
Works natively with three.js Bone objects and scene hierarchy, reducing integration overhead for developers already using three.js.
The README warns it's a work in progress with open issues and breaking changes, making it risky for production environments or long-term projects.
Currently only supports ball-joint constraints, lacking other common types like hinge or twist, which restricts more complex animation needs.
Requires explicit creation and management of bones, chains, and joints, which can be tedious and error-prone for beginners or complex rigs.