I am trying to implement skeletal animation in my engine using ASSIMP. So far I have the model loading and rendering fine.. I am pretty sure the per-vertex inputs are set up correctly with the proper bone IDs and blend weights, and I think the shader itself is correct.
The basic problem I think is I have an incomplete understanding of the use of the transformation matrices to generate the final bone matrix. ASSIMP provides key frames made up of positions, rotations and scaling factors. There is also a “bone offset matrix” provided, which is also called the inverse bind pose matrix.
So i am currently doing something like this in my app(directX):
matBone=matTranslate*matRotation; //OK to leave out scaling because no scaling keys?
final matrix= matBoneOffset * matBone;
I am also concatenating the matBone matrix with its parent bone matrices up to the root …this seems necessary because I dont think the position keys are concatenated. i dont know… i've been reading lots of posts and articles…much of it is confusing me because of different conventions and so on..What i really need is a clear procedure that works in directX so i can see if my data is correct, or the problem lies elsewhere… Not looking for code so much and a clear formula.. thanks