Answered

Child of Constraint completely broken in game

Anonymous 6 months ago updated by Peter - Soxware Developer 6 months ago 2

What I have had animated with child of constraint gets completely broken in game

Youtube video
UMotion Version:
1.29
Unity Version:
2022.3.0

Answer

Answer
Answered

Hi,
thank you very much for your support request.

In order to find out what goes wrong, it's important that you understand how the child-of constraint works:

The child-of constraint does not really change the hierarchy of the affected object (that's not possible to be done via animations as the animation hierarchy is fixed). The child-of constraint just calculates what position/rotation the object would have, if it would be a child of a certain different object. The stored position/rotation values are still relative to the actual parents in it's hierarchy though. So if the actual parents are at a different position/rotation in-game then they are in the UMotion, this breaks the child-of constraint.


So to debug this, compare all position/rotation values of the bones/transforms that are parents to the bullet or flask. One parent is having a different position/rotation in UMotion than it has ingame. After you've found that bone/transform, you might find out that some script or maybe another animation (transition) is moving that parent bone/transform.


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


Best regards,
Peter

I fixed the jitters by increasing the framerate of the animation, however the positions of the flask and bullet are still wrong 

Answer
Answered

Hi,
thank you very much for your support request.

In order to find out what goes wrong, it's important that you understand how the child-of constraint works:

The child-of constraint does not really change the hierarchy of the affected object (that's not possible to be done via animations as the animation hierarchy is fixed). The child-of constraint just calculates what position/rotation the object would have, if it would be a child of a certain different object. The stored position/rotation values are still relative to the actual parents in it's hierarchy though. So if the actual parents are at a different position/rotation in-game then they are in the UMotion, this breaks the child-of constraint.


So to debug this, compare all position/rotation values of the bones/transforms that are parents to the bullet or flask. One parent is having a different position/rotation in UMotion than it has ingame. After you've found that bone/transform, you might find out that some script or maybe another animation (transition) is moving that parent bone/transform.


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


Best regards,
Peter