MCPcopy Index your code
hub / github.com/FedUni/caliko

github.com/FedUni/caliko @v1.3.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.3.8 ↗ · + Follow
725 symbols 1,881 edges 73 files 583 documented · 80%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Caliko

The Caliko library is an implementation of the FABRIK inverse kinematics (IK) algorithm in the Java programming language, and is released under the MIT software license. See LICENSE.txt for further details.

The FABRIK algorithm is explained in the following research paper: Aristidou, A., & Lasenby, J. (2011). FABRIK: a fast, iterative solver for the inverse kinematics problem. Graphical Models, 73(5), 243-260.

If referencing this project in your research, APA style referencing for the accompaniying research paper is: Lansley, A., Vamplew, P., Smith, P., & Foale, C. (2016). Caliko: An inverse kinematics software library implementation of the FABRIK algorithm. Journal of Open Research Software, 4(1).

You can watch a short video outlining the setup and functionality of the Caliko library here: https://www.youtube.com/watch?v=wEtp4P2ucYk

Structure

The library is a Maven multi-module project with the following modules:

The caliko module contains the core IK portion of the library and is capable of running without any visualisation or external dependencies.

The caliko-visualisation module contains the optional visualisation component of the library which provides the ability to draw various IK structures/chains/bones and depends on the core caliko functionality as well as the LWJGL 3.2.2 library.

The caliko-demo module contains a demonstration of the library utilising both 2D and 3D IK chains in various configurations. It requires the caliko, caliko-visualisation and LWJGL 3.2.2 libraries.

Build and Setup

To build yourself:

git clone https://github.com/FedUni/caliko

mvn clean package or mvn clean install

Alternatively, download a release from: https://github.com/FedUni/caliko/releases

Usage

To use the library in your own Maven project, declare the following dependencies:

1) If you only need the IK algorithm and do not need any visualisation:

    <dependency>
      <groupId>au.edu.federation.caliko</groupId>
      <artifactId>caliko</artifactId>
<<<<<<< HEAD
      <version>1.3.8</version>
=======
      <version>1.3.6</version>
>>>>>>> 863cb069101035f61613b7983f504991d9a0d876
    </dependency> 

2) If you need the IK algorithm and the visualisation:

    <dependency>
      <groupId>au.edu.federation.caliko.visualisation</groupId>
      <artifactId>caliko-visualisation</artifactId>
<<<<<<< HEAD
      <version>1.3.8</version>
=======
      <version>1.3.6</version>
>>>>>>> 863cb069101035f61613b7983f504991d9a0d876
    </dependency> 

Demo controls

  • Left mouse button sets target in 2D mode and enables mouse-look in 3D mode.
  • Up/Down cursors - Toggle 2D/3D mode.
  • Left/Right cursors - Prev/Next demo.
  • Space - Pause/Resume target movement (3D).
  • L - Toggle display lines.
  • M - Toggle display models (3D).
  • X - Toggle display axes (3D).
  • F - Toggle fixed base mode.
  • P - Toggle perspective / orthographic projection (3D)
  • R - Toggle rotating base locations (3D)
  • Esc - Quit.

TODO

High priority

  • Nil.

Medium priority

  • Nil.

Low priority

  • Refactor entire library to use quaternions.
  • Add parabolic constraint types.
  • Streamline Model class object copying.

Extension points exported contracts — how you extend this code

CalikoDemoStructure (Interface)
@author jsalvo [22 implementers]
caliko-demo/src/main/java/au/edu/federation/caliko/demo/CalikoDemoStructure.java
FabrikJoint (Interface)
(no doc) [5 implementers]
caliko/src/main/java/au/edu/federation/caliko/FabrikJoint.java
CalikoDemo (Interface)
This abstract class is the parent of the CalikoDemo2D and CalikoDemo3D classes and is merely used to provide the ability [4 …
caliko-demo/src/main/java/au/edu/federation/caliko/demo/CalikoDemo.java
Vectorf (Interface)
Interface for a Vector @author jsalvo [2 implementers]
caliko/src/main/java/au/edu/federation/utils/Vectorf.java
BaseboneConstraintType (Interface)
@author jsalvo [2 implementers]
caliko/src/main/java/au/edu/federation/caliko/BaseboneConstraintType.java
FabrikBone (Interface)
Interface for a bone @author jsalvo [2 implementers]
caliko/src/main/java/au/edu/federation/caliko/FabrikBone.java
FabrikStructure (Interface)
(no doc) [2 implementers]
caliko/src/main/java/au/edu/federation/caliko/FabrikStructure.java

Core symbols most depended-on inside this repo

set
called by 61
caliko/src/main/java/au/edu/federation/caliko/FabrikJoint.java
add
called by 55
caliko/src/main/java/au/edu/federation/utils/Vec3f.java
createFloatBuffer
called by 33
caliko/src/main/java/au/edu/federation/utils/Utils.java
draw
called by 32
caliko-demo/src/main/java/au/edu/federation/caliko/demo/CalikoDemo.java
normalise
called by 32
caliko/src/main/java/au/edu/federation/utils/Vectorf.java
addConsecutiveBone
called by 32
caliko/src/main/java/au/edu/federation/caliko/FabrikChain3D.java
attribute
called by 28
caliko-visualisation/src/main/java/au/edu/federation/caliko/visualisation/ShaderProgram.java
abs
called by 27
caliko/src/main/java/au/edu/federation/utils/Vec3f.java

Shape

Method 646
Class 64
Interface 8
Enum 7

Languages

Java100%

Modules by API surface

caliko/src/main/java/au/edu/federation/caliko/FabrikChain3D.java57 symbols
caliko/src/main/java/au/edu/federation/utils/Vec3f.java52 symbols
caliko/src/main/java/au/edu/federation/caliko/FabrikChain2D.java50 symbols
caliko/src/main/java/au/edu/federation/utils/Mat4f.java36 symbols
caliko/src/main/java/au/edu/federation/caliko/FabrikChain.java34 symbols
caliko/src/main/java/au/edu/federation/caliko/FabrikBone3D.java34 symbols
caliko-visualisation/src/main/java/au/edu/federation/caliko/visualisation/Model.java32 symbols
caliko/src/main/java/au/edu/federation/caliko/FabrikBone2D.java30 symbols
caliko/src/main/java/au/edu/federation/caliko/FabrikJoint3D.java25 symbols
caliko/src/main/java/au/edu/federation/utils/Vec2f.java24 symbols
caliko-visualisation/src/main/java/au/edu/federation/caliko/visualisation/Camera.java22 symbols
caliko/src/main/java/au/edu/federation/utils/Mat3f.java20 symbols

For agents

$ claude mcp add caliko \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact