The Train Wheel Rig – An alternative method for and elbow / knee joints
Updated 11/15/12 with missing model file
I came up with something that I though I’d share with the rest to you. The problem I wanted to solve was that the methods for rigging a joint like an elbow that I’ve tried (Fan Bones, CP weighting) all result in a collapsing geometry at the site of the joint. Then I'd have go back and repair the geometry with oodles of smart skin especially when I have a char with thick / muscular joints that have CPs far from the bicep / wrist bones to begin with. So here’s what I came up with:
The Elbow / Knee Type Rig:
Using an elbow as an example, I have created two pairs of bones that govern the movement of the geometry at the joint. One set for the top and another for the bottom. Each pair is made up of a bone that orients like the wrist bone as it bends at the elbow. I call this bone “Wrist Skin Top / Bottom.” This bone is attached to a bone that traverses parallel to the “Bicep” bone which I call “Bicep Skin Top / Bottom.”
The secret sauce is in the hidden bones that govern / constrain the “Bicep Skin Top / Bottom” bones. I call these bones “Riders” because they take a ride with the wrist bone as it moves. One Rider bone creates the lateral movement for the “Bicep Skin Top” bone and the other for the “Bicep Skin Bottom” bone. This is accomplished with a “Translate To” constraint to the Wrist Bone. When you observe these bones in motion as you move the wrist, it kinda looks like old Choo-Choo train wheel, hence the discriptive, if unimaginative name for the rig.
I place one more constraint on the “Bicep Skin Top / Bottom” bones so that they don’t inherit the perpendicular movement of the “Rider” bones and I get exactly what I was looking for. Now all I have to do is share the CPs weights between the 6 bones (Bicep, Wrist, Bicep Skin Top / Bottom, Wrist Skin Top / Bottom) and I have an elbow join that can move through its entire range of motion without the geometry collapsing and absolutely no smart skin work repairs, Yeah!
Here's the project and Model files:
Some important factoids:
The positioning of the Rider bones is the key the whole rig. You’ll want to place them so that one is directly on top of the “Bicep” bone and the other the “Wrist” bone. Their roots are placed at the edge of an imaginary circle drawn around the center of the joint whose diameter is equal to the thickness of the geometry. (This assumes that the joint has been placed at the center of the geometry).
Since the “Rider” bones derive their translational movement from a circle, they create a natural ease in / ease out for the “Bicep Skin Top / Bottom” bones.
The rig will work for bending the wrist well past the 90 Deg point, but completely breakdown if you bend it the other direction. i.e. hyperextend the elbow.
Well that’s spiffy you say, but it won’t help me with a Wrist / Hand Joint. True, not in its current form, but if we spit the motion into 2 halves, one for each direction and constrain the skin bones to both accordingly, we can make it work. But first may suggest an adult beverage, it gets a bit boney ahead
The Wrist / Hand Type of Rig:
In short we need to double up the rig to create two separate lateral movements for our “Wrist Skin” bones. First thing we do here is to create two bones that sit directly on top of our hand bone with the same root location. They are then constrained to “Orient Like” the “Hand” bone but limited to half their range of motion. One will only mimic the hand movement upwards and the other only downwards.
Now we create two sets of “Rider” bones, one for each direction of the hand (up / down). These are placed on top of our “Wrist” and “Hand” bones respectively, but this time at twice the radius of our imaginary circle that touches the limits of our geometry. Ok, take another drink - This is because we will be using the sum of only half their movement to govern the “Skin” bones. The Riders are then given their “Translate To” constraints to the hand.
Lastly, we constraint the “Wrist Top / Bottom Skin” bones to the two corresponding Riders so as well as eliminate their perpendicular movement. Add the “Orient Like” constraint to the “Hand Skin Top / Bottom” bones and we’re done.
And the model file:
Some important factoids about this rig:
It only works for the range of motion of the “Hand” bone from 89.99 Deg through -90 Deg. I’m assuming that this is software limitation, i.e. up to but not including kind of thing.
Once again the circular motion provides us with a natural ease in ease out in both directions.
I did need a bit of smart skin in the end, but I only needed to apply it at the two extremes and only a small amount to make it look natural. I tried to fix this by playing with the enforcement channel of the “Translate To” constraint of the “Wrist Skin Top / Bottom” bones, but couldn’t get it to work. I wanted to try to slow the movement a bit as it neared the extremes. I’m not well skilled with channel editing. No change I made seemed to have an impact. Maybe it was the fact that is was an on/off type pose?
Try it out and tell me what you think. Please feel free to poke holes in it or suggest changes. Thanks in advance for any wisdom you can provide and happy animating
(Link to Matt's 1MB video)