0 votes
asked in General Help by Rookie (150 points)

I'm having an issue with the result of my exports with UMotion. The animation is mostly good except for the fingers which are in the wrong rotation. I read every related thread here, asked some people but the issue is still here.
I'm using Unity 2018.2.4f1 with Umotion 1.17p02.
I tried to update the T-Pose of the avatar in Unity and then re export but no matter how I fix it the result is always the same.
I tried export to .fbx but that didn't solve the problem either.
The 2 "solutions" I found so far are :
Editing the animation after export (which take some time on longer animations)
Export using one avatar then duplicate the avatar and fix the rotations offset on it. But the result isn't convincing.

I don't have much knowledge about rigs, T-pose, etc. So I may be missing something simple. I have just ran out of ideas to fix the issue.


1 Answer

0 votes
answered by Expert (148k points)
selected by
Best answer

Hi KeZzaX,
thank you very much for your support request.

Yes, the problem is coming from the avatar and how it is setup. Here is a quote from this Mecanim Humanoid Blog Post:

The T-Stance

tstance_pngThe T-Stance is the most important step of Humanoid Rig creation since muscles setup is based on it. The T-Stance pose was chosen as reference pose since it is easy conceptualize and that there is not that much room for interpretation of what it should be:

– Standing straight facing z axis

– Head and eyes facing z axis

– Feet on the ground parallel to z axis

– Arms open parallel to the ground along x axis

– Hands flat, palm down parallel to the ground along x axis

– Fingers straight parallel to the ground along x axis

-Thumbs straight parallel to the ground half way (45 degrees) between x and z axis

When saying “straight”, it does not mean bones necessarily need to be perfectly aligned. It depends on how skin attaches to skeleton. Some rig may have the skin that looks straight, but underneath skeleton is not.

Whenever you have something not rotated correctly in humanoid animations (no matter if you are working with UMotion or with other humanoid animations), you need to make sure that the Avatar T-Pose is setup like in the article above. Clicking the "Enforce T-Pose" button often isn't enough (especially for the fingers). You might have to use the rotation tool and manually adjust the fingers. After you finished the adjustment, re-export the *.anim clip from UMotion. You might have to go back a few times and adjust the finger poses again (in the avatar), then export again to get perfect results.

Please note though, that it's in the nature of the humanoid animation system that there will always be at least a little bit of a difference in how the animation looks (please refer to the blog post to understand what humanoid does under the hood). The fingers for example have less degrees of freedom than in real life. The only way to really overcome this is to switch to generic/legacy. That being said, when the avatar is setup correctly the precision humanoid delivers is OK in 99% of all cases. For some really detailed finger movement, where the camera is very close to the hand for example, generic might offer significant better results.

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

Best regards,

commented by Rookie (150 points)
Thanks for your answer

I saw that generic will be better but the problem is as I'm not anywhere close to an animator (I'm just a programmer doing stuff on his free time) I use humanoid animations for anything related to moving (Walk, Run etc) so I can't switch to generic.
But since I'm working on a FPS and I wanted custom reload animation that I made myself and as you were saying precision with fingers like pressing a button etc is harder in humanoid.
I will try the best I can to fix the avatar T-stance but I think in the end I will need to "cheat" the animations and not use fingers.
commented by Expert (148k points)
You can convert the humanoid animations you need for walking etc. to generic using UMotion Pro. Just import the humanoid animations into your humanoid UMotion project, then export them to *.FBX. Configure the exported *.FBX to generic and use that animations on a generic version of your character. You can also export your reload animation to *.FBX and use it as generic. This also gives some performance gains (as humanoid requires more CPU performance due to the animation re-targeting).

On the other hand I think for a FPS reload animation you should get good enough finger precision with humanoid if the avatar is setup correctly. Most of the time the fingers are covered by the magazine or the gun anyway.

Best regards,
commented by Rookie (150 points)
I will take a look to try what you said about converting to generic.
But yes most of the time we can't see the problem but like in since the avatar isn't configured properly fingers can clip through the weapon which doesn't look good :)
commented by Rookie (150 points)
edited by

Ok I think convert everything in generic might work but now there is a problem that was fixed by using humanoid is that when I set the FK/IK blend to 1 the shoulder rotation is wrong

I may also forget to say that I'm using FinalIK but with a custom order of execution very specific for the hand placement and the blending between IK driven and Animation driven

Just found the error in the configuration panel my bad

commented by Rookie (150 points)
Converting everything in generic solve the issue but I have some issue when converting animations that uses root motion. Even if I disable Apply Root Motion on the animator component it still want to do it then teleport back to where it should be.
I don't want the animations to play root motion. Is there a way to convert them to In place instead of Root motion ?
commented by Expert (148k points)

root motion only means that the movement (of the bone defined as root bone) will accumulate every time the animation loops. So when you disable root motion, it won't continue the movement where it stopped but instead teleport back (like you've experienced it). So this behavior is expected (this unity video tutorial demonstrates this in a nice way).

If you want to get rid of this movement completely (and turn your animation into an "in-place" animation), make sure that there is no movement in your animation (--> delete the key frames in the animation that cause the character to move).

Best regards,

Soxware Support

Here you get official product support by the developer and the community for all Soxware Products for Unity®.

Post as guest, login via Facebook or create an account.

Ask questions, report bugs or provide feedback. Please use the correct category and always post in english.

For private email support, please use the Support Form to create a support ticket.

Copyright © 2017 Soxware Interactive | All Rights Reserved | Impressum