Specialization: FABRIK (Procedual Animation) | Canceled

Table of Contents

Intro

At The Game Assembly, students take a course called Specialization, where they choose an area of focus to explore in-depth. For my specialization, I chose procedural animation, specifically using the FABRIK (Forward and Backward Reaching Inverse Kinematics) method.

My original plan was to create a procedurally animated spider in Unreal Engine. However, I ran into significant challenges with rigging and engine compatibility. After struggling for a few weeks, I decided to switch to Unity, which proved to be a more manageable environment for my project.

What is FABRIK

FABRIK, short for Forward and Backward Reaching Inverse Kinematics, is a powerful algorithm used in animation and robotics. Unlike traditional inverse kinematics methods, FABRIK iteratively adjusts bone positions in a way that creates smoother and more natural-looking motion. It allows for precise control of articulated structures, making it ideal for lifelike character movement.

Why I pick procedual Animation as my specialization

I get so excited when i see awesome procedual animation, it's fascinating. Procedual animation breaks the rules of traditional animation and opens up more possibilities to do. I decieded to pick it because of my passion for animatoin.

There was this one clipthat first got me hooked on procedual animation ages ago. I never tried doing it because I hade no knowledge in programming but this time i will attempt doing it.

The Struggle Begins

My journey started with the ambitious goal of creating a procedural animation system for a spider in Unreal Engine. I planned to begin small, focusing on a single leg and implementing inverse kinematics (IK) before expanding to the full body.

However, I quickly ran into a major roadblock: upon exporting my leg model to Unreal, the skeleton kept disappearing. No matter how many times I tried to troubleshoot the issue, I couldn’t get it to work correctly.

Frustrated but determined, I decided to pivot and move my project to Unity. This transition immediately resolved my skeleton import issues, which was a huge relief. But a new challenge emerged—when applying the FABRIK method, the leg mesh stretched in an unnatural way, far from the smooth motion I had envisioned.

 

 

Implementing FABRIK: Progress & Result

 

To debug my setup, I created a script called Bone Setup, which renders the bones as visual elements. This helped me verify their positions and detect any issues with movement. I also included functionality to adjust the color and size of the bone indicators for easier debugging

heres a little bit of the code.

 

Code Inspiration & Structure

My FABRIK implementation is a hybrid of multiple approaches. I took inspiration from an IK system available on the Unity Asset Store and combined it with Unity’s Animation Rigging package. Additionally, I modeled my Bone Setup script after Unity’s built-in bone renderer to improve visualization.

Here's the structure of my setup:

|- Character
  |- Root_jnt
  |- sk_character
  |- Rig1
    |- LeftLeg (IK script component attached)
      |- Target (Script to move the target)
    |- RightLeg (IK script component attached)
       |- Target (Script to move the target)
    |- LeftArm (IK script component attached)
       |- Target (Script to move the target)
    |- RightArm (IK script component attached)
       |- Target (Script to move the target)

Conclusion

My specialization journey in procedural animation was filled with challenges, but each obstacle helped me develop my problem-solving skills and deepen my understanding of FABRIK. Switching from Unreal to Unity was a tough decision, but it ultimately allowed me to make significant progress.

However, after the course ended, I decided not to continue working on the project. While I could have refined aspects like mesh rotation, I realized that I didn’t actually enjoy working with FABRIK as much as I had expected. This experience taught me not only technical skills but also the importance of choosing projects that truly engage and excite me.