<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%> MAXTD - MAX, TD, Character Rigging
 

NEW CHARACTER TOOLS IN R4

Hi everyone. It's been a long time since my last update to the site. I've had a lot of work lately, and with r4's release, I've been very busy working with it. This little overview sheet is designed to let you know of the new tools (and some old ones too) that r4 has for character animators. So, let's get to it.

BONE OBJECTS

R4 has a new bone object design. Basically, what this means is that bones in r4 are standard geometric primitives. The bone object ias a parametric object with automatic hierarchical assignement implemented. It means that when you create several bone objects, they are already linked and ready for FK manipulation. This design also allows you to use ANY geometric object as a bone object. This means that you can use a linked character's limbs as bones and apply IK solvers directly to them (no more auto-boning or linkig geometry to bones!). Also, bone objects now have squash and stretch, and scaling built into them. If you need a cartooney character to stretch its arms, you can do it just by assigning a sqush property to the affected bones. I'll work into some tutorials to explain this more clearly as my schedule permits.

IK SOLVERS

These are new 'controllers' that allow you to use IK in your bones (I'll referr to any bone object/hierarchy as 'bones' from now on). With R4 we have three IK solvers:

HISTORY DEPENDANT IK SOLVER: This is the solver used in previous versions of max. What it does is calculate limb rotations through the solver's history. This means each time you animate the IK end effector, it looks back into previous keyframes and calculates the limbs rotations based on that. This causes that the futher you go in time, the longer the solver takes to get an IK solution. Therefore, animating becomes a slower process over time.

HISTORY INDEPENDENT IK SOLVER: This is a new solver included in R4. This solver doesn't depend on history, it solves rotations as it goes over time. Animating remains a very fast task. This is the best solver to use when animating characters. It also has a rotate plane helper, which helps us define the orientation of the plane used to place the bones when solving IK. More on this later.

LIMB SOLVER: This solver is primarly geared towards game development. It can only be used on two-bone chains. I haven't really used it, so I can't really comment on it.

WEIGHTED CONSTRAINTS

Constraints are very powerful tools to establish certain relationships between objects. They allow animators to easily animate objects based on other objects transformations. max4 includes the following constarints (from the help file):

Attachment constraint attaches an object's position to a face on another object.

Surface constraint restricts an objects position along the surface of another object.

Path constraint restricts an objects movement along a path.

Position constraint causes the constrained object to follow the position of another object

Link constraint links the constrained object from one object to another

Look-At constraint constrains an object's orientation so that it's always looking at another object

Orientation constraint causes the rotation of the constrained object to follow the rotation of another object

Most of these constraints were available in previous versions as controllers. The main difference (and a huge one, for that matter), is that constraints are weighted. That is, they allow more than one object to influence the constrained object, and each 'controlling' object has a certain weight (the amount of influence it has) that influences the constrained object. Therefore, any object can react to the influence of several objects.

WIRING

Wiring is a very user-friendly to a kinda expression-wizard interface. However, it goes beyond expressions. How? First, wiring controllers support bi-directional control, as opposed to expression controllers's uni-directional control. Also, they fully support the whole expression syntax, functions and operators, so they allow complex operations to be set. The workflow is pretty easy to set up. Just select one of the objects, bring up the wiring parameters dialogue (or the wire parameters command, either in the animation menu or your quad menu), select the controller to wire "from", select the second object, select the controller to wire "to", select a wiring direction ("to" and "from" becom relative), and hit the "connect" button. There you are. You can alter the expression in the expression window, and hit "update" when you're done. We'll be using a lot of wiring throughout this tutorial.

REACTOR CONTROLLERS

Reactor controllers have been available since R3, but I decided to include them here because we'll also be using them a lot. Basically, a reactor controller is a controller that will generate certain pre-set motion when something else happens in the scene.

ADD CUSTOM ATTRIBUTES

This is one of the features I've enjoyed the most with R4's arrival. The ability to add any kind of attribute to an object. This, combined with wiring, provides a combo of unlimited power (ok,ok. To much Locomotion last week...). We'll add lotsa custom attributes to our characters to be able to control them more efficiently.

SKINNING

Skin has been enhanced a lot in R4. Envelopes provide better initial deformation, shaded views display bone fallofs, and we have new deformers. There are three types of deformers. Joint angle deformers (for areas such as elbows, hips and shoulders), bulge angle deformers (for areas like biceps), and morph angle deformers (a new in-skin morphing system).


STARTING THE PROJECT

Allright. Let's start this new series of character rigging tutorials. Again, and in the name of simplicity, we'll be using my ol' trusty bipedal character, Astro. He gladly voluntaired for re-boning, skinning and IK setup (I must mention I also re-modeled his torso, arms and legs. He's now a patch guy). A task that wasn't easy on itself, but very enlighting (in terms of r4's new character features). This experience was made less painful thanks to the invaluable help of some people.

CREDIT WHERE CREDIT IS DUE

A couple of people who contribuited to this IK setup with invaluable information are Paul Neale and Michael B. Comet. Both contribuited with a lot of ideas and designs regarding character setup. I'll continue to mention them as it becomes necessary.

WORDS OF CAUTION:

1. One thing. I'll be constantly mentioning I align certain objects to other objects. Usually, when I do this, I align both the position AND the orientation. This is extremely important, due to the way rotations work. Refer to the pictures if in doubt.

2. Also, as a suggestion, as I'm working I constantly set locks on my objects. For example, in my rotator objects, I always turn on the move and scale locks in all axes. This is to prevent doing unwanted transformations on my objects (rotators are supposed to only rotate). This is a good working habit, and although I don't mention my lock setting throughout the tutorial, you should to easily inferr which locks to turn on per object.

3. One more thing you should remember THROUGHOUT the whole tutorial... ALL of the IK solvers used in this tutorial have their parent space set to Start Joint. This prevents gimble locking on the chain. REMEMBER to set this one for each solver created UNLESS NOTED OTHERWISE.

4. I use sometimes local euler controllers. These are helpful under certain situations. To determine when you need them, perform the following test. Grab the object you'll rotate. Animate the rotation. Playback. If you notice the object wobbles instead of rotating on the axis its supposed to, you'll be better off using local eulers. Local eulers are no longer supported as part of the UI, but they can be assigned via maxscript. Just copy the following text onto the listener, select it, and drag it onto a toolbar...

local objetos = selection as array

for i = 1 to objetos.count do

(

select objetos[i]

objetos[i].rotation.controller = Local_Euler_XYZ()

)

To use it, just select the object(s) you'll be assigning local euler controllers, and hit the button. It'll instantly assign local euler controllers to those objects. Swami also wrote a similar script and posted it in the forum, so you might want to check it out. A WARNING HERE! Local euler controllers behave strangely a lot of times. Some of the things you'll notice are gimble locking and reverse-rotations. These, however, can be easily taken care of, and the benefits justify them. There is also another script at scriptspot that changes the axis order for euler controllers. That'd give you a local euler behavior, without the drawbacks. I haven't tried that, but you might want to.

OK. So, let's get started.

THE SKELETON

For Astro's skeleton, I decided to use R4's new bone objects. If you're importing a character made in previous versions of the software (as I did), first delete all skin modifiers before deleting the old bones. I won't go into much detail about the skeleton design, since it's pretty straightforward. In general, create your bones and joints as close as possible to the real thing. If you're building a human skeleton, look into anatomy charts to see where bones lie and how they should be connected. The same for animals, etc. Let's take a look at Astro's skeleton...

SPINE AND NECK: As you can see, the spine was created using a bottom-up approach. That means I started with the joint at the waist, and proceeded towards the neck. You can create the neck and 'head bone' as part of the same chain. The spine will be animated using FK, with some custom controls to aid in the process. Draw the spine in any viewport. Then, turn on the bone's fins to see which way they're facing, and rotate them if necessary (the 'front' fins should be pointing towards the chest, and the 'back' fins towards the back). You may want to use snaps to ensure the spine is really straight. It doesn't matter, since we'll be using FK to animate it. You can delete the small bone created at the tip of it (you won't be using IK with it, so it's not necessary). Remember, always use a clear naming convention here. It's very important to keep cleanliness in your projects, or you'll be VERY sorry later when we start setting up controls for the character. I named my bones like this (from top to bottom): Bone_Spine01 - Bone_Spine02 - ..... - Bone_Spine06. To create the neck, just continue upwards creating two more bones. Mines are A_Bone_neck and A_Bone_head (The A_ prefix I should continue to use refers to this character in particular. This is to avoid confusion when merging more characters onto the scene). The fins you see coming out from the back of the character are used for visual refernce of the character's actual volume (he's got a backpack).


FIG 1

ARMS: The arms are pretty straightforward. Just Draw them from the shoulder to the wrist. It's best to do it in the top viewport.


FIG 2

Then, add a small bone that goes from the middle-top of the chest to the shoulder. This will be the 'clavicle' bone. Draw it somewhere away from the other bones, so that it doesn't become auto-linked to the other chains, and move it to its proper position. I named these bones like this: Bone_clavicleRT - Bone_armRT - Bone_forearmRT. (RT stands for right side. I name the left side bones in the same way but with a LT suffix).


FIG 3

LEGS: Another simple setup. It uses three (ok, four) bones. The ususal three for the leg (thigh, calf, and the small 'tip' bone we need for the IK solver to work), and a bone that goes on top of the chain. This bone will not move, and is only there for skinnig purposes, so link the thigh bone to it. I named them A_Bone_skinleg, A_Bone_thigh and A_Bone_calf.


FIG 4

FEET: The feet have a very straight-forward bone setup. Just create one bone from the ankle to the ball of the foot, another from the ball to the toes, and leave the small tip bone there. Just make sure NOT to auto-link the first bone to the leg's calf bone or the IKterminator bone. They're named A_Bone_foot, A_Bone_toes, and A_Bone_IKterminator_foot.


FIG 5

HANDS: I used several bone chains here, one for each finger. The chains are born at the wrist, and go all the way up to the fingertips, going through each knuckle (I mean to create a new bone there). The fingers will also be animated with FK, with some automated, pre-made poses. Check the picture to see the complete names for this bones.


FIG 6

That covers pretty much the bone setup. Now, we'll get into the ugly stuff... IK.

Helper Objects

smucino@maxtd.com