📚New Animation Library

In this section you will get an overview of the new animation core.

The Scriptable Animation System is a complex technology, which brings not just a single plugin, but a new way to organize, manage and extend the functionality of animation features in your game.

Let's start with a new KAnimationCore plugin, which adds a solid low-level library of animation functions and types.

KAnimationMath

This class includes static functions to manipulate transforms in realtime. It essentailly replaces the CoreToolkitLib from the previous version. The only difference is that KAnimationMath is responsible for animation functions only.

KCurves

Includes everything related to the curves in the framework. This includes new curve-types and easing functions.

KMath

A new library deisgned for general math operations.

KSpringMath

This class implements runtime spring computation. You can use it if you wish to add a spring interpolation to your feature.

KTransform

This is a struct which is identical to the Unity built-in Transform type. The only difference is that it is a struct, which means we can use it safely in Unity Jobs!

This struct has all the methods to manipulate the transform:

public static KTransform Lerp(KTransform a, KTransform b, float alpha)

// Frame-rate independent interpolation.
public static KTransform ExpDecay(KTransform a, KTransform b, float speed, float deltaTime)

public bool Equals(KTransform other, bool useScale)

// Returns a point relative to this transform.
public Vector3 InverseTransformPoint(Vector3 worldPosition, bool useScale)

// Returns a vector relative to this transform.
public Vector3 InverseTransformVector(Vector3 worldDirection, bool useScale)

// Converts a local position from this transform to world.
public Vector3 TransformPoint(Vector3 localPosition, bool useScale)

// Converts a local vector from this transform to world.
public Vector3 TransformVector(Vector3 localDirection, bool useScale)

// Returns a transform relative to this transform.
public KTransform GetRelativeTransform(KTransform worldTransform, bool useScale)

// Converts a local transform to world.
public KTransform GetWorldTransform(KTransform localTransform, bool useScale)

KTwoBoneIK

This class implements a two-bone IK algorithm, which is Unity Jobs-friendly! The Solve function uses KTransform by default, and also provides a KTwoBoneIkJob class to solve inverse kinematics for multiple limbs in ParallelFor.

By default, this class is used in the IkLayerState class to apply inverse kinematics.

As you can see, the new KAnimationUtilty is a way more streamlined, and most importantly independent from the main code-based, which makes it possible to use outside of the framework.

In the next section we will learn more about the KRig assets.

Last updated