Here is the Collada Version and the 3DSMax Version
The two bugs I found were both to do with assimp in some way. Firstly there was a flag I had set for the importer "aiProcess_FindInvalidData" which was causing any Keys from ym keyframes to only appear once if they were the same through the entire animation. After changing this the animation was almost perfect but a few of the bones were still off quite a bit.
This comes to the second issue I had which was from the assimp documentation telling me that the transformations for the Key Frame should be applied as: Scale * Rotation * Translation, when in actual fact I had to change it to Translation * Rotation * Scale.
Anyway enough of my ramblings, here is the finished product that shows the model finally animating correctly:
Okay so this isn't quite the end yet, there is still plenty more to do. Next few things on my list are:
- Tidy up all the animation code
- Do some testing on various file formats to ensure they work
- Add support for blending multiple animations
- Do some performance testing and see how I can make the animation more efficient
- Look into ways to incorporate the animation with player input
Once all these things are done I can look into either creating a squash player or outsourcing to an artist and get them to create the player and all its animations, which is a much better option.