MOTEK - Motion Technology Entertainment






Site Map
Search
Intro | News | About Us | Gallery | Stockmoves | Downloads | FAQ | Press | Links | Contact

 

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


Intro | News | About Us |Gallery | Stockmoves | Downloads | FAQ | Links | Contact Us