It’s been so long since I last touched the rigging features in Blender (the old 2.3x days) and I needed a crash course on what changes were made with the new 2.6x version.
Turns out there’s no such thing, but someone at the Blender IRC channel recommended me this set of video tutorials on rigging (its aimed for beginners so feel free to skip irrelevant parts).
What interested me is his rigging for elbow/knee direction. I used back then a Track To constraint which, as it turns out, caused various problems because of cyclic dependency. The way I set it up back then was messy. What’s so bad about that? It fucked up the animations when imported into the game engine. Even though the animations get baked when imported, its the baking process that has problems with cyclic dependency. Bones would move where I didn’t want them to.
Turns out since version 2.46, the IK constraint has a new property: Pole Target, which is meant exactly for elbows/knees.
Next problem, wrists. Wrist rotation had been problematic for me back then and I never found a good solution before.
So I looked at other people’s ideas. They all didn’t work for me, except this guy’s idea. It was just a simple Track To constraint, but made on an additional child bone that’s not part of the arm’s IK chain. It works surprisingly nice.
I remember one of my former employers remarked, most games he saw had characters whose arm meshes were made separate from the rest of the body, because shoulder joints were very hard to get right. This was during the time of the Playstation 1 era. Obviously, the industry’s moved on.
Not including me yet, unfortunately. Shoulder rotation was still something hard to rig in my experience.
Technically, shoulders are ball joints, which is why it’s hard to get them right.
So hitting up again the blenderartists.org forum, I’ve seen numerous people use what seems to be additional bones with a Stretch To constraint.
So I did make those, and it made sense. The additional bones help keep things in place. The problem is that bones in computer graphics are actually, just lines, with no volume. Obviously bones in the real world are not that. So to emulate real world muscles, those numerous additional bones are used to compensate this shortcoming.
The two green bones are the additional ones that I made. The one in blue outline is the clavicle.
The final trick that made everything better was to make sure the arm’s IK chain did not inherit rotation from the clavicle.
In the end, its still not as good as I wanted it to be. I believe my mesh’s topology isn’t so good so I may redo some parts there.