Apologies if I am missing something very obvious (likely!) but is there anything wrong with interpolating between two matrices by:
float d = (float)(targetTime.Ticks - keyframe_start.ticks) / (float)(keyframe_end.ticks - keyframe_start.ticks);
return ((keyframe_start.Transform * (1 - d)) + (keyframe_end.Transform * d));
As in my app, when I try an use this to interpolate between two keyframes, the model begins to 'shrink' - the severity based on how far between the two keyframes the target time is; its worst when the transform split is ~50/50.
