Friday, November 25, 2005

Catching up, Part 1

This is where I'm at now.

Rigging
I've created my "switching pivot" control. A problem I've always thought needed addressing was that when a character walks, the foot pivots on either the heel or the ball of the foot. Most setups default to rotating around the heel so when the foot makes contact with the to in the air, it's simple to just rotate it down flat. But you don't change direction that way for the most part. When we change direction, we usually lift our heel a little and pivot on the ball of the foot.

The solutions I've seen seem inadquate. On my last Maya character, which I called "Alex", I had what now seems like the standard "swivel ball of the foot" control. The problem was, that if the character turned 180 degrees, I had to resynchronize the foot control with the ball of the foot. It was even worse at 90 degrees. This character was running all over the room. The foot pivot problem was most annoying when the foot lifted up. Synchronizing it added keys where I didn't want them, and made refining the animation much more time consuming.

Another thing about the foot pivot problem, is that when our foot is up in the air, it rotates around the ankle. Having it rotate around the heel looks unnatural, and compensating for it is, once again, time consuming.

This is a repeating theme in my rigging choices. Compensating for rotational pivots in the wrong place for the animation at hand and compensating for rotational hierarchies which make the extremities swing in an undesired arc not only are time consuming, but they extend the already labor and artistic intensive tasks in refining the animation.

So I created a pivot switching feature for the foot. This has evolved some in the last two weeks. I started by writing an automated system which executed a MEL script that was run as a script job. You would pick icons which represented the heel, ball and ankle. That would automatically switch the pivots. After testing this out on the character, I found that this was unsuitable because you had too many controls too close together. My current version has a pull down menu in the channel box which allows you to choose the rotational preference. This is animatable. When the pivot is switched, I have iconic representation on the foot with objects that represent the heel, ball and ankle pivots which can be seen at a glance. The icons are non-selectable. At present, I haven't figured out a way to color them for highlighting at the same time they are a "reference" object. I also haven't figured out a way to make the system work without keying the rotate pivot and rotate translation pivot channels, and having them visible. On top of that, the expression only executes if I have an active connection specified in the visible channel box. Even if I can't solve those problems, it's not too big an inconvenience. Just means that adjusting keys during the animation involves moving a lot more channels for the feet. But it all works, and that's what's important right now.

The foot also has a hierarchy switching mode. At present, it switches between "World", where the body moves and the feet stay stationary until you move them, and a "Body" mode, where the foot moves with the main COG control. So if a character does a flip, an animator doesn't have to manually keyframe the arc, they just have to worry about the placement of the feet relative to the body. As would occur naturally.

Another thing that I've wanted to add for a long time is a switch for the hand space. I now have a pull down menu in the channel box with 7 IK hand modes. I also have a pull down menu on the clavicle which isolates the rotation of the shoulder from the rest of the body. The hands can each be selected to rotate with the body, remain attached to the world, translate with the body and clavicle without inheriting rotation, ignore the clavicle but still move with the body, and nearly every combination of all these. In addition, the hand can be used in a semi-FK fashion by rotating the clavicle control. The clavicle control has been modified as a target, rather than rotation control for the clavicle itself. Move it up, the clavicle rotates up. Move it forward, the clavicle rotates forward. This method allows the clavicle control to be used both for rotating the arm from the shoulder FK style, and rotating the clavicle simulataneously. The switches are animatable and easily accessed from the channel box. There are 14 possible combinations between the hand and clavicle controls, but I'd imagine an animator would stick to 2 or 3 depending on their preference.

Plans for further improvements:
Stretchy switch to turn off the stretchy IK
Spline IK for the ability to give the arm a more "rubber hose" kind of shape, with adjustable hardness on the elbow. As I currently envision it, this control will also allow for the appearance of "successive breaking of the joints" in IK mode.
I think the FR rig allows for stretchy fingers. But I plan on devising my own system.

I've also created a pull down control for the head, to isolate the head rotation from that of the body. This makes it a lot easier to achieve overlapping action in the head without counter-rotation. The default is FK, but the switch is simple and animatable.

I'm currently working on some sort of system for distorting the head. So far, I have found that using a wrap deformer has too many pathologies, the main one being that it is additive to the joints. The character has long ears in this case, and the wrap deformer has worked against every method I've come up with for discreet control of the ears. I've also had problems so far in deploying wire deformers. I plan to continue trying to find a viable solution to this today, experimenting with the many deformation tools available in Maya.

Last, I successfully came up with a way to control the eyes no matter how much they're distorted. The pupil stays the same size and shape regardless of what happens with the topology of the eyeballs themselves. This was more challenging than I thought, but the solution I chose is working perfectly. I also figured out a way to make the eyelids conform to the eyeball when they're opened and closed, regardless of changes in the eyeball's topology.

Plans for further improvements:
I'd like to add controls to adjust the shape of the eyelids, since this character doesn't have eyebrows, to accommodate emotional states.

0 Comments:

Post a Comment

<< Home