Game Development Reference

In-Depth Information

F
IGURE
14.5

Velocity-based resolution introduces apparent friction.

To move the objects back we need to keep track of the velocity and rotation of

each object before any collision resolution began. We can then use these values to

work out an equation for the path each contact point takes, and work out when they

first crossed over (i.e., when interpenetration began).

While this is a sensible strategy and can give good results, it has the effect of intro-

ducing additional friction into the simulation. Figure 14.5 shows an example of this.

The object penetrates the ground while moving sideways at high speed. The velocity-

based resolution method would move it back along its path as shown. To the user it

would appear that the object hits the ground and sticks, even if no friction was set for

the collision.

Nonlinear Projection

A third option, and the one I will employ in this chapter, is based on the linear projec-

tion method. Rather than just moving the objects back linearly, we use a combination

of linear and angular movement to resolve the penetration.

The theory is the same: we move both objects in the direction of the contact nor-

mal until they are no longer interpenetrating. The movement, rather than being ex-

clusively linear, can also have an angular component.

For each object in the collision we need to calculate the amount of linear motion

and the amount of angular motion so the total effect is exactly enough to resolve

the interpenetration. Just as for linear projection, the amount of motion each object

makes will depend on the inverse mass of each object. Unlike linear projection, the

balance between linear and angular velocity will depend on the inverse inertia tensor

of each object.

An object with a high moment of inertia tensor at the contact point will be less

likely to rotate, so will take more of its motion as linear motion. If the object rotates

easily, however, then angular motion will take more of the burden.

Figure 14.6 shows nonlinear projection applied to the same situation we saw in

figures 14.4 and 14.5. The result is still not exactly as it would be in reality, but the

result is more believable and usually doesn't look odd. Figure 14.7 shows the shallow