Additive Blendspace Animations

About

For Fungal, one of our animators, William Teurnell, made a blendspace ready motion captured character as part of his portfolio!

To really bring this character to life together with the gameplay programmer Sabina Gustavsson I implemented blendspace and additative animation blending inspired by Unreal Engine 4.

bs_fixed.gif

Implementation

2D Blendspaces

Blendspaces are an n-dimensional representation of blending between values. Inspired by Unreal Engine 4, I implemented two dimensional blendspaces for animations. This allowed us to create strong character controllers, with responsive animations.

A 2D blendspace can be reprsented as a grid of nodes. When the user then samples a point in the grid, the 4 closest nodes (see the red dots on the image) will be blended to a resulting value based on the input position (see the cyan dot on the image)

When used for animations, usefull values such as look direction and velocity can be used to sample a blend between 4 animations, allowing the programmer or animator to design controllers where the character seemlessly changes animations based on input.

Blendspace.png
bs_2.gif

Additive Animations

Additive animations are animations added on top of an animation. To avoid deforming, the addition has to be performed when going down he bone hierarchy and calculating the final pose of the character. Another measure that is used to avoid deformities is subtracting a base pose according to the following formula:

Equation.png

This works as one would expect, but since rotation is represented as quaternions in the engine the function will look a bit different. Since Quaternions dont have an addition operator the subtraction will instead be represented as a multiplication of the inverse rotation of the base pose as follows:

bs_additive.gif
QuatAdditive.png