There are just as many spine
setups out there as there is animators. So this is how I
make the spines for my characters. To demonstrate this
I've only used the upperbody of a character that comes
with Softimage|XSI. This technique can also be use in
The character I used was "Club Bot", designed by Michael Isner.
Depending on what your character look
like you might wanna add or use less chains than me. For
this character I'm going to use 3 singel chains for the
As you can see I've draw the last bone
the opposite way. This is to create a "ass bone". If you
draw the bone the opposite way you'll get the benefit of
a better control for the hip movments.
need to build the control objects. Try as much as
possible to avoid rotating/animating the chains it self.
If you are rotating the bones you'll loose the
possibility to have a zero value in your default
As an example. The second bone in this
spine has the value of X=0 Y=0 Z=85.3823 You would need
to write down the "85.3823" value or create a separate
pose clip for each joint. Not very practical... So you
would like this position to be the zero value? right? So
to do this we need a few extra things. First create
three nulls and align them in position ( not
rotation! ) to the three roots of the chains.
Then make each one of them the parent of the singel
chains. Your schematic should now look like
Now we need to make the chain follow
the rotations of the other chains. So position
constraint the "Null2" to the "Null". And position
constraint the "Null2" to the "eff1". Your Schematic
should now look like this:
Now that we have done that we are going
to create the control objects. For this I use my "puppet
toolbar" which you can download here PupperMaster_Objects.xsiaddon.
Install the addon by File->Addon->Install. You can
of course make your own objects, it's just a tool to
make it easier.
I'm going to use the "Puppet Square"
first. So click on the Puppet Square button. Name the
object "COG" press OK and then type in 6 units as it's
lenght. It now created a square curve and parented it to
a null. The null is named "ZERONULL_(the name you
chose)". Branch select the null and square and move it
to the exact position of the "null" object. Simplest way
is to select the "ZERONULL_COG" and position constrain
it to "null" and then remove the constrain.
You can also see that I color all my
objects. This is purely to make it more visible. Now
create another puppet square, name it "Spine1" and put
it in the same position as the "eff1" object. But this
time keep the position constraint to the "eff1".
now we need to also create a "ass" control. So create
another puppet square you call "ASS" and put it in the
same position as the "null" object. But set the size to
5 so that it's a little bit smaller that the COG. This
is now how things should look.
So let's start assigning the rotation
values. We'll start at the top. Select the "Null2"
object and orientation constraint it to the Spine1. if
you now rotate the "Spine1" object you should have the
bone reacting to it as well. And you can now type in
0,0,0 in the rotation value to get back to the default
Now select the "Null1" and orientation
constrain it to the to COG object. if you now test
rotate it you'll also see that the "Spine1" object is
following the position. But now everything is what it
Make the "COG" the parent of the
"ZERONULL_Spine1" object. If you now branch select and
rotate the COG it will react as it should.
But we don't want to branch select all
the time. Download this script "lock_object.js""
(right click and "save target as..). Open up the script
in the script editor. Now select the "ZERONULL_Spine1"
object, then press "RUN" in the script editor.
now rotate the COG object the Spine1 will follow
correctly. Next this is to do the same with the Ass
bone. Make the COG parent over the "ZERONULL_ASS"
object. Select the "ZERONULL_ASS" and press "RUN" in the
The reason why we use the "lock_object.js" script and not unclicking the
"ChldComp" button is if you want to hand over the setup
to another animator. You can never be sure if he/she has
the "ChldComp" unpressed or not. This way you don't need
to worry about branch selecting or the "ChldComp" button
We almost forgot, select the "null" object and
orientation constrain it to the "ASS" object.
You "spine is now complete, and you learned perhaps a few
thing about setting up controllers. Below are a few pose
tests with just those three chains.
"lock_object.js"©2003, Bradley Gabe, ILM