0 votes
asked in General Help by Expert (580 points)

I have an (otherwise perfect) walk animation, in fact made by an animator (and I've imported it to UMotion)

So it has root motion which I fixed in UMotion (amazing!); that's in the "z" direction of course, and that works perfectly.

In unity I have the motion with "no exit time" so you can tap "walk" for just a second and the char will move only a short distance, half a step, if you tap walk for many seconds it will move many meters (obviously cycling the animation)

All works perfectly thanks to UMotion!

PROBLEM

Bizarrely, each time I run the animation during play, the character "moves up" a small amount (5cm), and now adopts that new height.  So, if you tapped the "walk" button dozens of times, character would be up in the air!

(Note it makes no difference if I turn off "no exit time", ie always a complete animation cycle, problem still happens)

in the example image I just hit "walk" three times for a second each.

Note: the scene has ONLY a perfectly flat surface and the character never has to go up or down or on steps; there is no foot IK at all.

COULD THIS BE THE PROBLEM:

IN the animation, which is beautiful, the animators have the Z root value jiggle up and down, which is great.

BUT ... shouldn't this start and end at zero ??

Is it just a mistake on the animators' side?  I could indeed fix this by moving that curve "down" do it starts and ends at zero?

Notice it starts and ends at .059

(In Unity's import, for "root transform position Y" I have in fact tried all three; original / com / feet.  It seems to make no difference.)

What have I done wrong in UMotion and/or how to fix in UMotion?

Thanks as always for the incredible UMotion service!

1 Answer

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

Hi,
thanks for your support request.

The problem is, that the Animator applies Root Motion on the character's Y axis. Root motion means nothing more than when the animation loops, it will use it's last position as starting pose, rather than resetting the position to it's original starting position.

It is not necessary that your character's root motion curve starts on zero. Make sure that the first and last frame in your Y curve has exactly the same value. Then when you export your animation clip, select "Bake Into Pose" under the "Root Transform Position Y" section in the inspector of your exported *.anim clip. This will ensure that root motion is not applied on the Y axis.

More information about root motion:
https://docs.unity3d.com/Manual/RootMotion.html
UMotion Official Tutorials - (7) Root Motion

Best regards,
Peter

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

...