Monday 12 December 2011

Much Needed Update

I've been really busy in the past few weeks with dissertation work and other projects, hence, the blogging has taken a back seat of late. Anyhow, things have come a long way. I've nearly done all the working parts of the rig (skeleton, skin weighting, muscles, etc.) and I'll soon be moving on to constraining control curves to everything and finishing it off. After that it's the home straight with just some animation cycles to do to demonstrate that the rig works properly and that, most importantly, I'll be able to animate with it when it comes to making the film next year.

The initial skin weighting was (as always) soul-crushingly tedious and a massive pain in the ass but I managed to get the best movement I could before converting the skin cluster to a muscle system. Here's the rig at the stage after weight painting was finished:
Notice in the video that the basic skin cluster system has some deformation problems around the legs. This is something that can't really be fixed using normal skin weights since adding influence to make the leg fuller when stretched forward would cause it to cave in more when stretched backwards, and vice versa.

At the stage when the skin cluster was weighted as well as possible I then moved on the muscle system. I only really needed to do muscles for the legs mainly since that's where most of the remaining deformation problems were. I put some in the neck too to keep it from collapsing when it was bent to the side.

Here's a demo of it with the muscle system:
The muscle system ironed out some of the problems with the deformations fairly well, but the iconic scapular movement of the tiger still isn't there. What I had planned to do here was to model a scapular bone from polygons, convert it to a muscle object and then paint sliding weights as well as some sticky weights and have it move under the skin.

This did work, but for some reason it gave the rig unworkable slow-down even if I turned the sliding weight evaluation off in the cmusclesystem1 node. The way I eventually got round this was by using normal capsule bones instead which are faster to solve than polygon shapes.

I then went about creating and IK/FK switch system. I originally wasn't going to include this, but I decided to do it in the end since I don't know exactly what sort of movement I might want to animate for the film next year. I did this the traditional way, duplicating the joints I wanted included in the IK/FK system then orient contraining the original joints both to the new IK chain and FK chain. I then created a curve control which was parented to the foot to be used as the switch. On this control I added the 'IKFKSwitch' attribute with limits of 0 to 10.

The control's new attribute was to blend between the IK chain's constraint and the FK chain's constraint as the value was changed between 0 and 10. The way I got that working was to set the IK/FK control as the driver and the IK and FK constraints as the driven with the 'set driven key' tool, so the IK chain has full influence over the original chain at 0 and the FK chain has full influence at 10.

After that was the long, tedious process of creating control curves and constraints for everything else. For the FK areas I used the 'null group method'. This involves creating the curve and making it a child of a null group, orient constraining the curve to the joint you want rotational control over and then parent constraining the null group to the joint above in the heirarchy. The reason the curve is made a child of a null group is the if it was parent constrained directly to the joint above, it wouldn't allow animation to be added since any movement of the joints above would cause it to snap back its origin.

Other constraint types used a similar process as the FK controls but with different constraints. Many of the facial controls are curves with the relevant joints constrained to them using aim constraints or driven keys.

For the tail I used IK spline handles with control curves having influence over groups of spline curve clusters. The tongue, for example, uses spline clusters point-constrained to curve controls while the tail uses spline clusters orient-constrained to control curves which give control similar to FK, but slightly smoother.

The rig is near-enough finished now, so here's a video showing it in use:

There are still a couple of glitches to iron out, and I'll be working on those next.