I just don't get it. I was pretty elated when I figured out how to export an animated mesh to Blender DAE and get it working in-game, but it's not quite working perfectly. There's a weird bug where the character's arm collapses into a ball between two frames of animation, then corrects itself. I'm 99% sure it's the quaternion interpolation that's causing this, because the translation is just fine, it looks like the rotation is getting messed up. Also, this only happens twice over the 50+ frame animation. Here's the code that blends the skeleton's current animation pose. is this likely to be causing the problem? I can produce a GIF if required

void Skeleton::LerpFrame(float frame, float t, bool siblings, bool children) { Vector3 trans = pAnimation->GetTranslate(frame); Vector3 scale = pAnimation->GetScale(frame); Quaternion rotate = pAnimation->GetRotate(frame); FrameRotate = Quaternion::Slerp(FrameRotate, rotate, t); FrameTranslate = Vector3::Lerp(FrameTranslate, trans, t); FrameScale = Vector3::Lerp(FrameScale, scale, t); Matrix parentTransform = Matrix::Identity(); if (pParent) { parentTransform = pParent->GlobalTransform; } Matrix localTransform = Matrix::CreateFromQuaternion(FrameRotate) * Matrix::CreateTranslation(FrameTranslate); GlobalTransform = localTransform * parentTransform; if (pSibling && siblings) pSibling->LerpFrame(frame, t, true, children); if (pChild && children) pChild->LerpFrame(frame, t, true, true); }

Important notes: The math library I'm using is DirectX::SimpleMath. Also, there's no skinning shader - at the moment my characters are made out of static meshes attached to a skeleton, so that can't be the problem.