This lesson begins with definition of kinematics, and a joke about reverse kinematics. Kinematics is the study of motion. Forward kinematics deals with how a system moves, and the results of that motion. Inverse kinematics starts with a result, and deals with how a system must have moved to go from an initial state to that result. In the book's terms, forward kinematics predicts how a child in a hierarchy moves when its parent moves. Inverse kinematics deduces how the parent (and its parent) must have moved to place a child in a specific position.
In general, all systems in real life behave this way. If I move my arm to turn a door knob, I will move the entire arm hierarchy through forward kinematics, ending with the fingers that turn the knob. If I grab a child's hand to pull it away from a hot stove, I am also imposing inverse kinematic movement on the child's arm.
The concept of a linked hierarchy is important. The text turns to building a linked system.
The text introduces the idea of a terminator, also called an end effector, a bone at which IK motion induced by a child stops. The text explains that you would not want a character's head to move if you pull its finger. Well, maybe. What if Batman bends the Joker's finger? You'd expect a full body reaction. What if the Hulk grabs a character's finger? Goes without saying, the whole body follows, or the finger comes off. The text is assuming a limited amount of force being applied, which would not be true in all animation. For some purposes, it will be useful to set auto termination to stop IK effects a set number of links from the child.
Joint Constraints - By default a joint is allowed to move through all axes. This is undesirable, for instance, for an elbow.
A joint configuration can be copied from one to another. Joints can be mirrored from one side of the body to the other as well.
Objects can be bound to other objects, making them follow the other object when it is moved. This may be more useful for objects that are not linked. The Unbind button cancels a binding.
Objects in an IK system can be given precedence values to determine the order in which objects are solved. (By solved, Mr. Murdock means that 3DS Max determines what to do with the hierarchy.) By default, joints are assigned a precedence of 0. The higher the number, the greater the precedence of the joint. If you click the Child to Parent button for an object, the root object in its hierarchy is assigned 0, and each child level of the hierarchy away from the root is incremented by 10 (10, 20, 30...). If you click the Parent to Child button, the root is still assigned 0, but each child level is decremented by 10 (-10, -20, -30...).
Exercise Notes and Questions
Work through the exercises and turn in your answers to all questions below as part of the homework for this assignment.
Tutorial 1 (Controlling a backhoe) :
The exercise above did not finish the tasks of adding IK to the backhoe. The text moves on to discuss the next steps, and builds toward another tutorial. The next thing we need for a linked chain of objects is an IK method. (Think of a method as a program logic module.) Two standard methods are listed: Interactive and Applied IK. The method used is linked to an IK Solver (more programming). Four solvers are listed: History Dependent (HD), History Independent (HI), IK Limb, and IK Spline.
Interactive IK is like keyframing. The next tutorial uses the Interactive IK method.
Tutorial 2 (Animating a simple IK propeller system):
The text continues by discussing Applied IK, which computes many more keys than Interactive IK. They are created by the IK system which is bound to one or more follow objects in the scene.
This takes us to the discussion of solvers. The text uses the phrase goal object to denote the object in a chain that you position in a frame. We are told that an IK solver can be used to calculate the position of all linked objects based on the position of the goal object. Again, the discussion becomes quite esoteric without an example. We should move on to the next tutorial.
Tutorial 3 (Animating a puppet with the HI IK solver):
The HI IK solver is History Independent, which means it makes calculations for each keyframe independently of any others (history). When you build a hierarchy, you can set an IK solver to start and end at any two objects in the hierarchy. This is not necessary when creating a bones system, since IK solvers are added to bones automatically.
The text says "to animate an alligator" on page 945. I suspect this is a typo from updating the book to a new edition. (To me, the puppet in this exercise looks like a Hawaiian petroglyph character of a human, not an alligator.)
The HD IK solver is History Dependent, which means that it considers each previous keyframe before calculating a solution for the current frame. It creates smoother motion than the HI solver, but it takes more computing time.
Tutorial 4 (Animating a spyglass with the HD IK solver:
The IK Limb Solver is meant to be used on arms and legs. It works on a chain of three bones. The first bone (e.g. a hip) is not meant to move, and the goal is set at the pivot point for the third bone. It assumes the first joint can rotate (like a hip or shoulder), and the second joint moves like a hinge (like a knee or elbow).
Tutorial 5 (Animating a character's arm with an IK Limb solver:
The last solver to consider is the Spline IK solver (or IK Spline solver), which is meant for tails. It could also be used for tentacles. It uses a long chain of bones and a spline for a path. Dummy objects are attached to control points on the spline to move the bones. To make this possible, you attach the Spline IK solver to the first and last bones in the chain, and to the spline.
Tutorial 6 (Building an IK Spline alligator: