FABRIK Implementation
I recently joined my friends, a talented bunch of developers, to work on the game Gruidae. I took on the responsibility to implement the final boss fight for the game.
The boss creature has over 10 limbs and thus needs to be procedurally animated. Even though Unreal Engine has a procedural animation system including FABRIK, this being an educational project, I wanted to make my own procedural animation system. Hence this mini project.
​
-
FABRIK (Forward and Backwards Reaching Inverse Kinematics) makes it easy to determine positions of bones in a chain of multiple bones based on a given target for the end bone (reference papers).
-
My implementation also includes pole constraints for 3 bone chains
-
The implementation automatically creates chains from a skeletal mesh based on the bone names.
Basic FABRIK
-
The algorithms iteratively goes up and down the chain, changing bone positions until a satisfying solutions is achieved or iterations are finished
Basic FABRIK solve to reach a target position

Traversing Up the Chain
Traversing Down the Chain
Pole Constraints
-
Pole constraints are only used in three bone chains to add a constraint dimension that drives where the middle bone points.
Pole Constraint

Pole Constraint
More
-
When solving real time, tracing from top of the bone caused the mesh to overlap with world geometry in certain situations, Tracing from a point closer to the pelvis solved this issue.
Direct Vertical Trace

Trace Starting Closer to Pelvis
