Tutorials

Using Proxy Geometry For Better Skinning Results

by Chris on February 10, 2012

Here is a simple skinning trick I like to use, which comes in handy for a lot of different rigging situations.

In the images below, I was rigging a wolf’s tongue with spline IK that needed to be very flexible. (If you count, you’ll notice that there are 12 controllers. 4 main controllers and 8 extra offset controllers to bend and twist the tongue into a variety of shapes.) The skinning was proving to be tedious, because the geometry kept collapsing and self-colliding. So here is what I did:

The Scenario: You have some tongue geometry (or other semi-flat geometry) which needs to be very flexible but the rig has a lot of bones and painting accurate weights is tedious and error-prone!

Look at that unsightly and embarrassing interpenetration!

Solution: Use a poly plane or other simplified geometry as a proxy. Fit it inside the geometry, and skin that instead. When you are done painting, use Copy Skin Weights to copy the weights from the proxy geometry to the full geometry.

The settings I use for Copy Skin Weights are:
Surface Association: Closest point on surface
Influence Association 1: Closest Joint
Influence Association 2: Closest Bone
Influence Association 3: Name (This 3rd entry is usually optional and makes no difference. When copying from the same geometry, like a body to a body, use “One to One” instead.)
Normalize: Not checked

Using a proxy object to skin the 3D geometry

The final result is fast and flexible

This makes it very easy for both sides of the tongue to have the same weighting, without tedious painting, which means it will twist and bend a lot further without self-colliding. When your geometry has a lot of folds and wrinkles it is also a lot easier to get your brush along the flat, uniform geometry of a plane. This technique also works in any 3D package which supports copying weights from one object to another. In XSI you can do the exact same thing using GATOR.

I have also used this technique to copy weights from a stretched sphere to weight complex hair geometry. You could also use it to copy weights from low-res geometry to high-res geometry. You will likely have to do a bit of cleaning up afterwards, but it could be a good way to get 90% of your weight painting done very quickly.

When you are done, you can simply delete the geometry, or tuck it away in a hidden group for later editing.

My next goal with this is to figure out a way to copy weights locally on complex geometry. For example, if the tongue is attached to the body, how would you grab just the tongue weights?