3d max - rigging 101

Upload: nesshi-s-oliveira

Post on 12-Oct-2015

129 views

Category:

Documents


3 download

TRANSCRIPT

  • Rigging 101 By Sergio Mucino Software used: 3ds Max

    WELCOME! Hi there! Welcome to the rigging 101 tutorial! I decided to post this one because I've noticed there are a lot of

    novice users who have a hard time trying to learn rigging (I had one!!). So, here it is. I hope this tut will get you up

    and running with character rigging, so you can start rigging your own models, and then move on to the heavy stuff...

    nuff said!!

    (NOTE: Even though this is a tutorial aimed at beginners, I still assume you have working knowledge of all of max's

    basic transform and manipulation tools, and that you have a basic working knowledge of hierarchies, node creation

    and modification, etc. I won't stop to explain these. If you still have problems following this tutorial, I'd suggest doing

    the tutorials that ship with your copy of the software first, and moving on to this tut afterwards. Enjoy!)

    WHAT YOU'LL NEED

    Ok. Go get some paper, glue, scissors... oops! Wrong tut... umm... ah, yes! You'll need a ready character! Since I

    haven't had much time, I'll just borrow one from the installation CD that you have (because you DO have one,

    RIGHT???!!). Here's a pic of the model I'll use... our friend Alfred, the alien (I just gave him that name... I'm not sure

    who created him and what name he had for him).

    Fig 1. The model

    So... go get your model and bring it into max, so we can get started.

    PREPPING THE SCENE Ok. Let's get some work done before tackling the rigging part. Bring up your layers toolbar, and create 4 layers...

    Model, Bones, IK Helpers, and Hierarchy Helpers. We'll use these layers to keep everything tidy and organized (if

    you're still under R4 and have no layers, use RezN8's super-handy layer script "Layer Manager" (dig for it

    at Scriptspot), or just use selection sets as needed).

  • Fig 2. Our layers.

    Now, place the mesh in the "Model" layer. Open the layer properties panel, and freeze it, turn on see-through, and

    turn off show frozen in gray. Also, you may need to set your transparency viewport settings to "best".

  • Fig 3. Mesh layer properties.

    Ok. We're ready to start building a skeleton for our friend here.

    THE SKELETON Let's first create some bones for our friend. This is the first step when rigging a character... creating the bones AND

    making sure they're correctly oriented.

    THE SPINE In the front viewport, create a straight bone chain to create the spine. I usually snap to the grid so I can make sure

    the chain goes up straight. You can adjust bone positions afterwards if necessary. If you need to do so after creating

    the spine, just open the Bone Tools floater (found in the character menu), turn on Bone Edit Mode, and move your

    bones vertically to their proper position. To check for orientation, just turn on bone fins, and make sure the front fin

    is actually facing to the front. Adjust the fin sizes so that they actually give you a visual representation of your

    model's volume. Name the bones clearly (I used the Bones_spine01 through 04 I normally use). You should end up

    with something like this...

    Fig 4. Spine bones chain.

    THE ARMS Let's now create the arms... create the bone chain in the top viewport, using the model as a reference. As you might

    have noticed earlier, the model's arms are pointing downwards a bit (in my case), so you'll need to rotate the arms

    downwards (rotate the root bone) afterwards, and move the bones into their proper positions. It's very likely your

    joints will be short (in this case). So you'll need to enter Bone Editing mode, select the move tool, change your

    referece coordinate system to local, and move the bones in their local x axis to position them properly. Check ALL

    your viewports ALWAYS to ensure proper bone positioning. Name these bones (I use 'Bone_armRT',

    'Bone_forearmRT' and 'Bone_armTermRT' respectively... changing the RT suffix to LT for the left side). Adjust fins

    and overall properties to suit your particular model and/or needs and preferences. Here's what you should have

    right now... (NOTE: You can mirror bone chains to create the opposite side chains, but apparently, there are some

  • issues with doing this... caution is recommended if you do this. If you decide to mirror the arm, just create a point

    helper and align it to the root bone in the chain... in this case, it's be Bone_arm. Now, move it to X=0 [looking at it

    from the front viewport]. Link this bone to the helper. Double click on the helper to select the whole hierarchy. Set

    you coordinate system to parent, and your transform center to pivot point. Now mirror the bones. This will give you

    a symmetrical mirror along the center of the universe [that is, coords 0,0,0]. I hope you modeled your character this

    way in the first place!... you can delete the point helpers when you're done mirroring).

    Fig 5. Arms.

    THE HANDS

    Ok. The hads are an important and kinda tricky area to bone the first time you do it. The general workflow (the

    "easy" approach) is to bone the fingers first and the actual hand bones lastly. Again, do this in the top viewport, and

    move/rotate your bones into place. Here are the bone fingers...

  • Fig 6. Fingers.

    To create the hand bones, select the arm terminator (nub) bone (the small one at the end of the chain), and from

    the bone tools menu (go to the Character menu, and open the Bone Tools floater), turn on Connect Bones... a

    dashed line will appear... select the root bone for one of the fingers. A bone will be created in between them, and

    will be automatically set as the parent for the finger root bone. Check it's orientation. If you need to adjust it (very

    likely), unlink the finger root bone before doing so, rotate the hand bone, and relink. Here's what the connection

    bone (hand bone) looks like once you've completed the operation...

    Fig 7. Hand bone.

    Repeat for the other fingers.

    Fig 8. Finished hands.

  • THE LEGS The legs are pretty straightforward. Create them in the left viewport, and again, make sure to move and rotate them

    into position. Also, remember to check for proper bone orientation. If you did create them in the left viewport, you

    should be ok. Here's what the finished legs look like...

    Fig 9. Legs.

    THE FEET The feet should also be created in the left viewport. Create them just the way you see them, and afterwards

    move/rotate them. You can do this by moving the root of the foot chain to the leg's terminator position (align them

    in position pivot-pivot), and then align the foot's root bone orientation to the thigh or calf bone's (x,y, and z

    orientation, pivot-pivot). Here's a view of the finished feet.

    Fig 10. Feet.

  • You'll notice that this model required an extra set of special bones for the heels (these will be used for skinning

    purposes)... this is not required for most characters. Feel free to experiment with different models and see how you

    arrive at an efficient boning solution.

    HIPS AND TAIL Let's start refining the rest of the

    skeleton. We'll need to create a hip

    bone, and in the case of this charcater,

    a tail bone(s). Do this in the front

    vieport, going from the belly area

    downwards. When you're done, using

    the left viewport, rotate them

    accordingly. You might need to go into

    Bone Edit mode (bone tools floater)

    and move some bones a bit, if they're

    too short. Make sure the root bone is

    aligned in position with the root bone

    for the spine chain. They should be

    located in the same place (their

    pivots). This will give us a better

    motion in this area. Here's what these

    new bones look like...

    Fig 11. Hips and tail.

    NECK, HEAD AND JAW. Create a chain going from the spine's

    terminator bone pivot point up to the

    tip of the head. I used two bones for

    my character's neck, since it's kinda

    long, and from the character design, it

    looks like it needs to be able to bend

    there... and one bone for the head. I

    then created a smaller bone for the

    jaw. Be sure to position it in the

    middle of the model's jaw, and where

    the jaw bone should be. Check your

    jaw... your jaw bone's pivot should be

    just below your ears. My character

    has a very small jaw, so I positioned

    the bone accordingly... here's what I

    ended up with..

    Fig 12. Neck, head and jaw.

  • CLAVICLES All that remains, are the clavicles. Create them by selecting the spine's terminator bone, and doing a bone connect

    operation to each root bone of the arms chain. Select these new bones, unlink them, and rotate them if needed

    (relinking them afterwards). Here's what you should have...

    Fig 13. Clavicles.

    FINISHED SKELETON Here's how your finished skeleton should look like now. Take a look at yours and see you're not missing anything.

    We'll proceed to applying IK solvers, and some special controls.

  • Fig 14. Finished skeleton.

    ABOUT IK IK, short for Inverse Kinematics, is the way to go to animate characters. It lacks some of the control provided by

    Forward Kinematics solutions, but it's much faster to use and has some great advantages over FK. One of the most

    important is that, since the IK solver is an object outside of the hierarchy, it can be used to anchor the IK-driven

    chain to another object. Imagine you needed to animate a character doing pushups... doing so with FK could turn

    into a nightmare, because the main animation would come from rotation the spine and hips, and keeping the feet

    and hands at the exact same spot in the floor throughout the whole animation. Most people did this in the past

    using a pen marker to mark on their monitors where the hands and feet were located, and rotating them using FK

    every keyframe (not every frame! although it could happen...). And even if you were extremely careful, some sliding

    was sometimes unavoidable.

    However, with IK, since the solvers are at a different place in the hierarchy, they'd take care of keeping the whole

    chain positioned at the exact same spot (for as long as you didn't move the solvers from their place). That made life a

    WHOLE LOT easier for animatiors.So, those are some of the differences of IK and FK. If you need more info on this

    subject, please read my FK/IK paper located at the papers section of my site. Hope all is clear. So, let's move on...

    APPLYING IK SOLVERS Ok... we're gonna need four IK solvers here... one for each arm, and one for each leg. Let's ge one thing straight from

    the beginning... you DO NOT use IK to animate fingers or necks/spines. I can think of a couple of situations where I

    can think of using IK for fingers, but these are extremely rare and IK should NOT be incorporated into standard rigs at

    these areas. Anyway, here goes...

    Select the root bone for the arm chain (Bone_armRT in the case of the right arm). Go to the animation menu, and

    select IK solvers/ HI Solver. This is the history independent solver, and it's the one you should use on every character

    you build. The HD Solver is the one we had in max 3, and it's useful if you require sliding joints, so it's more used for

    mechanical rigs. The Limb Solver is a "limited" version of the HI solver (it only supports 1-joint chains), and, if you're

    using max5, we've got the all brand new SplineIK Solver... we'll use that one on the advanced tutorial.

    Once you've selected the HI Solver, you'll notice a dashed line appearing in your viewport that follows your mouse.

    It's part of the solver creation. It needs a second node to tell where the solver will end. All nodes included in an IK

    solution MUST be part of the same hierarchy. You may not use different hierarchies under the same IK solver.

    So, go ahead and select the arm chain's nub bone (Bone_armTermRT, in the case of the right arm). Once you did, a

  • blue cross will appear at the nub bone's location. This is what's called the goal. The IK solution will always try to solve

    rotations to aim at this goal. So, whereever the goal goes, the chain will follow... go ahead, try moving the goal and

    see how an IK-driven chain behaves...

    Once you go this one, go ahead an add solvers to the rest of the chains (arms and legs). The leg's chains go from the

    root of the legs to their nub bones (in the case of the right leg, it goes from Bone_legRT to Bone_legTermRT).

    NOTE: Make sure each IK chain is set to Start Joint Parent Space. You can check this by selecting the IK chain's goal

    and going to the motion panel.

    This is what you should end up with...

    Fig 15. IK solvers with resized goals

    Ok. We've got IK solvers on out character. However, we'll need some extra controls to help us animate the character

    properly and in a easier fashion.

  • ARM CONTROLS We'll need some controls to help us

    animate the arms and hands

    properly. I'll just go through the

    process for one arm, and you can do

    the other arm when you're done.

    First, lets create a point helper, and

    align its position to the nub bone's

    pivot point (or you can use the IL's

    goal, if you haven't moved it). Once

    it's there, link the IK chain's goal to

    this point helper. Set the point's

    display properties to show the box

    only, and size it to your liking. Name

    it ArmControlRT (or LT, if you're

    working on the left arm... you

    already got the whole suffix idea,

    right?). Try moving it and the whole

    arm should move...

    Fig 16. Arm control object

    Now, create another point object, and align it to the nub bone again, but this time align both its position AND

    orientation. Set the display properties to show the Axis tripod only. Size it so it's easily selectable. Now, link it to the

    arms forearm bone (Bone_forearmRT). Now, link every bone in the hand chains to this helper (these would be the

    bones that were created by connecting the fingers to the nub, remember?). Here are the bones you should link to

    this helper...

    Fig 17. Hand bones to be linked

    Once they're linked, select again the helper you just created and name it HandControlRT. Go to the Link Info section

    if the HIerarchy panel, and turn off ALL the rotation Inherit switches. This will keep the hand locked to "world space"

    instead of local space". It means it will prevent sliding and rotating when the hand should be locked to the world.

  • The downside is you'll need to animate the rotations whenever the character moves its arm so the hand keeps with

    it, but it's just a minor issued compared to keeping the hand locked to other objects.

    Now, create another point object,

    and align it to the shoulder

    (Bone_armRT). Move it backwards to

    the back of the character. Name it

    ArmSwivel_RT, and link it to the

    topmost bone in the spine

    (Bone_spine04). This node will help

    us aim the elbow. Select the IK

    chain's goal, go to the motion panel,

    and in the IK solver properties

    rollout, click on the "Pick Target"

    button under IK Solver Plane, and

    select this point object. This will

    orient the chain so that the elbow

    faces towards this node. We linked

    the point object to the spine so that

    when the character bends his spine,

    the arm keeps its orientation relative

    to the spine. If you'd rather have the elbow's orientation locked to something else, you can link this point object to

    something outside the spine hierarchy, such as the COM we'll create later (I like it the way it is now).

    Fig 18. Swivel angle helper

    Lastly, let's create a helper to aid us in rotating the clavicle in an easier way. Create a point object and align it to the

    clavicle in both position and orientation. Name it ClavicleControlRT. Link it to the Spine04 bone. Now, link the

    clavicle bone to it. That's it. If you rotate it, the clavicle should rotate, and the arm should follow. Here it is...

    Fig 19. Clavicle control

  • That does it for the arm... let's move onto the legs.

    First, create another point object and align it to the IK chain's goal. We'll use this object just like the one we created

    for the arm... to animate the leg. You'll usually want these objects, since it's very rare to animate the goal directly.

    Name the point object LegControlRT. Link the IK chain's goal to it. If you move it, the leg should follow now.

    Fig 20. Leg Control

    Create another point object, and set its display properties to show the axis tripod only. Align it to the leg's nub bone

    in both position and orientation. Name it FootControlRT. Link it to the calf bone (Bone_calfRT). Now, link both feet

    root bones (we usually have one only, but remember we had to create a 'special' chain for the heel of the foot) to

    this helper. You may turn off rotation inhertinaces for this one, depending on what you need this character do.

    We're done. This node is used to rotate the feet.

  • Fig 21. Foot Control

    Now, let's add another helper to aid us in controling the rotation plane for the leg's IK solver (or, in other words, aim

    the knee). Create another point object, and align it to the thigh bone's root (Bone_legRT). Now, move it forward to

    the front of the character. Name it LegSwivel_RT. Link this node to the hips bone (Bone_hips). This will keep knee

    orientation relative to the hips rotation. Now, select the IK chain's goal and go to the motion panel. Click on the Pick

    Target button under IK Solver Plane in the IK Solver Properties rollout, and pick this object. Now the knee will always

    aim towards this node.

    Fig 22. Leg swivel angle control

    Fig 23. Hips control

    Create a big point object, and set its display properties to box. Name it COM (short for Center of Mass). Align it to

    the spine root (Bone_spine01) in both position and rotation. Now, select the following nodes:

  • * Bone_spine01

    * HipsControl

    and link them to this new point object.

    If you move this COM, you'll notice the

    whole character moves, but the arms

    and legs. This is good, because it

    allows us to have the hands and feet

    locked to the world, which is what we

    usually want. However, it makes

    posing the character and moving it to

    different parts in the scene a bit

    cumbersome. We'll add another object

    to help us do this.

    Fig 24. COM

    Create another circle primitive, and

    align it to the COM in both position

    and orientation. If it ends up oriented

    in the wrong way (left to right instead

    of top to bottom), go into sub-object

    mode, select the spline, and rotate it.

    Now, move it to the bottom of the

    character, where its feet are. Scale it

    (in sub-object mode) so you can see it

    and select it easily. Now, select the

    following nodes:

    * COM

    * Both ArmControlxx nodes

    * Both LegControlxx nodes

    and link them to this object. Name this

    circle "Character" or whatever name you deem proper for this guys. If you move it, the WHOLE character should

    move. This way, you can move this character through the scene or make him jump or fly easily.

    Fig 25. Character helper

    And there it is... the finished rig...

  • And that's it. You're ready to get started animating him. Try doing some movements with this rig, like walking, falling,

    carrying stuff, weaving, jumping, etc. See how hard or easy it is, and make notes on where the rig falls short. THINK

    of ways to improve it. Try them out. See what works and what doesn't. Think of more stuff you'd like this rig to

    support. THINK of how you'd get it to support them. This is what a character TD does. Keep playing with the ideas

    exposed here, since they're the basis for EVERYTHING else you'll do to customize and improve rigs. The most

    important part of rigging anything is to know where in the hierarchy should objects be places. It's also the trickiest.

    Try placing objects in different parts of the hierarchy, and see what happens. Chances are you'll find new behaviours,

    or that you'll break the rig. But that's no problem. Breaking stuff is the best way to learn (don't tell your ma I said

    this, please), so don't be afraid to experiment. SAVE OFTEN, though... especially when playing with new possibilities.

    And once you feel comfortable, move over to the other tuts where I touch on some more advanced stuff. I hope you

    found all this useful and inspiring. Just remember... it's YOUR responsability to take it to the next level. And

    remember... any questions/suggestions/donations (yeah, right....) ...'till nex time!!

    Copyright 2003, Sergio Mucino. maxTD.