Hi. I’ve imported my character from Maya to Unity, as a .mb file. The file contains the character’s mesh, rigged, and all the character’s armour rigged to the same skeleton as well. All the animation works perfectly fine, but some of the character’s skin weights on it’s armour aren’t the same as when they are in Maya. Bellow are two images, one from Maya and the other from Unity.
As you can see, the shoulder armour in Unity is stretched. I’ve already deleted all non-deformer history in Maya, but the problem remains. If you know what I did wrong, please help. Thank you.
I’m not sure if I’m correct or not, but it seems that in Unity, the vertex will be bound to the joint with the highest skin weight value. Apparently Unity doesn’t allow vertex weights to be shared between different joints. I could be wrong though.
The default in Unity is 2 bones per vertex max… try increasing this to 4 in “Edit/Project Settings/Quality” by changing the Blend Weights to 4 in the Quality Settings Inspector.
4 bones per vertex is a lot. A lot of engines get away with only 2, a lot of great games were made with 1 (rigid). Out of curiosity, why would you need more than 4?
What would be nice to see in Unity is the ability drop/add bones and redistribute weights (by proper percentage) based on an LOD system – distance from camera, etc. Even with that, I see no reason to go above 4 bones per vertex.