I am currently trying to implement animations in my game. I am having an issue where the bones do not rotate properly.
In my program, I apply an inverse bind pose to each bone to move them to bone space. Then I recursively calculate the transformations for each bone for the keyframe.
The bone transformation looks like this:
bone.Transform = InverseRootGlobal * Global * bone.InversePose
- InverseRootGlobal is the inverted root node transformation
- Global is the recursively calculated transformation
- bone.InversePose is the inverse pose matrix
It appears that all is correct apart from the bones initial rotation. When I move the bones to bone space, they loose their rotation from the bind pose and 'point up'. Here's what it looks like:
If it helps, I am using Assimp to import the data.
Thanks in advance.