Jack uses an inverse kinematics algorithm to solve several types of constraints that can be placed on articulated figures. These constraints generally require several parameters to be specified: a type (e.g. point-to-point, point to plane), an end effector site, the joint chain that will be involved, and a weight, among others. We control the figure through the behavior functions associated with human figures in Jack. The various human behaviors operate by managing a number of constraints that are placed on the figure.
The system must first be calibrated to account for the operator's size. This can be done in two ways - the sensor data can be offset to match the model's size, or the model can be scaled to match the operator. Either approach may be taken, depending on the requirements of the particular situation being simulated. For motion recording, it is usually preferable to have the simulated figure scaled to match the operator. An ergonomic study of a vehicle, however, would require an arbitrary figure size; in this case, the sensor data would be offset as required.
Each frame of the simulation requires the following steps:
Figure 2: Extracting the Spine Target Vector
The spine target position is a 3 vector that can be thought of as the sum of the three types of bending the spine undergoes - front/back bending or flexion, twisting or axial bending, and side or lateral bending.
The waist sensor gives us orientation information for the base of the spine; information on the top of the spine is extracted from the head sensor via a heuristic. The target vector is computed from the differences between these two orientations. Lateral bending is found from the difference in orientation along the z axis, axial twisting is found from the difference in y orientation, and flexion is determined from the difference in x orientation (Fig. 2). Note that the ``front'' vectors in this figure indicate the front of the human. The target vector is sent directly to the model to simulate the approximate bending of the operator's spine.
We can optionally employ a collision avoidance technique at this point [13]. This system manages constraints on the human body to prevent body segments from intersecting each other. This process slows the simulation down somewhat, but it is a useful tool when maximum realism is required.