It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.

Search articles, jobs, buyers guide, and more.

By John Lally
Gamasutra
[Author's Bio]
February 11, 2003

Introduction

Dissecting the IK Setup Tool

Walks and the Walk Guide

End of Cycle

Printer Friendly Version
   

 


 


Latest Letters to the Editor:
Perpetual Layoffs by Alexander Brandon [09.21.2007]

Casual friendliness in MMO's by Colby Poulson [09.20.2007]

Scrum deals and 'What is Scrum?' by Tom Plunket [08.29.2007]


[Submit Letter]

[View All...]
  



Upcoming Events:
12th International Conference on Computer Games: AI, Animation, Mobile, Educational & Serious Games
Louisville, United States
07.30.08

GO3 Electronic & Entertainment Expo 2008
Perth, Australia
08.01.08

3rd ACM International Conference on Digital Interactive Media in Entertainment and Arts - DIMEA 2008
Athens, Greece
09.10.08

Women In Games Conference
Coventry, United Kingdom
09.10.08

GDC Austin
Austin, United States
09.15.08

[Submit Event]
[View All...]

 


[Enter Forums...]

Note: Discussion forums for Gamasutra are hosted by the IGDA, which is free to join.
 

 

 


Features

Giving Life to Ratchet & Clank:
Enabling Complex Character Animations by Streamlining Processes

Dissecting the IK Setup Tool

MEL is a quirky and often inconsistent language. A good portion of the time we spent developing our IK Setup Tool was used to track down the proper commands for the tasks we needed to execute. Still, we managed to uncover the MEL commands we needed to actuate the core tasks of each of our nine tool buttons.


Figure 5. The leg constraint hierachy viewed in the Hypergraph, showing connections between the IK handles, locator set, and NURBS constraint objects.

The first button's purpose was to place IK handles on a character's legs. It read the names of the bones from the top text fields by using the textFieldGrp command in its query (-q) mode. These string variables were then passed to the ikHandle command, which in turn created the IK handles.

The second button placed NURBS cones on a character's hip, ankle, and toe joints. These cones, created using MEL's cone command, were the primary constraint objects an animator would use to manipulate the legs. The xform command was used to query (-q) the positions of the leg bones and store them as variables. The move command then read these variables and moved the cones into place. Finally, MEL's pointConstraint locked the hip cones to the character's hips.

Pressing the third button called CreateLocator to place a pair of locators in the scene. Next, the group command grouped the locators to themselves. Then xform (-q) queried the positions of the character's knees, and move translated the two new parent objects to the knee joints and the locators to positions in front of the knees.

Button number four configured the cones, locators, IK handles, parent groups, and constraints into a standardized hierarchy via the parent command. Again, the new groups were translated into place using move. New constraint relationships were created between the knee locators and main leg IK handles, and the new constraint hierarchy and the skeleton. These were implemented using the poleVectorConstraint and scaleConstraint commands, respectively.


Figure 6. The IK Setup Tool streamlined repetitive, error-prone setup procedures and kept customization within the artists' hands.

Button five added several expressions to the scene, saving us data-entry drudgery. We added expression code for specifying both constraint and skeletal behavior using the expression command, allowing us to automate both the creation and the specifications of our setup expressions.

Number six altered the rotate order of the heel and toe NURBS cones from XYZ to YXZ using setAttr. We had previously determined that this rotate order produced the most reliable rotations in our quaint Z-up environment.

Buttons seven through nine performed some final housekeeping tasks. Button seven grouped custom rotation guides to a character's spine using the polyCube and parent commands. Button eight used setAttr to ensure Maya's segment scale compensate was switched off for all of a character's joints. Finally, button nine keyed a reference frame at -10 on the character's skeleton and constraint hierarchies using setKeyframe. Listing 1 shows some of the MEL procedures we found most useful.

Automating this process with MEL both saved us time and eliminated the steps most prone to human error. Furthermore, by enabling any artist, regardless of their setup experience, to fit a prototype and/or character with a functioning IK system quickly, we alleviated bottlenecks. This conservation of both time and human resources saved energy that could then be devoted to artwork.

Listing 1. Some helpful MEL procedures.


// A method for querying a bone's position in world space:

xform -query -worldSpace -translation my_joint_name;


// A method for querying the contents of a text field:

textFieldGrp -query -text my_text_field_name;


// A method for setting a keyframe at frame -10 on a hierarchy:

setKeyframe -time -10 -hierarchy below my_hierarchy_name;


// Basic transformation methods: translation, rotation, and scaling:


// Moves an object to (0,0,5):

move -absolute 0 0 5 my_object_name;

// Rotates an object by 90 degrees on Z,
// relative to its current Rotation:

rotate -relative 0 0 90 my_object_name;

// Scales an object to 3 times its current size:

scale -relative 3 3 3 my_object_name;


// (Note: All flags are listed in their long forms.)

Low-Tech Animation Solutions





Figure 7. Joint scaling and translation offered animators direct manipulation of poses and gave characters' moves extra verve for the modest cost of a low-tech solution.

The shortcuts and prototypes I've described so far shared a common purpose: to help us create better animation more efficiently. Both of these methods accomplished this by either by telegraphing problems or by saving time. Often, however, we would spurn a high-tech solution due to its specificity, inefficiency, and/or complexity. And still at other times, we embraced traditional CG taboos.

We consistently and repeatedly translated and scaled our characters' bones. True, most of us learned on our grandmothers' knees never to do that to a CG character. "Use your constraints," she would say. "Rotate your bones if you must. But avoid scaling them, and don't ever, ever let me catch you in a translation!" We all love our grandmothers, but we found that the tenets of traditional animation called for - nay, demanded - that we defy her.

The reason behind our disobedience was squash and stretch. We found that by scaling our joints, and especially by translating them, we could instill our animations with extra gravity and snap. Major translations often lasted only a couple of frames and, borrowing an idea from Disney, were "more felt than seen."

Since we had no IK setups to speak of on the spines and arms of our characters, translating the bones in these body parts was quite simple. If needed, we could key the leg IK solvers "off" in order to manipulate these joints. Translation and scaling were effective across the board and worked wonders on anything from walks to attacks to facial animation (Figure 7).

Requiring no additional setup, these low-tech solutions saved us time. Within limits, this method of animation provided animators with a direct, tactile, and expedient method of sculpting their characters' poses. Although unglamorous, this technique was as effective as any in terms of preserving our resources and improving our animations.

 

______________________________________________________

Walks and the Walk Guide


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service