Hey guys,
I'm currently working on a character project and as part of the outcome of the project I wanted to have motion capture from
Mixamo applied.
My first method was to build a rig of my own in my character, very standard bones etc. Then bring in the motion capture rig, set up HumanIK's for them both and make my rig follow the mo-cap rig. If you know this process you're probably laughing at me. It didn't work.
My second attempt I brought in the mo-cap rig, duplicated it and stripped the duplicate of any animation data and history, then re-positioned it in my character. I figured this would give better results but actually the were worse, with loads of random rotations being applied to my model.
How can I do this with very few issues? Fundamentally my character is a standard T-pose character, while the mo-cap is in A-pose. How much of an issue will this be? (Seems to be...) My character is also bigger than the mo-cap skeleton, but I've seen this not being a problem in Maya's official videos.
Also how should I do this in future if I have really messed this up? Basically I want to be able to build my characters while knowing that in the end I can apply some basic motion capture animations to them through re-targeting to bring them to life.
Thanks,
- Ricky
Replies
The T-Pose is imporant for retargeting, and whatever the joint rotations and bindpose are, it requires pose your character into a T-Pose, when you create a HIK character (characterizing).
The joint rotations are all the same, although when I duplicated the skeleton from the mo-cap data and put that in my character to be sure, that was when I actually got a load of rotational issues for some reason.
Using humanIk is pretty much straight forward.
The first thing to know is that humanIK is designed to work with T-pose skeletons.
So, grab your mocap data and put in a Tpose. How? Easy!
First, select your Root joint of the mocap. Then, select the entire bone hierarchy (you can do it by simple selecting you root joint and running this command "select -hi" ).
Then, with all that selected go to the channelBox, select Rotate X,Y and Z and zero the channels (put 0 in X,y and Z).
Done! you mocap data is now T posed!Now... you need to store this pose in order to define the skeleton with the humanIK.
So, select a frame after you animation, lets say -1, and key frame all those bones is that position.
Now you just need to do the same with your custom RIG, and then use the mocap data as source to the retargeting system.
let me know if you got it all!
However when telling my character rig to follow the mo-cap data rig, this happened:
The animation data seems like it is working correctly apart from this huge issue that I just cannot get to work.
Notes:
- - - - -
I followed GlowingPotato's instructions and managed to get the mo-cap data into T-pose, keyframed on frame -1 as suggested.
I then duplicated this skeleton in T-pose, deleted out my old skeleton again and used this duplicate with no animation in my own character. I had to stretch parts of the rig using only move (no rotating) to fit my character.
Then use the retargeting tool.
And be sure that all your custom controls are parented correctly so it will follow the rig.
It seems to just randomly horribly rotate the pelvis and neck when the joints on both rigs are in the same orientation to begin with.
Also another thing I've noticed that is wrong but might correct itself when I figure out what is happening here is the wrists are rotating on the animation when the elbows should be rotating for some reason. On both the HumanIKs they are set up as they should be though.
I then duplicated the skeleton, which keeps no animation data from it when doing so. I did not scale or translate any of the duplicate skeleton just in-case for the time being.
I set up the Human IK for both skeletons, with 'Character1' being the mi-cap, and 'Character2' being my duplication. No problems or warning when building the skeletons in HumanIK.
I then simply told Character2 to follow Character1 as a source. They are both in the same world space, directly ontop of eachother, although I've seen this not to be necessary before.
Issue still remains. I've told all major joints to show their local rotation axis to be sure they are all right and the same, which they appear to be.
This is both skeletons ontop of eachother with all the same joints showing local rotation axis:
This is them after being told to follow the motion capture data:
Probably won't help but try grouping each skeleton and put the group as a reference in the humanIk skeleton definition.
Could you upload this specific scene so i can help investigate the issue ?
Above is a link to the file I'm having an issue with, thanks for this! Let me know how it goes.
Looks like your target skeleton is a duplicated skeleton from your source skeleton, and the issue is with it. Somehow the Hik detect that the hip joint is rotated and mess with everything. But there is a way to fix it. I'll look at it again today
Looking forward to your reply, and thanks again for this!
How do I change limb length on my motion capture rig and make sure it always stays that new length throughout the animation? Is this even possible?
It would be cleaner to move the limbs into the new length. Even if translations are keyed, the animation should be static on mocap skeletons, so you can delete the keys, and modify the translations. With properly oriented joints, which have an axis pointed to the child joint, you only need to modify this axis.