Yeah, Sanby! Sketch! Or have you given up for now?
Looks like Buzz Lightyear of Borg is taking a big nap. I've been focusing on learning new 3d tricks. First there was hooter simulation, then cloth simulation, then simple parameter wiring, and finally forearm problem.
With all of this new stuff that I've been learning, I've already started a new character. However, you folks won't get to meet her until she is finished.
Rather than get deep into everything, I want to talk about the wrist/forearm problem. This was mentioned way back when I was doing Pui Pui and I never really got around to explaining - mostly due to lack of solution. Well, I sat down this morning and came up with the solution.
The wrist has two primary motions:
1. Rolling it around. This happens when you rotate the hand around 2 different axis. Can be any two axis. For me, this has been local y and local z. It's like drawing a circle in the air with your index finger by only moving your wrist.
2. Twist. This is rotation around the other axis. For me, this has been local x. In the arm, this is what you get when the radius goes around the ulna - you know, those two bones in your forearm. Basically going between palm up and palm down.
Now, you can rig to accommodate one type of motion - either one. However, when you try to do the other motion, things go wrong.
Let's say you want to accommodate twist motion. Fine. So you adjust the enevelope in the hand to taper down the forearm. When you twist the hand, the verts along the forearm twist less and less until you get to the elbow.
All goes fine and dandy until you try to roll the wrist. Why? Because the envelope coming from the hand and up the forearm will swing out. Very not pretty.
The fix is to break the forearm into several bones and have each one rotate less as the hand twists. This means that there has to be a seperate controller for the twist in the hand and forearm. I mean, you don't want to be able to twist the hand independently from the forearm, right? Right. This also means you have to get a little tricky with hierarchies and use expressions grabbed from the controller to control rotation around only one axis.
Blah!
Okay, so there is a dummy forearm bone running from the elbow to the wrist. The broken forearm bones are laid right on top of it. They are linked to it with the exception of rotating along the local x. A controller is added at the wrist and the hand is connected to the controller. The controller is connected to the dummy forearm. Since I don't want the hand to rotate local x on it's own, I locked it down.
Double blah!
So, if I want to twist the hand and forearm bones, I have to rotate the big yellow circle. If I want to roll the hand around the wrist, I have to do that on the hand itself. Two different motions covered with two different systems.
Then it's a matter of controlling and constraining the forearm bones to the local x of the wrist twister controller. The forearm.bone.rotation.x gets wired to the controller.rotation.x and an expression is used:
wrist1 * .66
wrist2 * .33
Oh, man.
I might not be showing off a model in progress or anything, but I am showing off.