3D Studio MAX New IK Setup

By Michael B. Comet - This article, all images and text is Copyright ©1999 Michael B. Comet All Rights Reserved.

Introduction

This tutorial explains how to create a working leg setup with 3D Studio MAX r2.5 and its "New IK" system. After going through this article you should be able to take the same principles here and apply them to other setups such as arms, antennas, or anything else you might want to create (such as animated flying dachsunds). A basic working knowledge of MAX is assumed.

There are two basic setups I will discuss. The first, the simpler of the two, is an IK leg chain that ends at the ankle, with a forward kinematics foot. This setup is very stable, and easier to create, but the foot separates from the leg if it is placed too far. Not really a big deal since you can just make sure you animate it correctly. The FK foot is my personal choice.

The second setup is a full unbroken IK chain for the leg and foot. This setup is a bit more complicated to animate, but the foot stays attached regardless. It's still pretty stable, but probably not quite as much as the FK foot.

Both of these IK setup MAX files are available by downloading the IK Tutorial ZIP File (iktutfiles.zip). You should probably read through the FK version first, as it discusses some basic principles of IK. However, I tried to make each tutorial independant, so you can technically read them out of order.

Skeletons In Your Window - IK Leg / FK Foot Setup

  1. To begin setting up IK on a leg, you need first of all...a leg. (Amazing isn't it?) What I typically do is create a basic, simple, Forward Kinematics (FK) hierarchy. You can download the IK Tutorial ZIP File (iktutfiles.zip) that I used for this tutorial. It has MAX files for the initial FK setup, and the final IK setups I create on this page. The FK MAX file features several boxes linked together to create a leg, each parented to the one above it.

    Some important notes about this setup. First, besides the upper and lower leg bones, and foot and toe bones, there is a Hip bone. In between the hip bone and the upper leg bone is a "socket" bone. This is just another bone in the chain and is needed for reasons we will discuss later. For now, just note that you basically need 6 bones as shown. In addition, it helps to have everything lined up in a straight line for setup.

  2. The next thing to do is to "Reset Transform" the bones in the hierarchy. This is important. The reason for doing this is that we are going to create IK bones with the same orientation of the bones here.

    Reset transform insures you won't get any skewing of the bones when you rotate them, as might happen if they were non-uniformly scaled. It also helps to have the axis of each bone aligned the same to make rotation limits easier to setup.

    Finally even though we won't be using any rotation end effectors here, in order for rotation constraints to work correctly, both the dummy and the bone have to have the EXACT orientation. The easiest way to do this is to make sure everything has it's transform reset, and that the dummy is created in the Top viewport. The way to think of it is that linking position end effectors is relative, while rotation end effectors are always absolute.

    Due to the way reset transform works, you should first unlink everything in your hierarchy. In addition we will be making a few additions/changes to the hierarchy, so unparenting is a good idea anyways.

    So, select all the bones, and hit unlink. From the utility panel, choose "ResetXForm" and click the "Reset Selected" button. Alternatively you could apply an X-Form modifier to each bone one at a time, but this is quicker. Next, in order to easily collapse the stacks of all the bones, apply an Edit Mesh modifier, turn off subobject mode, hit the Edit Stack button and "Collapse All".

    You should now have a bunch of unparented bones with their transforms reset.


  3. Now we'll create a dummy object. For this FK foot setup, you can create this in any viewport, and it doesn't matter, since it will just be used as a positional constraint. The feet will be a separate setup issue that we will work on and combine in, once the leg itself is completed. This makes it easier to work on, and also works a lot better.

    Create a dummy at the ankle area called AnkleDummy. The dummy does two things. First, it will become the indirect animation control that is used to make the leg move and rotate. (Who ever said dummys were stupid?) Second, it is needed in order for the IK chain we create to automatically be generated through the lower leg. Basically think of it as telling MAX where the end, or tip of the chain is. MAX needs to know where the tip of the last bone in the chain is, so that it creates the last bone correctly. By adding this AnkleDummy in at the bottom of the leg, MAX will be able to know to place a bone lengthwise through the lower leg segment.

  4. Now it's time to relink our hierarchy. Since we'll work on the feet later, we'll just leave them unparented for now, and in fact, you may want to hide them to get them out of the way.

    The main change is that we will link the ankle dummy to the lower leg bone, instead of using the foot. Link the hierarchy upwards as normal then, with the hips as the root and the AnkleDummy as the last child. Leave the toes and foot boxes UNparented to anything. The basic chain is: AnkleDummy->Box04-LowerLeg->Box03->UpperLeg->Box02-HipSocket->Box01-Hips.

  5. Finally it's time to create the built-in MAX New IK bones. MAX has a nice feature called "auto-boning" that automatically takes a pre-existing hierarchy, creates an IK bone system based on it, and links the original bones to the New IK bones. (It's amazing what you get for a few thousand dollars.)

    Click on the "Create Panel", choose "Systems" and then from the standard dropdown listbox choose "Bones". Leave all the defaults as is (everything checked except for 'Assign to Root'), and then click the "Pick Root" button.

    Then, click on the smaller Box02-HipSocket bone. This is the second bone in the list. Note: do not choose the regular top Hips as the root of the chain. We want the IK chain to start one bone down in the hierarchy. MAX will automatically generate the New IK bone structure as shown.

  6. To see how this works so far, choose the "Select and Move" tool and try moving the bottommost yellow IK bone (bone04). As you do this the leg rotates in a rather unpredictable manner, but you can see that IK is in fact starting to work. All that's left now is setting up the proper hierarchy, and limitations or constraints for each segment. Make sure you undo any movement changes you create by test moving bone04.

    To begin with, select the topmost yellow IK bone, Bone01. Parent this to the purple Box02-HipSocket block. Then parent the Box02-HipSocket bone to the topmost red Box01-Hips bone. That way, you can animate the Hip bone to move the torso of the character around.

    Next unlink the AnkleDummy. By default it is parented to Bone04. We are unlinking it because we will use it as a parent for Bone04's "end effector". In order to do this, it has to be unparented from the hierarchy itself.

  7. Before we continue, one other word of warning. The way MAX draws these yellow New IK bones might seem backwards to some people. That is, the long line of the length of the bone points backwards from the tip. (This is the opposite of Lightwave where the base is wider and then it points forward). As a sample, select the upper or lower leg block bones. Then hit the "Page Up" button to select the New IK parent of it. You will see that what it is parented to might appear to be the bone above it in the IK hierarchy. However in actuality, the diamond shape is the root of the bone, and the stem points back towards the parent getting larger as it does. At least, that's one way to think of it, if you come from another package where visually this might confuse you. Don't ask me why it works this way, I have no idea.

  8. The first step in setting the constraints is to set some global values for this IK chain. Select the last IK bone, Bone04. Then bring up the motion panel in MAX. You will notice that this has a number of options and settings. All the settings here are global to the current IK chain and not just the selected bone, EXCEPT for the "End Effectors" section and items below that.

    Under "Threshholds" change both the Position and Rotation values to 0.0. This value determines how close MAX will try to get when calculating the IK solution. Larger values are quicker, but more coarse. A value of zero is as exact as you can get.

    Under "Solutions", change the "Iterations" to 100. A value from 100 - 500 or higher will yeild a more stable IK solution, but once again it gets slower as it gets more exact.

    Change the "End Time" to be a large frame number outside of the end of your animation. I usually make it several thousand. Any frame after this number, and IK will magically (or not so magically) stop working. All you have to do is to select the frame range you want IK to work for in your animation. By making this a nice high value, you won't have to worry about your animation being too long.

    Finally, click the "Lock Initial State" checkbox under "Initial State". This tells MAX that the current orientation and setup is the base pose for the hierarchy, and helps it in its calculations. Plus, it's fun to click on little boxes.

  9. Next we want to create and link the end effectors for each IK bone. End effectors are like magnets that either pull the end of an IK bone towards itself (Position End Effectors), or tell the IK bone to orient to the same orientation as it (Rotation End Effectors).

    By default, the last bone in the hierarchy already has a Position end effector created. Using the 'Create' and 'Delete' buttons in the IK rollout, you can create or delete end effectors for the bones. In order to easily move/rotate the end effector controls, which is what really makes the IK chain pose and animate, you can link the end effectors to any object. (Remember we mentioned earlier that position effectors are relative and rotation effectors are absolute. So it doesn't matter if the AnkleDummy is in the exact position or not of the last bone since we'll be using only a [relative] position constraint.)

    Make sure Bone04 is selected, and press the "Link" button. Then click on the AnkleDummy. The name appears as the "End Effector Parent". If it doesn't allow you to select the AnkleDummy, it means you forgot to unparent it in a previous step. If that happens, just turn off the link button, and unlink the AnkleDummy, then try again.

    As a test, you should now be able to select the AnkleDummy object and move it around to control the location of the end of the leg. If you pull too far you'll see a blue cross hair which is actually the real end effector of Bone05. Make sure you undo any movement changes before proceeding.

  10. At this point all we need to do is to limit the rotation of the bones to certain angles. For example in real life, the lower leg can't rotate forward (unless you're a bird). To set this up, switch to the "Hierarchy Panel" and choose the "IK" subsection. This brings up options for IK constraints for MAX's new and other IK systems.

    There are two important sections in this rather long panel that are used with New IK. First, is the "Object Paramters" rollout with the Position and Orientation settings. Under these is an item called "Weight" which defaults to 1.0. Changing this value changes the relative amount of pull each end effector has relative to other end effectors in the hierarchy. Higher values mean the end effector is stronger than others that might be pulling in the opposite direction. Because it's relative, the actual numbers don't mean anything except in relation to each other. (i.e.: 100 to 50 is the same as 1 to 0.5 is the same as 4 to 2).

    The other section used here is the "Rotational Joints" rollout. (No, this does not mean it tells you how to roll a joint...) This area allows you to select which axis bones can rotate on, and to setup limits for the angles they can move through. Using these options, we can stop the lower leg from rotating funky ways.

  11. We'll work our way up the chain, so make sure Bone04 is selected again, the last IK bone. There's nothing actually parented to this bone, but it's position at the end, determines how close the end of the leg comes to the foot. This is pretty critical, so we want a nice high weight for it. Under the "Position" group, change the weight to 200.

  12. Next select Bone03. This is the bone the LowerLeg box is actually parented to, though it appears to go through the upper leg.

    Go down in the panel to the "Rotational Joints" rollout. By default all axis are checked active. However, the lower leg should only rotate on the local X axis. (You can determine which axis to use by choosing rotate in parent mode and also by noting that the bone orientation is the same as world coordinates since we reset transforms earlier).

    So, uncheck the active buttons for the Y and Z axis. Now we also want to limit the amount that the lower leg can go so it doesn't bend forward, or backwards, too much. Click the "Limited" checkbox under the X-Axis, and then set the From and To values to be 3 and 170 respectively. The 3 value allows for the leg to never totally lock up and the 170 is almost a full leg bent value. You can see the range visually as you drag the slider by looking in a right or left viewport. An orange arc appears showing the range of motion.

    Setting up the rotational limits like this is one of the reasons to have the hierarchy in a nice straight line. The limit numbers are based relative to the bones parent. If the child is rotated in it's base pose some funky way, you get get gimbal lock problems, and it can be difficult to setup the limits. One solution is to set everything up in a straight line as we are doing. Another, is to add an extra dummy (and hence IK segment) with the same orientation as the child that is having rotation problems, inbetween the parent and child. This extra segment would cancel out the offset rotation of the original parent since it's inbetween, allowing you to easily set the rotational limits for the real child bone.

    Finally, also under the X-Axis, check "Spring Back" and set the value to 5 and the Spring Tension to 0.3. This also helps to keep the leg from locking up.

    Now then, if you just did all of this, chances are the upper leg probably just rotated all funky. Don't despair, this is because we haven't constrained it yet. What we want to do is to stop the upper leg from being able to spin by itself which is the next step...

  13. Select Bone02. This is the bone appearing to run through the HipSocket block. What we want to do is to stop this bone from spinning on it's length. This will allow us to use the parent of the IK chain, the Box02-HipSocket bone to control upper leg spin. That makes the knee orientation much more precise and controllable.

    Select Bone02. Uncheck the Active box for the Z-Axis. The leg should orient back to a more normal pose.

  14. As just mentioned, we will be using the Box02-HipSocket bone to control the spin of the upper leg. This allows you to use IK to get the leg to bend, but to still have control over the knee location (i.e.: if you bend you legs and squat, do you want the knee pointed inwards or outwards?). This works by spinning the bone on the local Z axis.

    However, you will probably want the knee NOT to inherit the spin of the hips, but to still inherit the other axis. To do this, select the Box02-HipSocket bone. Then, still in the Hierarchy Panel, choose the "Link Info" panel. Under the "Inherit" rollout, turn OFF the Z axis.

    In addition, we want this bone to ONLY rotate on it's Z axis. From the top "Locks" section, turn on the X and Y Axis, so that it is only allowed to rotate on Z. This makes it easier to animate in case we accidentally try to rotate it on another axis.

  15. At this point the leg section of the IK hierarchy is complete. Try moving the top Hips bones. The ankle area stays locked to the AnkleDummy. You can also move the AnkleDummy and the hips stay as the legs bend. Finally you can rotate the KneeDummy on any axis to get the upper leg and knee oriented the way you want. This is important both for cases where the hips and feet are close together, as well as simply when bending the leg and getting the upper leg to rotate inwards or outwards.

    Playing Footsy

    The leg works great, but the foot is still non-existant.

    The FK foot here is very simple and easy to both setup and use. However it has the caveat that the leg/ankle will pull away from the foot if it moves too far away. On the other hand, the foot is always perfectly locked. For the most part, you can just pay attention to posing your character so the foot is within range, so it's not a big deal. The remaining steps will complete the IK Leg and FK Foot setup.

  16. The first thing to do is to set the pivot point for the foot to be at the ball instead of at the heel. Select the Box05-Foot bone, and on it's local Z-Axis, rotate it exactly 180 degrees (you can do this by rotating it 180 degrees in the top viewport). It should now be oriented the wrong way from the ankle. Next, move the foot back over so that it is in the correct place, with the local pivot point now by the ball of the foot.

  17. Next create a dummy object called FootDummy. Position it at the heel of the foot. It doesn't really matter if you make it in front view or not, but it's probably not a bad idea to get in that habit. Make this dummy a bit larger than the AnkleDummy.

  18. Link the Box06-Toes, and the Box05-Foot bones to the FootDummy.

  19. Next, select and link the AnkleDummy to the Box05-Foot bone.

How it Works - The IK Leg / FK Foot

You can take the FootDummy, and both move and rotate it to adjust and animate the entire foot. You can rotate the Box05-Foot bone itself, which has the effect of keeping the toes planted, but allowing the heel to come up.

You can also rotate the Box06-Toes bone which keep the foot steady but rotates the toes. As a whole the foot remains perfectly stable, though if the FootDummy or Hips move too far, they will pull apart. Still, this is my personally favored foot setup.

In addition you can move and rotate the hips or root of the character. The HipSocket bone is spun on it's local Z axis to control the placement of the knee/upper leg.

That's it. This is a very stable and usable IK leg setup for MAX.

Stop Pulling My Leg - IK Leg and Seamless IK Foot

In this section we'll build an IK foot setup that remains locked at the ankle. This setup is a bit more complicted to create and animate, but it uses the same principles as the setup above. The steps below in many cases are identical to the ones above for the leg itself. However, there are a number of differences to the initial hierarchy itself and of course an entire new section for the foot.

  1. Once again, we'll start from a regular FK hierarchy. You can download the IK Tutorial ZIP File (iktutfiles.zip) that I used for this tutorial. The FK MAX file features several boxes linked together to create a leg, each parented to the one above it.

    Some important notes about this setup. First, besides the upper and lower leg bones, and foot and toe bones, there is a Hip bone. In between the hip bone and the upper leg bone is a "socket" bone. This is just another bone in the chain and is needed (once again) to control the knee placement. In addition, it helps to have everything lined up in a straight line for setup.

  2. The next thing to do is to Reset Transform the bones in the hierarchy. This is important. The reason for doing this is that we are going to create IK bones with the same orientation of the bones here.

    Reset transform insures you won't get any skewing of the bones when you rotate them, as might happen if they were non-uniformly scaled. It also helps to have the axis of each bone aligned the same to make rotation limits easier to setup.

    Finally, because we'll be making a rotation constraint here, we need to make the dummy and the bones have the EXACT same orientation. The easiest way to do this is to make sure everything has it's transform reset, and that the dummy is created in the Top viewport. The way to think of it is that linking position end effectors is relative, while rotation end effectors are always absolute. We'll deal with this again later on.

    Due to the way reset transform works, you should first unlink everything in your hierarchy. In addition we will be making a few additions/changes to the hierarchy, so unparenting is a good idea anyways.

    So, select all the bones, and hit unlink. From the utility panel, choose "ResetXForm" and click the "Reset Selected" button. Alternatively you could apply an X-Form modifier to each bone one at a time, but this is quicker. Next, in order to easily collapse the stacks of all the bones, apply an Edit Mesh modifier, turn off subobject mode, hit the Edit Stack button and "Collapse All".

    You should now have a bunch of unparented bones with their transforms reset.


  3. At this point we'll create some dummy's to be used for IK control and creation. Create 3 dummy's in the TOP VIEWPORT. Once again it's important that these dummy's (well actually in this case just the AnkleDummy) is aligned to world coordinates for the reasons described above.

    Create a dummy at the base of the leg, called AnkleDummy, one at the ball of the foot called BallDummy, and the last at the tip of the toes, called ToeDummy.

  4. Now we relink the hierarchy so that we can use MAX's "Auto-Bone" feature to make the bones. In this case, we link everything as you might expect, except we leave the BallDummy UNparented to anything. So link as follows: ToeDummy->Toes->Foot->AnkleDummy->LowerLeg->UpperLeg-> HipSocket->Hips. With the hips being the parent of the entire chain.

  5. Now it's time to create the built-in MAX New IK bones. MAX has a nice feature called "auto-boning" that automatically takes a pre-existing hierarchy, creates an IK bone system inside it and links the original bones to the correct New IK bones.

    Click on the "Create Panel", choose "Systems" and then from the standard dropdown listbox choose "Bones". Leave all the defaults as is (everything checked except for 'Assign to Root'), and then click the "Pick Root" button.

    Then, click on the smaller Box02-HipSocket bone. This is the second bone in the list. Note: do not choose the regular top Hips as the root of the chain. We want the IK chain to start one bone down in the hierarchy. MAX will automatically generate the New IK bone structure as shown.

  6. Next, we relink some of the bones and dummys in order to get things setup for linking the end effectors and for animation. Select the ToeDummy and hit Unlink Selection to unparent it. We will use this as an end effector for the last IK bone, and in order to link it, it must be unparented first. Also unlink the AnkleDummy.

    Also, select Bone01, this is the first bone in the New IK bone structure, and link it to the Box02-HipSocket block. Then link the HipSocket to the Box01-Hips bone. This way you can animate the hips block of the character.

    In fact, you can now test this by moving the hips block around. As you see there's IK, but it doesn't quite work. The leg doesn't really bend correctly or enough and the foot goes all over. We need to set some constraints up to limit rotations and to get bones to lock to certain places.

  7. The first thing we will do is setup the leg. This entire section is essentially the same as what was done for the FK foot version above. We'll configure the basic IK settings, limit the leg rotation, and set the HipSocket to control the knee.

    To start, select Bone04 (or any other yellow New IK bone) and go the Motion Panel. Change the Position and Rotation thresholds to 0 and set the Iterations to 500. Lowering the position and rotation thresholds make the IK solution more precise, as does raising the iterations. Both also cause it to slow down. One thing you can do is to lower the iterations to a smaller value when animating, the raise it back up again when doing the final render.

    Also, set the End Time to a nice high value like 4000 frames, so that the IK doesn't suddenly stop working before the animation is done. Finally, click Lock Initial State to tell MAX this is the base pose of the setup.

  8. Now make sure Bone04 is selected, this is the bone that appears to be running through the lower leg. Still in the motion panel, we'll create a position end effector so that this bone is pulled to the ankle. Go down to the bottom of the panel, and under the "End Effectors" group, click the "Create" button for the "Position" effector. Then choose "Link" and click on the AnkleDummy.

    If it doesn't let you click on the AnkleDummy, it means you forgot to unlink it in an earlier step. If that happens, simply turn off the link button, select the AnkleDummy and unparent it, then reselect Bone04, and link the end effector to the dummy via the motion panel.

  9. Now make sure Bone04 is still selected. Go to the "Hierarchy Panel" and choose the "IK" subpanel. We'll set the weight for the position constraint to be 200. This gives this IK bone more pull relative to the other bones, so that it always tries to hit the ankle end effector.

  10. Now select Bone03. This is the bone the lower leg is actually parented to, though it appears to run through the upper leg. Still in the Hierarchy Panel, IK section, turn of the rotation for the Y and Z axis. This will limit the lower leg to rotate only forward and back. Then, turn on Limited mode for the X axis, and set the range to be 3 to 170. Also set Spring Back to on with a value of 5.0, and Spring Tension to 0.3. All of this helps to keep the leg from locking up. The range, as shown by an orange arc, limits the motion of the lower leg so it doesn't rotate at incorrect angles.

    Turn off the Activve boxes for the Y and Z axis.

  11. Select Bone02. This is the bone appearing to run through the HipSocket block. What we want to do is to stop this bone from spinning on it's length. This will allow us to use the parent of the IK chain, the Box02-HipSocket bone to control upper leg spin. This method, makes the knee orientation much more precise and controllable.

    Select Bone02. Uncheck the Active box for the Z-Axis. Leave the X and Y axis active.

  12. As just mentioned, we will be using the Box02-HipSocket bone to control the spin of the upper leg. This allows you to use IK to get the leg to bend, but to still have control over the knee location (i.e.: if you bend you legs and squat, do you want the knee pointed inwards or outwards?). This works by spinning the bone on the local Z axis.

    However, you will probably want the knee NOT to inherit the spin of the hips, but to still inherit the other axis. To do this, select the Box02-HipSocket bone. Then, still in the Hierarchy Panel, choose the "Link Info" subpanel. Under the "Inherit" rollout, turn OFF the Z axis.

    In addition, we want this bone to ONLY rotate on it's Z axis. From the top "Locks" section, turn on the X and Y Axis, so that it is only allowed to rotate on Z. This makes it easier to animate in case we accidentally try to rotate it on another axis.

    At this point the leg is set up. You can try moving the top Hips bone and rotating the HipSocket bone to control the leg. However, the foot does all sorts of odd rotations. Make sure you undo any changes you make by test moving the hierarchy before continuing on. Don't worry if some of the foot bones are at odd rotations for right now.

    One foot, two foot, red foot, blue foot

  13. To set up the foot, we will basically constrain each IK bone. The toes will use the ToeDummy, as an end target, and the BallDummy to control the rotation. Then the foot itself will be constrained via the AnkleDummy to get the position and rotation. Finally, through some creative parenting and a cople more dummy objects, we'll be able to get a nice controllable foot.

    We'll start by making our end effectors, and linking them to the dummy objects. Select Bone07. This is the last New IK bone going through the toes. Go to the Motion Panel. Because this is the last bone in the chain, a position end effector was already created by default. Click the "Link" button in the motion panel, and then select the ToeDummy.

  14. Select Bone06, this is the bone Box06-Toes is actually parented to though it appears to run through the foot. Click "Create" to make a "Position End Effector" for this bone. Then select "Link", and set it's parent to be the BallDummy.

  15. Now select Bone05. This is the small yellow IK bone between the AnkleDummy and the Foot. Create BOTH a Position and Rotation end effectors. Then choose "Link" and set the parent to be the Ankle Dummy. If something pops into the wrong rotation at this point, or jumps, it means that your AnkleDummy wasn't created in the same orientation as the IK bone (ie: not in top view). If that happens, you'll need to orient your AnkleDummy correctly. Hopefully, that won't happen if you followed all the directions above.

  16. Now you may notice the foot is still somewhat messed up. We need to constrain certain bones to rotate in only certain axis, namely, the toes can only rotate up and down. In addition, we need to set proper weights for the bones.

    Go to the Hierarchy Panel, and choose the IK subpanel. Select Bone06. This is the bone that is actually the parent of the toes, but appears through the foot. Becaue the toes can only rotate on the X axis, turn off the "Active" boxes for the Y and Z axis down in the "Rotational Constraints" rollout, but leave the X axis active.

    In addition, set the Position weight to 50.

  17. Now reselect Bone05. The small bone between the ankle and foot. Set the Position weight and Rotation weight to be 100. This gives more precedence to getting the ankle in the right place, but the 50 for the ball is still strong enough to make sure that works too. Note that these weights for the foot and ball are pretty critical. Changes can make this setup not work so well.

  18. Now at this point everything is constrained correct. But what is missing is some extra controls to actually animate everthing in an orderly fashion. In addition, the foot may be at a slightly odd angle. This has to do with not neccesarily having the dummy objects perfecly lined up and the bones not perfectly lined up.

    What we should do is to select the bones and nudge them a little bit to make the foot flat. You can select and rotate the ankle dummy if needed on the local Y axis to get the foot flat. If the toes are slightly bent, move the ToeDummy a little to make them flat.

    You should have a flat foot as shown.

  19. The final steps are to create some control dummies, and to link everything together, so that we can easily animate the foot, heel and ball.

    Create 2 dummys in the top viewport. Create a larger one called FootDummy at the same location as the ankle. Create a dummy called HeelDummy, at the same location as the BallDummy, but a bit larger.

  20. Now we will constrain the BallDummy and HeelDummy to only rotate along their X Axis. This is because the toes can only rotate up and down. Go to the "Hierarchy Panel" and choose the "Link Info" subpanel. Select the BallDummy, and turn on the Rotate Locks checkboxes for the Y and Z Axis. Do the same for the HeelDummy.

  21. Finally for the creative linking. Link the ToeDummy to the BallDummy. Link the AnkleDummy to the larger HeelDummy. Then, link both the HeelDummy and BallDummy to the FootDummy. Congratulations, it's done.

How it Works - The IK Leg / IK Foot

This setup is considerably more complicated looking around the foot area, but actually it operates in much the same manner as the FK foot setup. You can rotate the BallDummy object to rotate the toes. Because it's constrained to the X axis, you don't have to worry about rotating it odd ways. This is basically identical to rotating the toes themselves in the FK setup.

You can rotate the HeelDummy on the X axis in order to keep the ball planted and raise the heel. This is similar to rotating the Foot in the FK version. For the entire foot, select and then move or rotate the FootDummy.

You can also rotate and move the Hips block at the top itself, and spin the HipSocket bone to set the knee location/upper leg orientation.

Walking Away

That's the basics of setting up a leg with MAX's "New IK". You can take the same principles here and apply it to an arm setup. Instead of a Knee rotation constraint, you'd have an Elbow position constraint (you could try a rotation effector for the elbow, but usually the position type works better). Instead of an Ankle position effector, you'd have a wrist position effector. In addition, you could add one extra segment and effector into the hierarchy for the shoulders if you wanted them IK'd.

My personal preference is still a broken foot or hand hierarchy with FK. That way you get perfectly stable locking, a little slack if you want it, and it's really easy to control and animate. Whatever you choose, have fun, and IK away!

Special Thanks

Special thanks to Michael Brown for helping me deal with a lot of IK issues, questions, and for figuring out MAX's lovely rotation constraints. He gets a big Kit-Kat. Special thanks to Ken Morton for suggesting the knee control method without using a knee effector. (I guess this idea initially comes from Rick May of the CG-Char List. Also, special thanks to Steph Greenberg for writing his Animation Master IK tutorial in Doug Kelly's Character Animation In Depth book. The MAX tutorial I wrote in that book was my very first MAX IK setup based on his AM version.

About the Author

Michael Comet is currently a Rigger/T.D. at Blue Sky Studios in New York. Previously he was Video Team Lead Rigger and CG-Supervisor and a 3D/Animator/Artist at Big Idea in Lombard, IL where he is worked on 3-2-1 Penguins and Veggie Tales. Prior to that he was lead animator at the video game company Volition, Inc., where he animated most of the cinematic sequences for Descent: Freespace, and headed up much of the realtime character animation and cinematics for their RPG title, "Summoner". He can be reached via email at comet@comet-cartoons.com, and has a personal homepage at: http://www.comet-cartoons.com/ which has more information and samples of his work

About the Sample Images

This article, all images and text is Copyright ©1999 Michael B. Comet All Rights Reserved.

This article may be reprinted for personal use only. It may not be packaged or sold in part or in whole, either alone or as part of another package, book, magazine or any other item. Unauthorized duplication is strictly prohibited. This article and related artwork, samples or text, are not to be copied onto other sites without prior written consent from the author. When in doubt, ask.