Game Development Reference
In-Depth Information
Figure 9.1 Using an IK solution to make a character's hand reach a goal.
chain in order that the end effector reaches the goal. Most of the study of
this problem stems from robotics. In the car industry, robot arms have
been used for many years to do repetitive jobs on a production line. Spot
welding is a good example. The position of a required weld is known to a
high degree of accuracy because the bodywork is on a conveyor belt and
the relationship between the car body and the robot arm can be carefully
measured. Since the car design is also known to a high degree of
accuracy, the location of, for example, 12 weld points along a seam can
be plotted in world locations. The problem the engineers were left with
was how to position the spot welder on the end of a robot arm in these 12
positions. This is just the same problem we have when positioning our
virtual characters, only this time the problem has a real world setting.
Robot arms can be moved using pneumatics, d.c. servos or stepper
motors. Each joint can be rotated in one or more directions. A single joint
that rotates in the heading, pitch and bank is described as having three
degrees of freedom (3 DOF). For an object to be completely free moving,
it must have six degrees of freedom (6 DOF). This is achieved by allowing
translations in addition to rotation. Most robot arms are fixed at the base,
so they have three degrees of freedom. For this reason they cannot
always achieve a goal. The engineers have to ensure that the relative
positioning of the car body in relation to the robot is such that the targets
can all be reached. There are numerous papers on techniques to derive
the orientation of the links in the chain based on a target location, a few
of which are mentioned in Appendix C.
Calculating the orientation for a single link IK chain
Before we explore more complex solutions we will look first at the simplest
possible case, an IK chain consisting of a single link. In the 2D version of