I’m working on ‘retargeting’ my skeleton so that it can be used with different animations. Well, to be more precise, I’m actually retargeting the animation data.
I’ve downloaded a few of the Mixamo animations to test with and I can render them fine with the skeleton that comes with it (I’m using COLLADA format). The joint rotations, though, in the bind pose, look weird. All bones are pointing upwards but are in the correct positions.
I’ve managed to remap the translation of the bones to my skeleton (which happens to be way smaller and slightly differently aligned). But trying to remap the rotations is causing me some grief.
Each animation matrix is in local bone space relative to its parent, which is useful. All I should need to do is take that matrix for each bone, multiply it by the inverse of the local bind pose matrix for that bone (to effectively just leave the base rotation) and then multiply it by the local bind pose matrix of my new skeleton.
It doesn’t quite work as planned for my idle animation. my character isn’t mangled and he is animated, just not much. He’s still in the T pose, kind of just slowly wobbling.
Has anyone done this before? Have I got the right idea? His arms should be by his side, but by removing the inverse of the Mixamo skeleton local bind pose (which I guess is just effectively ‘up’), the rotation left over is barely any rotation at all.