Nuts&Bolts of Fitted Mesh
When we step into fitted mesh the situation gets a bit more complicated. Technically Fitted mesh is nothing special. It just makes use of a subset of the Skeleton, namely the set of Collision Volume Bones, where each Collision Volume Bone is clamped to a corresponding classic bone. Thus building tightly coupled Bone Pairs.
In the image aside you see for example the 3 bone pairs:
- R_HAND is clamped to mWristRight
- R_LOWER_ARM is clamped to mElbowRight
- R_UPPER_ARM is clamped to mShoulderRight
Due to the clamping the collision Volume always moves and rotates along with the bone to which it is clamped. With other words each bone pair [Collision Volume + Classic Bone] can be seen as one unbreakable unit. Lets name such a bone pair a FittingBone consisting of an mBone (a classical bone) and a cBone (a collision Volume.
When we look at classic Weighting then we only deal with the classic mBones. The cBones are completely ignored by the animation system and things are rather easy and well organized (left side of image).
For Fitted Mesh many users think they just need to replace the classic mBone weighting by the new cBone weighting, thus only use the cBones for fitted mesh. But this is not true. In general we have to deal with all cBones and all mBones at the same time when we make fitted mesh (right side of image)!
Animating Fitted mesh
Regarding the animation of your characters, it does not matter which bone of a FittingBone pair gets which weight:
- You could place all weight to the mBone
to get a pure classic weighting.
- or you could place all weight on the cBone
to get “Fully Fitted Mesh” weighting,
- or you can distribute the weight between
the 2 bones in any way you like.
In any case it is the weight sum within the FittingBone that affects the animation, nothing else!
The animation pitfall
Lets say your mesh is perfectly weighted to the classic bones. Now you want to convert this to fitted mesh. So you just add weight to the Collision Volume Bones and all is done…
But wait, when you add weight to a collision Volume, then the weight sum on your vertices raises above 1.0 (because you added weight) ops… Well, Blender is a bit clever here (and also a bit confusing for the user), it allows you to create weight sums > 1. But then it internally corrects the numbers by normalizing them before using them. Normalizing enforces that the weight sum is 1.0 again.
So what? All is well again, no?…
Well, you have added weight to the collision volume bone, right? But the weight sum must be kept at 1.
Hence this added weight must have been taken away from somewhere… So by adding weight to the cBone we reduce the weight on all other bones.
This is not an issue where you only have one single weight (the red zones in the images above). But wherever you already had 2 or more weights on classic bones, adding weight to a corresponding Collision volume most probably destroys your weights on the classic bones. And unfortunately this always happens near the joints.
Shaping Fitted Mesh
The Collision Volume Bones are used to add volume to your mesh. That is, the cBones provide a scale vector to make your mesh bigger or smaller depending on the amount of weight on the CollisionVolume Bone.
However you never “see” this vector anywhere. But you modify its value by using the Appearance Sliders. And as a result your mesh blows up or shrinks whenever a vertex is weighted to a collision volume bone AND the sliders are not in the neutral state.
Caveat: But all of this does not happen when your armature is in its default Shape (neutral shape) simply because there the scale vector is neutral.
When you want to do Fitted Mesh, then please select your Mesh, then step into the Avastar Skinning panel and ensure that your Mesh is set to ‘SL Appearance’
And then move the appearance sliders of interest out of the neutral setting. otherwise you can not see any change in your fitted mesh!
Weight Count for Fitted Mesh
We learned above that the FittingBones consist of bone pairs. So when we look at the joint of any 2 FittingBones we actually look at 4 bones (and not at 2 bones as in the classic weighting) Thus at the end you see that for Fitted mesh you typically need the double amount of weights on each vertex (weight the collision volumes for shaping, weight the classic bones for animating)
As a consequence a fitted mesh character does in general use 4 weights near the joints and 2 weights anywhere else.