Answered

Exported animation doesn't play

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

Moderator: Moved from Unity forum (original post).

Hey! I wanted to ask for help. I am making a very simple animation for my penguin - in the uMotion editor everything works as expected:

Image 1084

However after exporting the anim and placing it in the animator, the animation just doesn't play at all:

Image 1085

The penguin is from the Unity Asset pack (https://assetstore.unity.com/packages/3d/characters/animals/low-poly-animated-animals-93089) and comes with some animations of his own, which works just fine. However those animations work, but the animation window is reporting the bones as missing:

Image 1081

Here is the import setting of the penguin in case it is important:

Image 1082

And lastly here is the bone structure as I see it in the hiearchy:

Image 1083

I know it is hard to help without much details and that there are a lots of things which may be wrong, but I am just completely lost.
I would HIGHLY appreciate even a suggestion about what to check / where to look / how to troublehshoot it in general .... I have no idea... I just need to be able to create some simple custom animations for the penguin and that is why I bought the uMotion Pro, which is otherwise great!

Thanks a lot for any advice

UMotion Version:
Unity Version:

Answer

Answer
Answered

Thanks for sending me the project.

The problem seems to be coming from the "RotationHelper" transform. This transform is not present in the penguins avatar definition (this is the file that provides the rig structure information to the Animator component). So the Animator expects all transform paths that are used to bind the animation curves to the actual bones/transforms to ignore the "RotationHelper" as well.

The original animations do ignore the "RotationHelper", but Unity's Animation window does not (that's why it displays all the bones as yellow, as their transform paths are not correct because they do not contain "RotationHelper"). But the preview in the Animation window works (which Animator is responsible for) as Animator ignores "RotationHelper".

There are 2 ways to deal with this:

  1. Use the original penguin FBX file (that does not have "RotationHelper") for creating your animations with UMotion (instead of the prefab that got the "RotationHelper" added).
    The resulting animations do not contain "RotationHelper" in their transform paths and are thus played correctly.
  2. Remove the "Avatar" from the Animator component's avatar field of the penguin prefab. Now the "RotationHelper" is not ignored anymore. The original animations that came with the penguin are now not compatible anymore (they are missing the "RotationHelper"). But the "Nod" animation you've created previously (that contains the "RotationHelper") would be played correctly.


As the animation you've created is rather simple, I would choose method 1 and would quickly re-do the "Nod" animation.

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

Best regards,
Peter

Under review

Hi,

thank you very much for your support request.

What's strange is that the animation that comes with the penguin package is displayed as "missing transforms" but plays correctly while the custom animation created with UMotion doesn't play correctly even though the transforms are not missing.

This makes me think that there might be two "Animator" components in your penguins hierarchy? In the hierarchy window, enter "t:Animator" (without the quotes) into the search bar to see all GameObjects that have an "Animator" component assigned. My guess is, that there is one animator that plays the (original) idle animation and another one at a different location in the hierarchy that tries to play the UMotion animation. The one that tries to play the UMotion animation can't do anything because the other animator component is overriding it's results.

If you're not able to solve this issue, may I ask you to send me an empty Unity project that includes just the files I need to reproduce this issue? That would make it much easier for me to diagnose. You can send the file to me via the email support form (or if file size is too big, you can upload it to a cloud storage or request a link to my dropbox in case you have none).


Best regards,
Peter

Hello Peter!

Thank you very much for your kind help! 

I double check the animator but there is just that one.

I recreated the bug in a new project, there is only 2 packages imported - uMotion Pro and the Penguin asset. In the Sample scene, there is that penguin with the animator and with the custom Nod animation, exported from uMotion. If you preview all the animations you will see that all work except the uMotion one. There is also an uMotion project, everything is just in the root folder. 

I will send the files via the email form.

Thank you again so much!

Answer
Answered

Thanks for sending me the project.

The problem seems to be coming from the "RotationHelper" transform. This transform is not present in the penguins avatar definition (this is the file that provides the rig structure information to the Animator component). So the Animator expects all transform paths that are used to bind the animation curves to the actual bones/transforms to ignore the "RotationHelper" as well.

The original animations do ignore the "RotationHelper", but Unity's Animation window does not (that's why it displays all the bones as yellow, as their transform paths are not correct because they do not contain "RotationHelper"). But the preview in the Animation window works (which Animator is responsible for) as Animator ignores "RotationHelper".

There are 2 ways to deal with this:

  1. Use the original penguin FBX file (that does not have "RotationHelper") for creating your animations with UMotion (instead of the prefab that got the "RotationHelper" added).
    The resulting animations do not contain "RotationHelper" in their transform paths and are thus played correctly.
  2. Remove the "Avatar" from the Animator component's avatar field of the penguin prefab. Now the "RotationHelper" is not ignored anymore. The original animations that came with the penguin are now not compatible anymore (they are missing the "RotationHelper"). But the "Nod" animation you've created previously (that contains the "RotationHelper") would be played correctly.


As the animation you've created is rather simple, I would choose method 1 and would quickly re-do the "Nod" animation.

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

Best regards,
Peter