Viewing in 3D
Introduction
Interactive graphics systems such as OpenGL send coordinate data provided by the programmer through a series of transformation and other processes. A cursory overview of the initial portion of this process can be summarized as follows.
- Coordinate data is assumed to be defined in a local "modeling" coordinate system. Conceptually, a programmer is defining a component, one or more copies of which are to be placed in various locations in the model. A wheel, for example, may be placed four times on the model of a car. So-called "modeling transformations" are used to place each such instance. This process may be nested; e.g., we may place multiple cars on a road, multiple roads in a city, etc. In the end, the concatenation of all these transformations results in the definition of our model in the "world coordinate system".
- To create an image of our model, we need to tell the system something about how we are viewing our world coordinate geometry. Typically this involves specifying the location of the viewer, the general line of sight, and an orientation (or "up") vector. These data define a transformation from world coordinates into the so-called "eye coordinate system" in which the viewer is at the origin and looking in the negative z direction.
- Once the model geometry has been transformed to eye coordinates, other viewing operations (e.g., planar projections and visible surface determination) are performed. We will see more of those operations later.
To understand projections in general and stereo projections in particular (the real focus of these notes), we need to flesh out the "view orientation" portion of this process a little more completely. The remainder of this section assumes we have our model defined in world coordinates and then examines the process of converting that description into an eye coordinate description.