Saturday, April 11, 2009

Rigs

I've been spending a lot of time at work lately massaging our rigs. For years, I've been looking for a way to deal with knee popping when using IK limbs and a few days ago I came across a very old forum post about how to set up 'soft IK' in 3DS Max using the Expose Transform helper, Lookat and Limit controllers, and some parameter wiring. After a few hours I had a working prototype and set about applying it to our rig.

Things worked beautifully, so I went ahead and added them our arms as well. I also wired the parameters that control the limit controller into the custom attribute modifier of our IK control objects.

I've also been working on a solution for having the neck bone share it's orientation between the chest and head bone (which doesn't inherit rotation). This is a bit tricky because everything's in a heiarchal chain, so there's a lot of dead-ends that lead to dependency loops. Ultimately the solution was to add a new control object for the hips, so that the chest and neck bone could be orientation constrained to it and then it's rotation controllers are wired to the head bone's rotation controllers with an 0.5 multiplier. This new controller also gives me the ability to rotate the entire upper body at once. Previously, the neck and upper arms don't inherit rotation from their parent, which means we can rotate the chest without affecting these limbs. It makes for a more natural workflow in most cases, until we try to fully rotate the character in place. Then these bones tend to flip around when they reach the limit of their quaternions.

I also wired a spline controller to our clavicles. These things have always been a pain in the ass to select to animate, as they're buried inside of both the skin geometry (so they can't be seen) and the chest bone (so they can't be selected).

And finally, I wired the screen manipulators that control our FK/IK blending for the arms and legs into the custom attribute modifier of the IK control objects themselves. The manipulators are in their own layer and a bit of a pain to work with, as you have to turn the 'manipulate' button on to change their values as well as hiding/unhiding the layer. It's amazing how 2 or 3 extra steps can really bog down your workflow.

Now my new goal is to figure out how to get some scripted tools working with our rigs.
  • IK/FK pose snap - For quicker switching between the FK/IK limbs during an animation. Right now we have to manually align each bone when we switch between the two.
  • Pose bank load/save - We've been using Anipose for finger poses, but I'd really like to build a pose bank for our whole character (both FK bones and IK controllers) to cover the basic stances we frequent chain into/out of.
  • Pose copy/pasting with mirroring
All of these things are pretty straightforward (there are a number of scripts that already do them), but I want to get them working from within a custom attribute modifier panel rather than out of seperate script windows. Then we'd have a very solid character rig.

No comments:

Post a Comment