|

February 2003
The "SimpleGuy":
A Review of and Tutorial for an Intuitive Maya Biped Character Puppet
By Kris Kapp
I’ve spent a lot of time rigging characters. Mainly, I’ve come to
rely using scripts for most of the repetitious work, but it is still a
time consuming process to completely rig a character for animation. At
my current job, we send out a lot of modeling and animation to be done
by contractors, and I was looking into designing a universal rig that
could be fitted to any character so that we could start animation before
the characters were completely modeled and textured. Normally, I’m not a
big fan of this, as you can run into problems if IK is used to animate
and the proportions of your stand-in rig are different from the final
character setup. I ran across the
SimpleGuy
and found it was a great tool.
Jeremy Cantor’s SimpleGuy is a simple to use, basic Maya puppet that
has built in controls for changing its proportions to fit other
characters. I’m going to go over how I used it to fit with one of my
characters. You can find the SimpleGuy puppet at Turbo Squid. I think it
is a pretty good deal. It would take me at least several hours to fully
rig a character with all the features that the SimpleGuy has with out
the toolbox. Throw in the amazingly complete GUI and it is a killer
deal.
First things first: Read the documentation. SimpleGuy comes with
simple docs that basically describe how to use the puppet. The toolbox
is easy to use and also includes some useful scripts for filtering
curves in the graph editor and a wire frame-coloring tool.
I started by opening the SimpleGuy file in Maya. I cleaned up my view
by creating a new layer, selecting all the SimpleGuy’s stand in geometry
and assigning the geometry to the new layer and then hiding it. Next I
imported my character geometry into the scene and opened the Toolbox by
selecting the top node of the SimpleGuy (simpleGuy) and setting the Tool
Box attribute to 1. The Plugins Menu item has a Change Proportions tool
that brings up a GUI to let you fit the puppet to your character. By
clicking the Overall Scale Tab, you can quickly rough in the proportions
to fit your character.

Change Proportions
GUI
Once you've got the basic proportions scaled as needed, you can start
getting the individual joints in the correct positions. Position the hwa
node to where the base of the spine would be in your character. This
control moves the hips with the IK arms and legs. Select the hips if you
just want to move the hips with out moving the legs and arms. One nice
thing is that the toolbox allows you to hide the arms of the SimpleGuy,
making it easier to get the position of the spine correct. It’s
important to get the spine right, because the locations of all the other
joints depend on where the hips are located.
Once the hips are in place, move on to the pelvis. Next, position the
pelvis and legs by starting at the hips by selecting the Body Scale tab
and then scaling the Pelvis. You can also select the pelvis from the
Join Selections tab to further move it as needed.
The legs are next. Scale them using the Legs Scale tab. To fine-tune
the femur placement, select the thighs through the Joint Selection tab
and move it into place. One thing that I found to make this easier is to
set the FKIK dial for the legs to FK and then rotate them into position.
One thing that would be nice is a mirror button that would allow you to
match symmetry from one side to the other, but it’s not that big of a
deal to match the position of the joints from one side to the other.
Another quirk that I noticed from the Change Proportion GUI is that the
Left Thigh button selects the right femur placement node and vice-versa.
I didn’t have to move the individual knee joints on my model. I was able
to get the knee located correctly by using the Leg Scale sliders. One
thing to think about is how your character is going to move. If the
thigh is much longer or shorter then the tibia, you are going to have a
strange gait to your character. If this is what you want then by all
means position the knee where you want it by selecting it in the Joint
Placement tab and translating it.
Once the joints for the leg are rotated and positioned, scale the
foot for correct joint placement for the toe. There is not a joint
selection for the toe but you should be able to get it in the correct
position by using the foot scale slider.

Lower leg and toe
placement (click for larger image)
Now that the legs are done, move onto the back. Use the torso scale slider
to get the rough position of the back and shoulders then use the lumbar
and thorax joint selections to get the correct placement of the back
joints. Also use the lumbar, thorax, and spine controls to get the
rotations as needed.
The arms follow the same workflow as the legs. Use the FK controls to
rotate the joints to match the model. Scale the clavicles and neck to
fit. The hand control is used to position the fingers. I was able to get
pretty close with mine by using the individual finger spread attributes.
You’ll probably have to select the individual finger joints and
translate them a bit to get them to match your models hands.

Model with
SimpleGuy joints scaled to fit (click for larger image)
Depending on your character, at this point you might be ready to bind
your mesh to skeleton. For my character, I needed to add joints for the
ears and jaw, and I decided to add a few joints in the rib cage to make
it easier to paint the weights of the bound mesh.
One thing that I found is that simply just parenting new joints to
the Simply Guy skeleton causes an extra transform node to be created
between the joints. To get around this, use the Connect Joint command
with the Parent option on to get around this. However this can cause the
joint chain to scale itself so it no longer fits where you need it.

Adding addition
joints for skinning (click for larger image)
I used the following procedure to get around this:
- Layout the new joints with out connecting them to the existing
skeleton.
- Mirror the joints for the other side.
- Make a guide for the joints by duplicating the joint chain.
- Connect the first joint chain that was created by using the
Connect Joint with the Parent option turned on. Chances are that is
will not be scaled correctly.
- Snap the joints into the correct position by using the duplicated
joint chain as a guide.
- Delete the joints used as a guide.
- Check the Local Rotation Axis on the newly connected joint chain.
You may have to adjust the LRA by using the joint –e –oj yxz –zso
command on the joints. Or you can adjust the axis by hand. That’s what
I ended up doing for the ears of the character because I was after
specific behavior from the ears.
I also added joints for the jaw and for a couple ribs. One thing that
I noticed is the there are two joints named Skull1. The joints chains
for the SimpleGuy work off the concept of having a control skeleton, a
FK skeleton, and an IK skeleton. One of the Skull1 joints is parented to
the control skeleton and the other is parented to the FK skeleton. I
just renamed them skulltopJ_ct and skulltopJ_fk to follow the same
naming convention as the other joints.
I also followed a naming convention when I added the new joints. If I
was going to bind geometry to them I used the string JNT as a suffix
when I named the joints. This makes it easier to select the correct
joints when I bind the skin. For example: the first joint of the ear
chain that I added I named lf_earRootJNT.
Once you have the puppet posed how you want it and are ready to bind
a mesh to the skeleton, record the pose using the Record Current Pose
under the Action menu on the toolbox. This pose will allow you to get
back to the default pose used for binding. One caveat: you must
deactivate the constraints on the clavicles before it will allow you to
Apply Recorded Pose. I made a quick button to turn the constraints off
then another to turn them on:

I made a quick script that I use to select the joints and bind the
skin at the same time. Sometimes you might have to adjust the joint
placement and/or add some detail to your mesh. By automating the simple
tasks, you have more time to spend on the creative side of things. For
example:

Let me know if this script doesn’t make sense. Sometimes the
formatting gets a little screwy with html. I also export the weight maps
and import them back in if I have to re-bind a mesh to a skeleton. That
way I don’t lose any work if I want to adjust the placement of a joint.
The mirror weights function works pretty well if you have a good set of
UV’s. Taking time to lay them out in a meaningful fashion will make your
life easier in the long run.
I was very quickly able to rig a couple of characters and skin them
using this tool. The two characters are very proportionately different
from each other. Starting from scratch on both of them would have taken
me a while, and I wouldn’t have had the nice GUI to animate them. I
think the tool is well worth what Jeremy is charging for it. The website
is:
http://www.turbosquid.com/HTMLClient/FullPreview/FullPreview.cfm/ID/184717/A
Hopefully, I’ll be a little quicker in answering emails this time
around. I am still working on getting internet access at the house. But
if you have any questions my email is:
kris.kapp@riskstudios.com
and I will try to answer as quickly as possible.

Rigged rabbit
(click for larger image)

Rigged chicken
(click for larger image) |