All of the tutorials I’ve come across for weight painting have been for bones that don’t match the rigs created by mgear, which have more bones to allow for squash and stretch (at least that’s what I’ve been told) and so far weight painting has been a nightmare. Is there any tutorials people can recommend, or any tips specific to mgear rigs for weight painting?
(Edited: Another issue is that many joints, especially at the knee and elbow, ‘overlap’ and I’m not sure what joint to weight the mesh to.)
Often starting painting weights in Maya is a burden because lots of persons forget the fact that there is an important order logic into painting weights inside Maya. Here are some tips for you.
Start by bidding your mesh to only 1 single joint
First start painting extremities (yes extremities!). By extremities I mean, hands, foot, head. The main reason for this is to avoid at some point having to unlock more than 2 influences when painting, which brings me to next point
You should always have only 2 unlocked joints in your list.
If you follow this you might get by but not everyone agrees on this. Now the number of joints do not matter, whether you are painting mGear rigs or other rigs but keep in mind that overlapping joints need to be labled correctly otherwise Mirroring or Copying weights wont work because Maya can’t predict into which joint he needs to transfer the weighting.
I’ll try to do a small video later today where I explain this better and explain why starting with body extremities is so important.
Now people will tell you to use ngskinTools and you should if you are not confortable with the points above.
Yes, here he is: That person who says you should get yourself used to NGSkinTools. When using native Maya painting instead of NGSkinTools, try to get yerself accustomed to painting in ‘post’-mode, instead of ‘interactive’. This prevents unwanted weights being constantly pushed around through the skin when you are assuming you are painting them away
I work more or less like Jerome says: always unlocking only 2 joints at a time, or more when I am in advanced stages of skin painting; also, I use ‘interactive’. Going from bigger volumes to smaller details is a good way to break down skin deformations.
I tried to use ngSkinTools but I guess I’m too used to paint weights in vanilla Maya…
Here are a few other tips to add to what the others shared:
Never turn on “Maintain Max Influences”. If you let Maya do this for you, you’ll end up with swiss cheese for weights. Because Maya will take from your smallest weights, which often means your smoothest, most delicate areas will get destroyed. (Or else you must tediously manage locked weights.)
Even if you are rigging for games and you do need to limit your number of influences, you should manage it yourself as much as you can. (ngSkinTools has a better non-destructive way of limiting max influences. It’s safer to use, and easier to keep your body areas in separate layers.)
In the skinning settings, set Weight Distribution to Neighbors. Do not use Distance. Neighbors is a new algorithm since Maya 2016 or so, which prevents explosions of random weights all over the place. Many years ago, that was a common problem when using the subtract brush. So “Neighbors” makes it safer to subtract or smooth weights.
I’ll just add one more vote for ngSkinTools. It gives you skinning super powers!
Here is a screenshot of my bind settings. The important ones to note are:
Use “Selected Joints”, not “Hierarchy”, or it will select joints you don’t want.
“Weight Distribution” to Neighbors
Don’t remove unwanted joints, or it might remove tip joints from your influence list.
Maintain Max Influences OFF, like I mentioned. Always always off! Maya cannot handle this job for you.
That’s good to know! Thanks! I have started limiting my weights because working for Unity and I saw some weird weights here and there, and had to do clean up manually. Yamahigashi’s script was really useful to detect the vertices that were giving me problems: https://gist.github.com/yamahigashi/635f16a5948ec0389139
I tried running that script and it gives me iteration errors. It checks ALL skinClusters, so it fails if it finds any skinned nurbs surfaces, for example.
I’ll share the one I heavily modified based on a script from Tyler Thornock. It only checks the meshes you have selected, so it won’t inadvertently check rigging components you don’t need to prune.
The other trick mine does, is that it does an extremely tiny prune when you run it. I noticed a weird bug(?) where you could paint a vertex all the weight to 0.0000 and it would still show up in the influences. A very tiny prune eliminates this, without modifying the weights in any noticeable way.
(Mine uses the OpenMaya API, but yours runs quite a bit faster on many meshes. I’ll have to see if I can speed that up using just the skinPercent() command instead!)