Answered

Humanoid to generic rotates 180 degrees

Elsiehar 7 months ago updated by Peter - Soxware Developer 6 months ago 6

Hello Peter,

When I convert humanoid to generic animations by duplicating the character and importing into generic project, it works but the animation is rotated 180 degrees around the Y axis.  See video - Screen Recording 1 31 2022 at 12 24 42 PM.mp4.  Do you know what could be causing this?

Also, If I include the face morphs in the both generic and humanoid projects it comes up with the following error.  Is there a way to get the face morphs into the generic project and still import the humanoid animations?  I have tried importing the face morphs into the generic file and then importing the humanoid without the morph's but this doesn't work.  I don't have any facial animations as yet but would like to do them in the generic project once I sort everything out if possible.

UMotion Version:
1.28
Unity Version:
2020.3.25f1

Answer

Answer
Answered

Hi,
thank you very much for your support request.

When I convert humanoid to generic animations by duplicating the character and importing into generic project, it works but the animation is rotated 180 degrees around the Y axis. See video - Screen Recording 1 31 2022 at 12 24 42 PM.mp4. Do you know what could be causing this?

Please compare the two UMotion projects with a version of your character not being assigned to the Unity timeline. So that we know if this issue is related to Unity timeline or not.

Are you sure you haven't added a custom 180° rotation to any of the root/hips bones (e.g. on the humanoid character but not on the generic version of it)? Outside of UMotion using Unity's regular inspector window, please compare the rotation values of your generic and humanoid character by starting from the hips bone and then continuing upwards in the hierarchy for each parent bone until you reach the root transform. Are there any rotation differences?

Btw. you can workaround this issue by adding a 180° rotation offset as an additive animation layer in your generic project.

Also, If I include the face morphs in the both generic and humanoid projects it comes up with the following error.

Blend shapes are added to a UMotion project by using "Custom Property Constraints". They can be added to any bone/transform in the UMotion project. If you copy an animation from one UMotion project to the other, you need to ensure that the custom property constraints are setup exactly the same way.

I think the reason why the message prints two empty quotes ("The constraints of "" are ...") is because it's indicating that there is a difference on the root transform. Please check if that is the case by going into config mode and compare the constraints window of the root transform between both your UMotion projects.

Best regards,

Peter

Answer
Answered

Hi,
thank you very much for your support request.

When I convert humanoid to generic animations by duplicating the character and importing into generic project, it works but the animation is rotated 180 degrees around the Y axis. See video - Screen Recording 1 31 2022 at 12 24 42 PM.mp4. Do you know what could be causing this?

Please compare the two UMotion projects with a version of your character not being assigned to the Unity timeline. So that we know if this issue is related to Unity timeline or not.

Are you sure you haven't added a custom 180° rotation to any of the root/hips bones (e.g. on the humanoid character but not on the generic version of it)? Outside of UMotion using Unity's regular inspector window, please compare the rotation values of your generic and humanoid character by starting from the hips bone and then continuing upwards in the hierarchy for each parent bone until you reach the root transform. Are there any rotation differences?

Btw. you can workaround this issue by adding a 180° rotation offset as an additive animation layer in your generic project.

Also, If I include the face morphs in the both generic and humanoid projects it comes up with the following error.

Blend shapes are added to a UMotion project by using "Custom Property Constraints". They can be added to any bone/transform in the UMotion project. If you copy an animation from one UMotion project to the other, you need to ensure that the custom property constraints are setup exactly the same way.

I think the reason why the message prints two empty quotes ("The constraints of "" are ...") is because it's indicating that there is a difference on the root transform. Please check if that is the case by going into config mode and compare the constraints window of the root transform between both your UMotion projects.

Best regards,

Peter

Thank you for the fast response.  The character is the correct way around when not added to the timeline - see screenshot below.

Both the generic and humanoid characters have a rotation of 180 degrees set.  I think it is a bug with the timeline.  I have just created a new animation track and added both the generic character and the animation track and it seems to work - Thank you.  I previously just changed the character and the track in the original humanoid timeline.  

With regard to the import of humanoid to generic project they appear to be the same.  The attached file (Humanoid constraints -in case I am looking at the wrong thing) shows the Constraints for the humanoid character - the generic look the same.  I also all I did was duplicate the character and changed the duplicate to generic without changing anything else, so they should be the same?

Thanks

Great to hear that the timeline problem is fixed.

With regard to the import of humanoid to generic project they appear to be the same. The attached file (Humanoid constraints -in case I am looking at the wrong thing) shows the Constraints for the humanoid character - the generic look the same. I also all I did was duplicate the character and changed the duplicate to generic without changing anything else, so they should be the same?

Hmm... I would need to take a closer look to give you further advice. Could you send me the following as a *.unitypackage: Your humanoid version of your character, your generic version of your character, the humanoid UMotion project (*.asset) and the generic UMotion project (*.asset). You can send the *.unitypackage to me via the email support form (or request a link to my dropbox if filesize exceeds the limits).

Best regards,
Peter

Thank you very much for sending me the requested files and sorry for the late reply. I've been rather busy the last few days.

The face morphs of the humanoid character are assigned to the head joint, while the face morphs of the generic project are assigned to the root transform. Make sure that both UMotion projects have the custom property constraints of the face morphs assigned to the same joint/transform. Then the import should work.

Let me know in case you need any further assistance.

Best regards,
Peter

Thanks Peter,

I am not sure how that happened as all I did is create a duplicate and change it to Generic.  I will get the character developer to have a look at it.

Sorry for the misunderstanding. This has nothing to do with the 3D model of the character itself. It has something to do with UMotion.

When you assign a character that has face morphs to UMotion for the first time, UMotion asks you if it should add custom property constraints to the project to control the morphs. For a humanoid project, the dialog looks like this:


And for a generic it looks like this:

My guess is, you used "Add to Head" on the humanoid project and "Add to Root" on the generic project. Generic has no information about which bone is a "head" bone (as generic can really be anything) so thus this option is not available.

Here is a super unofficial thing you could try (but be aware that there might be edge cases where this doesn't work):

  1. Duplicate your humanoid project file.
  2. Open the duplicated file with a text editor.
  3. Change the highlighted value from 1 to 0:
  4. Save the file and open it with UMotion. Your project should now be generic.

----

The "correct" way would be to edit your generic UMotion project in config mode. Remove the custom property constraints from the root transform and re-create them on the head joint (same as in the humanoid project). Make sure to use exactly the same settings.

Unfortunately there is no way to copy & paste constraints so this is a bit tedious.


I hope that clears it up for you.

Best regards,
Peter