<s>First thing I see is that you shouldn't read the quaternion in reverse order.</s>

Also you shouldn't use `glm::mix`, use `glm::slerp` instead.

And here is how I construct the bone transform:

	mat = glm::mat4_cast( currentrotation );
	mat[0][0] *= currentscale.x; mat[1][0] *= currentscale.x; mat[2][0] *= currentscale.x;
	mat[0][1] *= currentscale.y; mat[1][1] *= currentscale.y; mat[2][1] *= currentscale.y;
	mat[0][2] *= currentscale.z; mat[1][2] *= currentscale.z; mat[2][2] *= currentscale.z;
	mat[0][3] = currentposition.x; mat[1][3] = currentposition.y; mat[2][3] = currentposition.z;

Also I would check all my matrix multiplication, it should be in reverse order to how would you do it with Assimp matrices.



----------


I base all this on personal experience from implementing an animated mesh with assimp and glm myself.(which now works) But it might not be the *correct* way of doing things.