Under review

animator transition bug?

shuhsasha 6 months ago updated 5 months ago 7

I have three animations created in UMotion. Get weapon, Idle weapon and Walk weapon. Also i have other animations but for now it doesnt metter. Bug apears in transitions. For example between these animations. Idle and Walk in blend tree. On screen you can see where transition is, and how looklike person before transition. Then, in transition, hands (IK standart UMotion setup) rotating around to same rotation. (in next screens) They just make 360 rotation for no clear reason for me.

UMotion Version:
1.22p03
Unity Version:
2019.4.16f1

I even completele copied end state in get animaiton to start state idle animation, and it still rotating hands

Under review

Hi,
thank you very much for your support request.

Please first verify that your animations play correctly when played alone (you can do this by selecting the *.anim file in Unity's project window and then play it in the preview window of the inspector). Does this work?

If that works, your problem is completely independent of UMotion (a *.anim file created with UMotion is not different to a *.anim file imported via an *.fbx from any other 3D modeling application; UMotion does not execute any code or something at runtime). That would mean that the issue is solely related to how the animator controller is setup (which narrows down the causes).

Btw. your UMotion version is already a bit dated. You might want to consider updating to the latest version (includes lots of QOL improvements and bug fixes).

Best regards,
Peter

yes, alone it works fine, problem only in transition, seems like with quaternions, like if in Get hands have 0 rotation and in Idle 360, and it trying to smooth values or something. I using same animator settings for all my animators with Get -> Idle&Walk(Blend Tree) setups, and bug present only in one setup. Total i have around 30. Im pretty sure it goes in UMotion but i cantuderstand where. Im using child constrains to hands in Idle and Walk animations, and dont use it in Get. I thought it was a problem, but when i changed child of to default none value and keyied all properties, it still buged. Also onteresting thing that at another transition, rotate present only in left hand. I just updated to last version and bug still present. I dont know why its happening for now.

I dont really know what happening, but its umotion bug. I "fixed" it in next way. I copied left and right ik hands pos\rot from 0 frame idle to last frame get animation and removed 0 frame from get animation (also for left and right ik hands). So i got a no motion animation, and there is no bug in transition.I will try to upload clips for you to watch what happening.

There is a package with animations in animator controller. You can check all transitions to see where is the bug. Also i made a 2 tests with get animation. *_test, i removed 0 frame as i described before, no bug. *_test2" i added a 0 frame pos for left ik hand, and bug apears, BUT, it goes only for left hand, for right hand all goes nice. In default get animation, both hands rotating. And even more, in *_test3, i rotate left ik hand more to the left and up, and bug goes again for both hands. There are two packages, with character\animations and umotion project. I removed all unused gameobjects from character prefab, but i think umotion project will run good after clean up.

Character.unitypackage
UMotionProject.unitypackage

Thanks for sending me the files, I was able to take a closer look at it. I see that the transition isn't working as expected, but looking at the animation files generated by UMotion they look correct.


Here are a few things you can try:

  • If you aren't sharing your resulting animations between different characters, use "generic" instead of humanoid. It is very likely that the additional 360° spin is somehow introduced by the humanoid part involved in the transition. Generic is faster (on the CPU) and plays the animation directly without any quality loss (humanoid animations are less accurate/introduce small errors due to the animation re-targeting).
    You can easily switch to generic by changing your character's FBX configuration to generic. Then create a new UMotion project of type "generic" and import the previous (humanoid) UMotion project with all it's animation clips. Re-export your animations and now everything is setup for "generic".
  • If you can't switch to "generic" because you want to re-use the same animations on various other humanoid characters, then try to export your animation to FBX. In the export settings, set file format to "FBX binary", then select "Write Mode" to "Update Existing File" and for the "Destination File" select the *.FBX file of your character. Export all animations and use the animations that are now inside the FBX of your character instead of the old anim files. Unity's FBX importer is now creating the humanoid animations (instead of the Unity editor API used when export directly to *.anim). This sometimes helps with humanoid related issues. Unfortunately I wasn't able to try this myself as the character's source FBX file wasn't included in the packages.

Please let me know if that helps.

Best regards,
Peter

There is Character.fbx file in unity package should be. Dowloads/apocalypse/models

I solved this problem by finding arms poses when they not spin around in transition. I had to change my animation for it, but its working without different export. I send packaged to you to reproduse and find where is the problem. I think i will fix problem like that, changing animation a little bit. Thanks for help. Let me know if you need something else to reproduce this issue if you need to.