1
\$\begingroup\$

I am using finalIk to rig my avatar in my project. Looks okay. I also have a few animations downloaded from mixamo that I am using with it. However, there is a particular animation (clapping) that when used on my avatar, the two hands do not meet with each other. for some avatars, the hands go into each other, the clapping are not proper like it is shown in mixamo.

Edit: I have noticed that I can solve this with the Character Arm-Space variable (see attached image) in mixamo's animation options. How can I control this variable at run time.

enter image description here

\$\endgroup\$
2
  • \$\begingroup\$ AFAIK the values of those sliders get baked into the animation when exporting it from Mixamo, so you can't control them at runtime. \$\endgroup\$
    – Philipp
    Jul 7, 2023 at 15:11
  • \$\begingroup\$ Yes, I fixed it. \$\endgroup\$ Jul 7, 2023 at 15:53

1 Answer 1

1
\$\begingroup\$

Problems like that are pretty common when trying to retarget animations from one character to another. The reason why it occurs is probably that the positions and lengths of the arm bones of your character don't exactly match those of the character the animation was designed for. So when the same bone rotations are applied, the hand-bone ends up in a slightly different position.

One possible solution can be to use inverse cinematics. When you set the IK position for both hands to the same position, then you can "glue" the hands to a specific point in 3d space.

Now if you enable IK permanently, then the hands will of course not clap but stick together. That's probably not what you want in this case. You only want them to meet during a certain point of the clapping animation. This can be achieved by also animating their IK weights. So you can only give the hands an IK weight when close to the contact phase of the clapping animation, and let the animation control the hands during the rest of the animation.

\$\endgroup\$
4
  • \$\begingroup\$ I am actually animating their IK weights, that's why the hands clap. When we download an animation from mixamo and set the Animation Type to Humanoid in unity, there is an avatar object that comes with this animation. So, instead of using the default avatar object that comes with my fbx avatar in the Animator Component when performing this clap, I am using the avatar object that comes with the clap animation. This works for me. However, I had to increase the Character Arm-space a bit before downloading the animation \$\endgroup\$ Jul 7, 2023 at 16:04
  • \$\begingroup\$ @Craving_gold So you do use the Unity IK system and the hands still don't end up where you set their IK positions using Animator.SetIKPosition? Do you have "IK pass" enabled in the animation layer? Is it the lowest layer or is there another that might change the rotations further after IK were applied? Note that I am talking about IK in the Unity animation system, not any IK you used in a 3d animation program to create the animation in the first place. \$\endgroup\$
    – Philipp
    Jul 8, 2023 at 8:59
  • 1
    \$\begingroup\$ Regarding the avatars: An avatar is kind of a dictionary of which bones do what. So when you import the animation from Mixamo, you would use the Mixamo avatar on that fbx file, but when you import your own model, you would import it with your own avatar. This allows you to retarget the animation from the Mixamo fbx to your own model. \$\endgroup\$
    – Philipp
    Jul 8, 2023 at 9:02
  • \$\begingroup\$ yes you are right. I got the correct clapping (the hands are closed) when I used the mixamo avatar. However, I didn't get the correct body posture. the shoulders pulls down a bit and the neck a bit high. I am using an avatar mask for the clapping layer and only the chest and two hands are enabled. I have also tried including the neck and excluding the chest in this avatar mask. Didn't get the right posture. And yes, I have tried disabling and enabling the "IK Pass" in the animation layer. Same. It's like a solution causing another problem \$\endgroup\$ Jul 10, 2023 at 6:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .