Wrong distal finger rotations on left hand

We’re having a weird issue where the distal finger bones’ rotations are off on the left hand, but not on the right hand.


This happens after we click Enforce T-Pose. If we click Reset, Unity complains that the character is not in T-Pose, but at least the finger positions are correct and not crooked:

If we enforce T-pose then manually place the fingers correctly, Unity will still complain that the character is not in T-pose. What’s odd, however, is that these “fixes” don’t get reflected in game – the fingers are still crooked. (Does Mecanim ignore / enforce every bone that’s not in T-pose in your avatar configuration?) (Edit: it seems that clicking “Update” in the avatar definitions that were copied does apply the fix)

We’ve checked our rig file in Maya but cannot find any difference between the left and right hand. Opening the FBX in a viewer doesn’t show crooked fingers. It really seems that Unity is forcing an incorrect bone rotation on us, and there seems to be no way to bypass it.

Is there any way to fix this?

Internally the avatar tool is using the bindpose from your file as the start T-pose and then we try to fix any bone that doesn’t fit the T-pose.
First thing I would do is look at your bind pose in Maya and check if you have any difference between the left and right hand

Interesting, what does it do in case there is no bind pose? Surely it has a fallback, because the rest of the skeleton is correct.

As you can see, this specific model is “split” into geometry parts and not skinned, a common trick for animators to properly visualize their rig without being distracted by the skinning.

For now, we got it fixed by manually repositioning the bones on the left hand and updating all animations that copied this avatar (I think I’ll log a feature request to have a prompt to update linked avatars after making changes, because this had us confused for a while as to why our change weren’t getting applied).

In this case the first frame of the animation is used.

Simply use the @ convention, the only drawback is that your avatar definition file must be in the same directory than your animation file

by example:

myavatar.fbx
myavatar@walk.fbx

everytime that you will change myavatar.fbx unity will detect such change and a button “Update reference clips” should appear, once you click on it all reference will get the new avatar definition and the unity will reimport all referenced file.