098 - Additive Animation Blending

December 20, 2020

Since the last journal entry I've introduced additive blending support in the engine.

The first use case for this is in bow combat. It is now possible to adjust the bow firing animation based on where the enemy is.

The arms are out of whack. I'll get that fixed.

Some polish is needed, but in general the system works.

Authoring Additive Animation

If an animation's name begins with [Static Additive], the engine will expect it to have a keyframe that is labeled "Base".

All other keyframes in the animation must be labeled as well.

Each of the other keyframed poses will be differed against the base pose, then an additive animation will be generated using the name of the keyframed pose.

Defining additive animations in Blender. Each additive pose will be differed against the base pose. The engine is not coupled to Blender, so animations could just as well be defined in a different tool.

Other Notes / Progress

  • Fixed lower body walk animation not playing

  • Added dual quaternion support to nalgebra (Link to PR) #810

  • Cleaned up the animation keyframe interpolation code within landon

  • Experimenting with writing Blender addons in Rust. It works and I will open source the implementation.

Next Journal Entry

There are a few animation issues that stem from the same problem.

Right now when I export bones from Blender I am only exporting world transformations.

This makes it impossible to properly do things such as additive blending, or to properly play separate animations on different bones such as when a player is walking while firing.

I plan to fix that this week.

I will also be leaving Rigify in favor of my own rigs. Rigify's deform bones are parented in ways that don't gel well with exporting for games.

While I could invest time in trying to fix this, I'd rather invest in my ability to make good rigs myself so that I don't run into more problems like this in the future.

After all of this animation work is done I will continue to iterate on the Bowman skill until it feels great.

Cya next time!