First of all the Keyframe loader reads keyframe data in wrong order:
Second bug is a wrong quaternion rotation transformation:COgreMeshFileLoader::loadSkeleton
// Wrong order
readFloat(file, data, &keyframe.Time);
keyframe.Time+=animationTotal;
readVector(file, data, keyframe.Position);
readQuaternion(file, data, keyframe.Orientation);
// Correct order
readFloat(file, data, &keyframe.Time);
keyframe.Time+=animationTotal;
readQuaternion(file, data, keyframe.Orientation);
readVector(file, data, keyframe.Position);
With these fixes i can load .mesh and .skeleton files with no problems.COgreMeshFileLoader::composeObject
// WRONG
rotkey->rotation = frame.Orientation + core::quaternion(keyjoint->LocalMatrix);
// CORRECT
rotkey->rotation = core::quaternion(keyjoint->LocalMatrix) * frame.Orientation;
PS:
It would be also usefull to allow loading of .skeleton files separately.