Answered

Questions regarding humanoid root motion

Anonymous 4 years ago updated by Peter - Soxware Developer 4 years ago 3

Hey, so I'm trying to edit some existing asset store animations (particularly kubold mocap animation), but I'm having issues with the root motion rig.

The skeleton for this animation includes a parent 'root' that driven the root motion position and rotation.

The problem is that when using a humanoid umotion project, the root gets dropped and the hips become used as root, this produces subtle but important differences in the position and rotation of the character. The only solution I've found is to use a generic umotion project, export it as a packaged fbx, then reimport it as humanoid in the unity import settings (this maintains the root object, and is a close enough duplicate).

Is there a better solution than this? Is there a way to keep that root transform even in human project rig?

Also, I am having some issues with IK. Working with overriding foot position in mocap animation, I used IK to pin the foot position, deleted various keyframes from the foot etc. In the umotion animation timeline, the feet are perfectly stable, but in export - the foot position shifts, sometimes greatly.

I need to use mecanim ik to ensure foot stability, but this is undesirable. Are there issues where umotion preview should not match the result (noticeably different)? If so, do you have any pointers for achieving exact results (these changes were made in umotion generic project, exported to fbx, reimported as humanoid).

UMotion Version:
Unity Version:

Answer

Answer
Answered

Hi,
thank you very much for your support request.

Only humanoid bones (starting with the hips) can be animated when your project is of type humanoid. Never the less, the imported animation should look exactly like the original animation. In case the exported clip shows some differences, there is a new experimental feature that allows UMotion to generate the root motion curves on it's own (by default, Unity generates the root motion curves which seems to be buggy). Take a look at the root motion related settings in the clip settings (click on the gear icon and open the Clip tab).

The unstable foot is a result of Unity's humanoid animation re-targeting system. Mecanim IK is designed as a solution for this. I recommend checking out Unity's blog post (that is covering this topic): https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/

If you want perfect quality (and you are using the animation only on one character), make sure to use generic instead (it's faster CPU wise and generates 1:1 results).


Are you exporting your *.FBX using "Write Mode" = "Update Existing File" to write your animation into the *.FBX of your character? That ensures that the same humanoid avatar as your character is used for re-targeting your animation thus usually results in better quality.

Please let me know in case you have any follow-up questions.

Best regards,
Peter

Answer
Answered

Hi,
thank you very much for your support request.

Only humanoid bones (starting with the hips) can be animated when your project is of type humanoid. Never the less, the imported animation should look exactly like the original animation. In case the exported clip shows some differences, there is a new experimental feature that allows UMotion to generate the root motion curves on it's own (by default, Unity generates the root motion curves which seems to be buggy). Take a look at the root motion related settings in the clip settings (click on the gear icon and open the Clip tab).

The unstable foot is a result of Unity's humanoid animation re-targeting system. Mecanim IK is designed as a solution for this. I recommend checking out Unity's blog post (that is covering this topic): https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/

If you want perfect quality (and you are using the animation only on one character), make sure to use generic instead (it's faster CPU wise and generates 1:1 results).


Are you exporting your *.FBX using "Write Mode" = "Update Existing File" to write your animation into the *.FBX of your character? That ensures that the same humanoid avatar as your character is used for re-targeting your animation thus usually results in better quality.

Please let me know in case you have any follow-up questions.

Best regards,
Peter

Peter,

The problem I'm having is that the output animation does not match preview. This is regardless of humanoid rig.

Here are the position pins.

And here is the resulting animation:

This has nothing to do with the rig, these are foot keyframes being baked into the output that do not match preview.

I'm not sure how to proceed.

Hi,

have you tried enabling the "IK" button in Unity's preview window? The foot sliding shown in your GIF can be an animation re-targeting side effect and Mecanim's Humanoid "IK" is the feature designed to compensate that (see https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/ at "IK Solver" headline).

If you still get a little bit of foot sliding open the UMotion Clip Settings and let UMotion generate the root motion curves (instead of letting Unity generate them). In some cases Unity fails to generate a stable root motion curve. This feature is only available for exporting to *.anim.

If you are using your animation only for one character (and thus don't need the animation re-targeting that "humanoid" provides), I recommend exporting your animation to *.FBX and use it as "generic" on a "generic" version of your character. "Generic" reduces the CPU overhead and improves playback quality as the animation is played 1:1 on your character without involving any re-targeting steps (there is no foot sliding or other artifacts on "generic" characters).

Please let me know in case you have any follow-up questions.

Best regards,
Peter