Stockmoves Tutorials:
Chapter 2. - Maya Advanced Techniques -
In this chapter we're going to make you more familiar with some advanced techniques on setting up skeleton structures.
Some of these techniques you might already be familiar with because they can also be used in skeletons that are built
for keyframe animation. We are showing you here how these skeletons can also be used in conjunction with Stockmoves
data.
2.1 Creating Offsets
What we demonstrated in the previous tutorial was how to directly constrain your skeleton to the Stockmoves data. However,
in most cases you may want some kind of offset control built in. What this allows you to do, for example, is make an arm bend
more or less to prevent it from penetrating other body parts. This is especially useful if your character has drastically
different proportions compared to a normal human.
You can do this for all of the different elements, or just for a couple (like the arms). It depends on how much control you
want or need.
The whole idea is that instead of directly constraining the skeleton to the Stockmoves element, we parent a locator under
the Stockmoves element and then constrain the skeleton element to that locator. Then we can use that null to have
overriding offset control. Ok, lets get started.
Just like in the previous tutorial, we have our Stockmoves data in yellow and our (default) skeleton in purple loaded up
in a single scene. We're going to use the offset technique on the left upper arm, forearm, and hand.
We will start by creating three locators (green) which will be used as the offset controls
 The three locators ready for action
Now parent the first locator to the upper arm.
 Parenting the first offset locator
Parent the second locator to the forearm.
 Parenting the second offset locator
And group the third locator to the hand.
 Parenting the third offset locator
Translate the locators into a more comfortable place. The best method is to place them next to the joint they are parented to,
but outside of the character so you can still easily pick them if needed. Also, set all of the rotations of the locators to
0,0,0 so that they line up with the Stockmoves elements they are parented to. When you reset the rotation of the locators,
they can become very skewed. If the skewing adds too much clutter to your view ports, you can go into the attribute editor for
each locator, turn on display handle and then set the scale of the locator to 0.1,0.1,0.1.
This is what you should end up with:
 Offset locators
parented, positioned and rotated correctly
The next step we will have to do is constrain the skeleton elements for the upper arm, forearm and hand to the three
corresponding locators that we just created using an orient constraint. The colour coding in the next three pictures is the
same as in the previous tutorial. Constrain the white element to the red one.
 
 Constraining the skeleton to the offset locators
Now the fun really starts. Select the first locator and rotate it. It should now control the rotation of the upper arm
skeleton element. Do the same for the second locator which controls the forearm and the third locator which controls the hand.
 Offsets used
play-movie (mpg - 105 kb)
Hit the play button and watch how the arm is still moving like it's supposed to, but it gets the offset added to it.
The really cool thing is that this technique allows an animator to have overriding keyframe control that goes on top of the
Stockmoves Data.
One thing you may have noticed in the mpg is that we forgot the collar bone movement. We could do the same as in the basic
tutorial (constrain the root of the upper arm to the upper arm element of the Stockmoves data with a point constraint), but we
can also introduce an offset in here.
We could choose to use another locator for that. However, we could also use the first null (the one that's controlling
the upper arm rotation at the moment). In order to do this, first select that locator and position it roughly to the place where
the arm is connected to the shoulder.
 Re-positioning the first offset locator
Now constrain the the shoulder joint of the skeleton to the locator that we just repositioned.
 Parenting the shoulder
This is what we end up with:
 The results
Now go ahead and translate the first locator to displace the arm from the body. Play the animation to see that the arm keeps
the same distance throughout the whole animation.
 The resulting animation with offset
play movie (mpg - 105 kb)
Imagine a really bulky character with a huge chest. With this technique you could make his shoulders as wide as you would
want.
2.2 Scaling joints
If your character has different proportions compared to the normal humanoid proportions of the Stockmoves skeleton you
can easily scale the joints of your constrained skeleton. If you introduced offset locators in your setup (mentioned in the
previous section), you can come up with virtually any proportions you want.
In extreme cases you may need to fiddle around with some of the offsets to prevent body parts from colliding. Here are
two examples that show what can be accomplished.

A chubby, dwarf-like skeleton
play movie (mpg - 105 kb) |

A tall alien character
play movie (mpg - 105 kb) |
2.3 Dual bone forearm setup
A common problem that arises, especially with humanoid characters, is the deformation of the skin in the forearm area.
When the arm bends, or when the hand bends at the wrist, there is a tight area where the actual bend occurs. But when the arm
twists it happens gradually along the length of the whole forearm.
There are several techniques for addressing that. They all consist of using not one but two bones for the forearm. One of
these bones is used for making the arm bend and the other is solely used for twisting motions.

Two bone(back) and three bone (front) setup in wireframe mode
play movie (mpg - 105 kb) |

Two bone (back) and three bone (front) setup in shaded mode
play movie (mpg - 105 kb) |
The arm towards the back has a conventional two bone setup; one for the upper arm (cyan) and one for the forearm (black).
The bone in the front has a three bone setup; one for the upper arm (white), one for the bending of the forearm (black) and
one for the twisting of the forearm (black).
The two bone setup was the one that was shown in the previous tutorials. The three bone setup can also be used with
Stockmoves data, but it takes a little bit more work. What you need to do is use expressions to link the bending motion of
the Stockmoves forearm element to the first forearm skeleton element (black in the picture) and link the twisting motion of
the Stockmoves forearm element to the second forearm skeleton element (white in the picture).
2.4 Combining motion capture with inverse kinematics
In many cases you may find that you want to combine the use of inverse kinematics with motion capture. For example,
if you want your character to walk over and pick up a glass off of a table. For the walk, you will want to use the motion
capture data and for the picking up of the glass you will want to use an IK handle. In Maya, this can be done by using double
orientation constraints on your character's skeleton. One constraint will be used to bind the skeleton to the Stockmoves
elements, and the other will be used to bind the skeleton to another skeleton that has an IK handle assigned to it. To
switch between the two, you just have to animate the goal weights.
2.5 Using a spline IK Solver
The "pline IK solver" is an excellent tool for adding
more detail to your skeleton. It allows you to use as many bones
as you want to control parts of your character while still constraining
it to the Stockmoves elements. This section will explain how to
create an IK solver and apply it to the spine of your motion capture
driven skeleton.
First, you'll need to create a curve to be used as the handle for the Spline IK solver. In the CV curve tool settings,
set the curve degree to 2. We need to use a second degree curve is because it will hug the Unica elements closer than a
third degree curve would. Turn snap to grids on and create a curve that is 8 units long by placing one CV every 2 units.

Drawing the spline
Move the curve one unit to the left. Create a chain of joints to be used as the spine. Start at the origin and create
seven different segments, making each one 1 unit long. You should end up with something like this:
 Drawing the skeleton
Now use the IK spline tool to attach the chain to the curve that you just created. Go into component mode and move some of
the CV's around to test your IK Spline.

Creating an IK spline handle
Our next task will be connecting the Spline IK chain to the Stockmoves data. Select the curve that controls the spline
IK chain. turn on snap to points and move the chain to the root of the skeleton of your character.
 Positioning the spline IK chain
Now get rid of the old spine. Select and detach the joints for the hips and shoulders. Then select the root of the skeleton
and delete the chain.

Deleting the old spine
Hide all of the joints and elements except the spine to clear up your viewports a little. We need to use 2 locators in
attaching the spline to the Stockmoves spine elements. Create them, position them at the center of each Stockmoves element
and then parent them to each Stockmoves element.

Creating Locators
Select the CV's of the spline IK handle and create clusters for each one (you should end up with four clusters in this case).

Creating Clusters
Select the cluster that's at the bottom of the spline. Constrain it to the Stockmoves hips element using a point constraint.

Constraining the bottom of the spine
Select the next cluster up in the spline and constrain it to the bottom locator.

Constraining the lower middle of the spine
Select the next cluster up in the spline and constrain it to the top locator.

Constraining the upper middle of the spine
Select the last cluster in the spline and constrain it to the Stockmoves torso element with a point constraint.

Constraining the top of the spine
Now select all of the joints in the spine and scale them down so that the top joint is even with the base if the neck.

Scaling the spine joints
Unhide the rest of your character. Parent the head bone to the neck bone. If you scaled your IK spline joints, You will have
to reset the scale of the head bone to (1,1,1) after you parent it.

Parenting the head to the neck
You should now have a fully operational IK spline spine setup!

IK Spline Spine
play movie (mpg - 106 kb)
Chapter 3: Importing more Stockmoves data |