So I'm using Assimp to convert models into my own format, and things work fine if I use Assimp's animation data format. This would store absolute transforms per keyframe relative the the parent bone.
For reasons relating to blending animations and flexibility, I was making my format use transforms relative to the bind pose instead, and this was working very nicely for some models.
I was experimenting with converting md5 models and the Doom 3 player character and hell knight work fine. I got their run straight animations working. The pinky demon though kindof explodes.
I've noticed that the bind pose for the player and the hell knight are 90 degrees perpendicular to their walk straight animation. While the model faces down z, its animation goes down the x axis. The pinky demon, however, faces down the x axis in its bind pose and moves in the same direction.
This ends up making the pinky demon kindof awkwardly moonwalk sideways while also twisting a few bones a bit more than they should be.
One of the artists on our team gave me an animation that explodes similarly once the root bone starts to move in some direction.
The only connection I've made so far is my format only works if the model faces down z and has the root bone translate along x.
I've spent hours trying to debug the math myself. Maybe there's something I'm not understanding about transforms and am making the wrong assumptions about something?