1
$\begingroup$

I'm trying to create mocap animations for my characters in Unity. I currently use character models and animations downloaded from mixamo.com. I've just created some mocap animations with Brekel pro body v2, and I have imported the bvh file into Blender along with one of my models that were imported as a collada. I am trying to assign the bvh animation action to the mixamo armature. I've changed the names of each bone to match the names of the bvh armature, and the only difference is that the mixamo model has more bones than the bvh. It has a toe, eyes, head top, and extra spine bone where the bvh model does not have them, but everything else is the same.

When I assigned the bvh animation action to the mixamo armature, the animation plays but the rotations seem off and it doesn't look as good as when I play the action on the bvh armature. I've tried changing the type of rotation (ZXY Euler, XYZ Euler, etc.) but it hasn't helped. I'm trying to get the mixamo armature to make the same exact movements as the bvh armature.

Are those extra bones causing the issue? If so, is there a way to apply this animation to only the bones they share? I need to keep the current mixamo skeleton.

Thanks,

Clownthulhu

Edit:

Here are some added pictures of the problems I'm experiencing.

The first image shows the bvh armature on the left and the mixamo one that I need to keep the same on the right.

Both Armatures Showing Extra Spine Bone

This shows the mesh of the mixamo model in the middle of the animation as well as the bvh armature during the animation. It also points out the problems I'm seeing and looking to correct.

Comparing differences between mesh and armature

$\endgroup$
3
  • $\begingroup$ As far as I know, you just have to set keyframes and whenever you change any part of the armature, just select all the bones and set a keyframe to 'whole character'. If i'm right it should now work as a normal set of keyframes and not anything special for armatures or something... $\endgroup$
    – Hendriks3D
    Jan 3, 2017 at 21:23
  • $\begingroup$ How would I go about setting keyframes? I know that I can click the "insert keyframe" button and have it set to whole body, but I currently have no animation on my mixamo model. The animation is on my imported bvh armature. I clicked on my mixamo armature and went to the action editor and selected the bvh action. Now there are a ton of keyframes already there, but when I play the animation it doesn't move quite right on the mixamo model. I just tried inserting a whole body keyframe for each frame but it just made more keyframes and did the same messed up animation. $\endgroup$ Jan 3, 2017 at 21:40
  • $\begingroup$ Have a look into re-targeting deform armature to bvh armature with constraints. Mostly copy loc and copy rotation and track to, GLOBAL space to GLOBAL space. Once you have the retarget rig set up giving a reasonable result, you can bake the visual transforms as your new action on deform rig. $\endgroup$
    – batFINGER
    Aug 15, 2017 at 12:33

2 Answers 2

0
$\begingroup$

The toe bone shouldn't be a problem, but an extra spine bone might be, as it will have children that are animated by the armature. Because of this it is likely that the transferred animation may never look the same.

To fix this I'd suggest adding an extra control bone to the mixamo armature named after one of the bvh bones and constrain two of the spine bones (the dupilicate and another) to move based on its rotation. A picture of the two armatures would make this easier to explain.

You may want to check that the bone rolls on each bone in edit mode match between the two armatures.

$\endgroup$
3
  • $\begingroup$ I just edited my post to include images. I checked the bone rolls and they were different between the two armatures. I changed the mixamo bone rolls to be the same as the bvh, but that just made the rotation issues look worse (the model went into almost a T-pose and its legs crossed in an X). I then looked into trying to constrain two spine bones like you said, but Blender wont allow me to constrain to another bone, and it says I can only choose an object to constrain to. I also compared every bone each armature has in common and they all had the same rotation values throughout the animation. $\endgroup$ Jan 4, 2017 at 16:37
  • $\begingroup$ @Clownthulhu to constrain to a bone, first select the armature they belong to as the object, then it should let you select the bone. Looking at the two armatures a direct transfer might be hard to achieve. The second picture does suggest a mismatch in some combination of bone roll, bone orientation or rotation order. $\endgroup$
    – Sazerac
    Jan 5, 2017 at 0:29
  • $\begingroup$ Ahh okay, I didn't realize you pick the armature first and then the bone. I tried using constraints and it helped keep my armature in the same position as the bvh but the rotations were really off. When I tried to constrain rotation as well, it didn't come close to matching the rotation and still looked bad. I will try to play around with bone roll values some more and see if it helps. Thanks. $\endgroup$ Jan 5, 2017 at 14:03
0
$\begingroup$

So I've solved my problem in a way, but I'll leave it here in case anyone runs into a similar issue.

Instead of exporting from Pro-Body as a bvh, I exported as an fbx. Blender couldn't open the fbx, so I used Autodesk's FBX converter (http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=22694909) to convert that fbx to a collada file. From there I just imported that collada into blender and was able to apply the animation that came with it to my model and it was a very close fit to the original animation. I could make minor modifications from here in Blender and then export it to Unity as an fbx for use. I hope this helps if anyone comes across a similar issue.

However to answer my original question from the very beginning, you can apply an action to a model with more bones. Even that extra spine bone that had children didn't cause an issue as it just moved along with the other spine bones.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .