Answered

How to make an animation where one person grabs and moves the shoulder of another?

Anonymous 5 years ago updated by Peter - Soxware Developer 5 years ago 1

Hello, I have a question.

How to make an animation where one person grabs and move the shoulder of another.

I have synced two characters, but I can’t assign a parent to the IK hand, because the second character is outside the parent object.

Do I need to do any intermediate objects inside the first character?

Thanks.

UMotion Version:
Unity Version:

Answer

Answer
Answered

Hi,

thank you very much for your support request.

The main issue here is that one animator component (and thus the animations that are assigned to it) can only reference its child transforms.

Here are some ideas that might fit depending on what your goals are:

  1. You can sync UMotion with Timeline or Unity's Animation Window to play the animation of the second character while editing the other one. You could manually sync the IK target by going through the whole animation frame by frame.
  2. Sync with Timeline/Animation Window as in (1) but use a custom script to sync the IK target: Create a transform that is used as IK target outside of UMotion. Add a custom script to it that drives the position/rotation of that IK target based on the other characters shoulder bone. In UMotion, use the callback mechanism (see "Pose Editor/Options" --> "Extending UMotion" in the manual) to let UMotion execute your script. Setup the IK constraint to use your previously created transform as IK target (see IK video tutorial).
  3. Configure both characters as generic. Create a new empty transform as parent of both and assign an animator component to it. Create a new generic UMotion project an drag the parent transform into the Pose Editor. Now you can animate both with a single animation clip. If you are doing a cut-scene or a movie, this is probably the preferred method.

If you have any follow-up questions, please let me know.

Best regards,

Peter

Answer
Answered

Hi,

thank you very much for your support request.

The main issue here is that one animator component (and thus the animations that are assigned to it) can only reference its child transforms.

Here are some ideas that might fit depending on what your goals are:

  1. You can sync UMotion with Timeline or Unity's Animation Window to play the animation of the second character while editing the other one. You could manually sync the IK target by going through the whole animation frame by frame.
  2. Sync with Timeline/Animation Window as in (1) but use a custom script to sync the IK target: Create a transform that is used as IK target outside of UMotion. Add a custom script to it that drives the position/rotation of that IK target based on the other characters shoulder bone. In UMotion, use the callback mechanism (see "Pose Editor/Options" --> "Extending UMotion" in the manual) to let UMotion execute your script. Setup the IK constraint to use your previously created transform as IK target (see IK video tutorial).
  3. Configure both characters as generic. Create a new empty transform as parent of both and assign an animator component to it. Create a new generic UMotion project an drag the parent transform into the Pose Editor. Now you can animate both with a single animation clip. If you are doing a cut-scene or a movie, this is probably the preferred method.

If you have any follow-up questions, please let me know.

Best regards,

Peter