0 votes
asked in General Help by

Hey,

I don't know if I'm missing a checkmark or something but when I export my animation (humanoid character), the root transforms such as rotation and position are not the same as in UMotion. There was another thread about a similar case but here I already had "Based Upon Start" as original. I'll provide with screenshots to have a better look at my issue.

This shows it in UMotion
and this shows it in unity standard editor

those are the animation settings

1 Answer

0 votes
answered by Expert (164k points)
selected by
 
Best answer
Hi Yanick,
thank you very much for your support request.

"Root Transform Position (XZ)" is set to "Center of Mass". Try set it to "Original". Furthermore check if in the avatar configuration of your character (shown when clicking on "Configure..." in the "Rig" tab of your *.FBX file's Inspector) is in a perfectly symmetrical T-Pose. If that pose is not symmetrical, it will offset the root of the character. If you change something on the avatar settings, always re-export the animation from UMotion.

Generally speaking, "humanoid" comes with the benefit of being able to share animations on different characters. If you only need to use your animation on one character, you should consider switching to generic. Generic is the most direct way of playing an animation. "Humanoid" adds additional complexity due to the animation re-targeting happening in the background (thus adding side-effects like the one you currently noticed). Humanoid also adds additional CPU performance overhead.

Please let me know in case you have any further questions.

Best regards,
Peter
commented by
Hey Peter,

Thank you very much for your reply! The rig is completely symmetrical and after I changed the center of mass to original, the problem was still there, so I ended up changing the rig to generic and tweak the IK in the UMotion editor and export it again, however, the root position offset is still existing.

Best regards,

Yannick
commented by Expert (164k points)
May I ask you to send me a small Unity project that contains just everything I need (nothing more) to reproduce your situation? Please also attach a short explanation how I can reproduce the behavior with this project. You can send that project via the email support form (or if it's too big you can request a link to my Dropbox also by contacting me via email).

This would make it much easier for me to provide you further help. Thanks.

Best regards,
Peter
commented by
I sent you a small project with the essential assets in it, please let me know if you need any further details on the problem if for some reason it won't work.

EDIT: I forgot to include this in the README, but since it will be handled as a generic and not humanoid anymore, the position of the model is determined by the Root position (which was the only option as a humanoid rig; in generic, you can choose between the character position itself, the armature or the Root position)

EDIT2: After a couple hours with trial and error, I managed to fix the problem. In retrospect it was quite easy and obvious in fact but thank you very much for your time and help, changing to generic was the key after all. All I did was setting the model to global 0 (0/0/0) outside of UMotion and from there I set the position of the model - not the root bone - to the designated spot where I want it to be inside the editor of UMotion and copied the global position over to the exported anim in unity's standard editor and that worked perfectly.

Best regards,

Yannick
commented by Expert (164k points)
edited by

Hi Yannick,
glad to here that you've been able to fix the issue yourself.

Here some further information that might be helpful in regards to your situation (all this information is related to generic animation clips):

  1. If you create keys for the character's top-most animated property, you can set a world space position for your character from within UMotion. When you play the animation from your game, it will also set the character at that world-space position.
  2. If you want your character to be at a specific place just for animating in UMotion, you can move the whole character while it is not assigned to UMotion. As soon as you assign the character to UMotion, it will keep the current position (assuming that you have not animated the top-most animated property as that would of course set it to the world-space position defined in the animation).
  3. If you don't animate the character's top-most animated property (it must not have any key frames) you can change the character's world space position via script. If you have animated the character's top-most property, the Animator will overwrite any changes to the position of your character that you apply via script. This is because the Animator is executed after the scripts Update() method (but before LateUpdate()).

Let me know if you have any follow-up questions.

EDIT: I've took a quick look at your Unity package and sent you a Unity package back that demonstrates you how things work.

Best regards,
Peter

commented by
I'll have a look at the sent project as well as keeping your advices in mind for next time, but again, thank you for your help!

Best regards,

Yannick

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

...