Game Development Reference
3D Rigid-Body Simulator
In this chapter we'll show you how to make the leap from 2D to 3D by implementing a
rigid-body simulation of an airplane. Specifically, this is a simulation of the hypothetical
airplane model that we'll discuss extensively in Chapter 15 . This airplane is of typical
configuration with its large wings forward, its elevators aft, a single vertical tail, and
plain flaps fitted on the wings.
As with the 2D simulator in previous chapters, we'll concentrate on the code that im‐
plements the physics part of the simulator and not the platform-specific GUI aspects of
As in 2D, there are four main elements to this 3D simulation—the model, integrator,
user input, and rendering. Remember, the model refers to your idealization of the thing
—an airplane, in this case—that you are trying to simulate, while the integrator refers
to the method by which you integrate the differential equations of motion. These two
elements take care of most of the physics of the simulation. The user input and rendering
elements refer to how you'll allow the user to interact with and view your simulation.
In this simulation, the world coordinate system has its positive x-axis pointing into the
screen, its positive y-axis pointing to the left of your screen, and the positive z-axis
pointing up. Also, the local, or body-fixed, coordinate system has its positive x-axis
pointing toward the front of the airplane, its positive y-axis pointing to the port side
(left side), and its positive z-axis pointing up. Since this is a 3D simulation of an airplane,
once you get it running, you'll be able to fly in any direction, looping, banking, diving,
and climbing, or performing any other aerobatic maneuver you desire.
One of the most important aspects of this simulation is the flight model. We'll spend all
of Chapter 15 discussing the physics behind this flight model, so we won't include that
discussion here except to introduce a few key bits of code.