Additive Blendspace Animations
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.
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.
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:
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: