Character Setup in XSI 1.5

by Stefan Andersson

Introduction
The reason for making this tutorial is to help people setting up their character easily for animation. Most setup tutorials contains to many expressions and in depth functions so that a "normal" animator can't animate it. Expression are a good thing if you want to create generic walk cycles or background characters.
But on a basic skeleton you should at all times try and avoid them (some people will argue against me on this matter). Constraints are allowed to be used though :)

Part 1. Leg & Feet

The leg is constructed with a two bone chain. And the feet are constructed with two single chains. Make the end effector of the leg parent to the root of the first feet chain. Then make the end effector of the first bone chain parent of the root to the last feet chain (the toe).

To be sure that the roots stay in place we will make Position Constraints.

Position Constrain the root of the first feet bone to the legs end effector. Then Position Constrain the "toe" bones root to the end effector of the first feet bone.
If you now select and move the end effector of the leg the foot should follow nicely. Now is a good time to save for the first time. Call the scene "Leg" since we are going to reuse this scene.

Part 2. Control Objects & Constraints

Forget about the Implicit objects you can create in XSI :) They are only in the way since you can see them in shaded mode. What you need are objects that are only shown in wireframe, regardless of which mode you are using.
The way to make these objects is to use a linear spline. First make a polygon box (size doesn't matter as they say), turn on "point snap" (pic 3.). Now draw a linear spline so that the new wire object looks like a box. Don't worry about setting more than one point at the same place, it will not effect the wirebox. If you don't feel like doing this... download my VBS script to make this box.

wirebox.vbs

(I'm not a script wizard so I just copied what was recorded when I created it)
Your wire box should now look like this in shaded mode.


It's easier to grab and move control objects instead of nulls. You can also see the rotations easier.

Part 3. Placing the controls + constraints.

Next part might be the confusing one. This is when you have to read carefully to not get lost.

Duplicate the wirebox three times (make sure XSI doesn't parent them together). Position Constraint one of the boxes to the legs end effector. Then Orientation constraint the same box to the "heel" bone. Now you can relax all constraints. Should look like this now.

This was just one way of doing aligning to the bone and effector. The reason why I wanted to also Orientation Constraint the box to the bone was to get the same values as the bone. So now we can Orientation Constraint the bone to the box (and it won't flip since they have the same values). So lets do that, make a Orientation Constraint from the heel to the box. So now when you rotate the box it will rotate the foot. You can now scale down the box so that it is smaller than the rest of the boxes and name it "Heel_Rot"

Select another box, Position Constraint it to the legs end effector and then relax the constraint (it's just like align). Now Position Constraint the legs end effector to the box, name the box "Foot". This will create the IK for the leg. Next important step.
Make the "Heel_Rot" the child of "Foot".

REMEMBER TO ALWAYS MIDDLE CLICK WHEN YOU SELECT THE FOOT.

Did you get that? Now... SAVE! don't forget to save now and then.

It's time to make the toe control. Select the another box and position constraint it to the Heel bone's end effector. Then, Orientation constraint it to the toe bone. Relax only the Orientation constraint, if you don't know how to do that just relax all and then position constraint it again to the heel bone's end effector. Now Orientation constraint the toe bone to the box. Just like the heel bone the toe bone will now follow the box rotation. Name the box "toe_rot" Your setup this far should look like this

Save again.

Now we also need a up-vector constraint. Move the last box  so that it is in front of the knee, don't put it too close. Scale it down (it's just irritating to have a large box as a up-vector constraint). Select the thigh bone and Up-Vector constraint it to the box ( note: you must use the Skeleton -> Chain Up Vector or it will not work ). The leg will now flip but don't worry about that. To change back to the original rotation we need to change the Resolution Place (confusing?). Go to Edit -> Properties -> Animation Properties... Chose the Kinematic Joint rollout and then Resolution Place. Change the Roll to 180.

Now make the "foot" box the parent to that box. Name the box "knee_UPV"

Save!

To make some cosmetic changes hold down the "m" key and move the points so that the look somewhat like a foot. DON'T CHANGE THE POSITION OF THE CENTER OF THE WIREBOXES.

Your schematic view should look something like this

Now it's time for some explanation of all the parenting and constraining.

Wirebox "Foot"
Controls the position of the foot and also the rotation of the foot. When you rotate or move the foot all the other boxes will follow. That's why "knee_UPV" & "Heel_Rot" are the children of the foot. Remember to always middle click when you select the foot.

Wirebox "Knee_UPV"
Controls the direction of the knee.

Wirebox "Heel_Rot"
Rotates the heel, but should at all times be hidden! Select the box and press the key "H" to hide it. It's being controlled by the "foot" box (which it the parent).

Wirebox "toe_rot"
Controls the rotation of the toe (you might have guessed that one). The position of the toe_rot is being controlled by the heel bone's end effector.

To finish up this scene we will merge in the same scene. So go to File -> Merge and chose your leg scene. Position out the roots and the feets of the leg like the pic below (reshape one of the tow boxes).

NOTE! When you do "merge" in XSI it creates a new scene_null. So remember to cut all the models and skeletons before using them in your scene.

Save the scene as Leg_Setup.

Part 3. Spine

This part is also a little different than other spine setups you probably seen. Most constructed spines look like this.

It usually works fine, but I've learned a setup that works better (for me anyway). And that one looks like this.

.

You see the difference? I start out with creating one bone that goes from the waist and down to the crouch. This enables me to position my hip in a more freely way (it's named the "hip_bone"...... "ass_bone" will work just as well... hehehe). I get much more freedom by having this bone by it self. Next thing I do is to draw bones from my waist all the way to the head (see pic above).

The root of the character will be at the waist. Now we need to parent the bones together. The "hip_bone" root is the parent to the "waist" root. The "hip_bone"  is the parent to the roots of the legs. Make a Null and position constraint it to the hip_bone root, the relax the constraint. Make the null the parent of the hip_bone root and name the null "Character_Center".

Make another wirebox or duplicate one of the "Knee_UPV" boxes. Position Constraint the box to the "Character_Center" null, then relax the constraints. Select the "Character_Center" null and position constraint it to the box and also orientation constraint it to the box.

This box will be the control object that you will use for moving your character forward. You will also use it to rotate around.

Part 4. Arms

Arms and hands are pretty straight forward. What can be a little tricky though is the shoulder and the deformations around the armpit. There is no need for me to explain in detail how you setup a hand. But I will show you arms and wrist.

In the top view (always make arms in the top view, and legs in the right view) draw something that looks like this.

As I said, pretty straight forward. Upper_Arm, Lower_Arm and Wrist_bone. I always make an extra small bone for the wrist. It enables you a lot more freedom when it comes to deformations. The hand you will see is a hand I've reused from the skeleton that you get from the primitive skeleton (the skeleton that comes with XSI). Move the arm up in "Y" to where the neck begins.

Now for the shoulder. This is a really tricky part, I have never been able to get a shoulder that works for EVERY situation. So what I do is that I use different enveloped characters for different scenes. It's very rarely that your character is doing ALL motions in the same scene. But this is my trick to be able to get far enough.
First I create bones to use as shoulders. Just one simple bone that I can rotate so it raises or lower my shoulders. Parent the arm root to the shoulder bone.

Middle click to select the shoulder and arm then go to Skeleton -> Duplicate Symmetry. Make the root of the shoulders childs to the bone beneath the neck.

Then I create a null on each side of the chest which I also use as a skeleton. These nulls can be keyframes to help the envelope to be correctly deformed. Perhaps there are better ways of solving this.

Now everything should look like this.

I hope this will all help you become better animators and that you someday contribute with your own little setup.

Stefan Andersson
Character Animator
Filmtecknarna F. Animation