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?
Chris: Ah cool! I didn’t realize that. It works very well! If you needed to select very complex geometry or wanted to paint selection, I suppose you could create a script that would store your vertex selections, one object at a time, and then re-select them when you are ready to copy the weights. Thanks for the tip Ehsan!
Matt Murray: Sweet! Thanks for the tip :D
Ehsan HM: Hi, Thanks for sharing dude. To copy weights locally on complex geometry, you could use the same technique but you should select the vertices of the destination geo. Selecting is a bit tricky though but you can select both geometries first and isolate them. select you proxy geo then hide it’s display layer and shift select vertices of the destination geo. You might find an easier solution but this is what I came with so far and it works. :) Cheers.
Chris: Another useful application: You can’t (as far as I can tell) paint weights or smooth skin weights on a lattice. But you can definitely copy weights from geometry to a lattice!
like: Hi there! I could have sworn I’ve been to this site before but after looking at some of the articles I realized it’s new to me. Nonetheless, I’m definitely delighted I came across it and I’ll be book-marking it and checking back often!
Armin Halac: Hi Chris, very useful technique. Just saved me a ton of work on skinning an elephants ear. Cheers!