⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter03.html

📁 OpenGl红宝书
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
   <META NAME="GENERATOR" CONTENT="Mozilla/4.07 [en] (Win98; I) [Netscape]">
   <META NAME="Author" CONTENT="Goran UnreaL Krajnovic">
   <TITLE>Chapter 3 - OpenGL Programming Guide (Addison-Wesley Publishing Company)</TITLE>
</HEAD>
<BODY BGCOLOR="#EFEFEF" LINK="#0000FF" VLINK="#551A8B" ALINK="#FF0000">

<DIV ALIGN=right><IMG SRC="figures/SGI_ID.gif" ALT="Silicon Graphics" NOSAVE HEIGHT=43 WIDTH=151 ALIGN=TEXTTOP></DIV>

<HR>
<H1>
Chapter 3<BR>
Viewing</H1>
<B>Chapter Objectives</B>
<P>After reading this chapter, you'll be able to do the following:
<UL>View a geometric model in any orientation by transforming it in three-dimensional
space
<BR>&nbsp;
<P>Control the location in three-dimensional space from which the model
is viewed
<BR>&nbsp;
<P>Clip undesired portions of the model out of the scene that's to be viewed
<BR>&nbsp;
<P>Manipulate the appropriate matrix stacks that control model transformation
for viewing and project the model onto the screen
<BR>&nbsp;
<P>Combine multiple transformations to mimic sophisticated systems in motion,
such as a solar system or an articulated robot arm</UL>
Chapter 2 explained how to instruct OpenGL to draw the geometric models
you want displayed in your scene. Now you must decide how you want to position
the models in the scene, and you must choose a vantage point from which
to view the scene. You can use the default positioning and vantage point,
but most likely you want to specify them.
<P>Look at the image on the cover of this book. The program that produced
that image contained a single geometric description of a building block.
Each block was carefully positioned in the scene: Some blocks were scattered
on the floor, some were stacked on top of each other on the table, and
some were assembled to make the globe. Also, a particular viewpoint had
to be chosen. Obviously, we wanted to look at the corner of the room containing
the globe. But how far away from the scene - and where exactly - should
the viewer be? We wanted to make sure that the final image of the scene
contained a good view out the window, that a portion of the floor was visible,
and that all the objects in the scene were not only visible but presented
in an interesting arrangement. This chapter explains how to use OpenGL
to accomplish these tasks: how to position and orient models in three-dimensional
space and how to establish the location - also in three-dimensional space
- of the viewpoint. All of these factors help determine exactly what image
appears on the sceen.
<P>You want to remember that the point of computer graphics is to create
a two-dimensional image of three-dimensional objects (it has to be two-dimensional
because it's drawn on the screen), but you need to think in three-dimensional
coordinates while making many of the decisions that determine what gets
drawn on the screen. A common mistake people make when creating three-dimensional
graphics is to start thinking too soon that the final image appears on
a flat, two-dimensional screen. Avoid thinking about which pixels need
to be drawn, and instead try to visualize three-dimensional space. Create
your models in some three-dimensional universe that lies deep inside your
computer, and let the computer do its job of calculating which pixels to
color.
<P>A series of three computer operations convert an object's three-dimensional
coordinates to pixel positions on the screen:
<UL>Transformations, which are represented by matrix multiplication, include
modeling, viewing, and projection operations. Such operations include rotation,
translation, scaling, reflecting, orthographic projection, and perspective
projection. Generally, you use a combination of several transformations
to draw a scene.
<BR>&nbsp;
<P>Since the scene is rendered on a rectangular window, objects (or parts
of objects) that lie outside the window must be clipped. In three-dimensional
computer graphics, clipping occurs by throwing out objects on one side
of a clipping plane.
<BR>&nbsp;
<P>Finally, a correspondence must be established between the transformed
coordinates and screen pixels. This is known as a <I>viewport</I> transformation.</UL>
This chapter describes all of these operations, and how to control them,
in the following major sections:
<UL>"Overview: The Camera Analogy" gives an overview of the transformation
process by describing the analogy of taking a photograph with a camera,
presents a simple example program that transforms an object, and briefly
describes the basic OpenGL transformation commands.
<BR>&nbsp;
<P>"Viewing and Modeling Transformations" explains in detail how to specify
and to imagine the effect of viewing and modeling transformations. These
transformations orient the model and the camera relative to each other
to obtain the desired final image.
<BR>&nbsp;
<P>"Projection Transformations" describes how to specify the shape and
orientation of the <I>viewing volume</I>. The viewing volume determines
how a scene is projected onto the screen (with a perspective or orthographic
projection) and which objects or parts of objects are clipped out of the
scene.
<BR>&nbsp;
<P>"Viewport Transformation" explains how to control the conversion of
three-dimensional model coordinates to screen coordinates.
<BR>&nbsp;
<P>"Troubleshooting Transformations" presents some tips for discovering
why you might not be getting the desired effect from your modeling, viewing,
projection, and viewport transformations.
<BR>&nbsp;
<P>"Manipulating the Matrix Stacks" discusses how to save and restore certain
transformations. This is particularly useful when you're drawing complicated
objects that are built up from simpler ones.
<BR>&nbsp;
<P>"Additional Clipping Planes" describes how to specify additional clipping
planes beyond those defined by the viewing volume.
<BR>&nbsp;
<P>"Examples of Composing Several Transformations" walks you through a
couple of more complicated uses for transformations.</UL>

<P><BR>
<HR>
<H2>
Overview: The Camera Analogy</H2>
The transformation process to produce the desired scene for viewing is
analogous to taking a photograph with a camera. As shown in Figure 3-1
, the steps with a camera (or a computer) might be the following:
<OL>Setting up your tripod and pointing the camera at the scene (viewing
transformation).
<BR>&nbsp;
<P>Arranging the scene to be photographed into the desired composition
(modeling transformation).
<BR>&nbsp;
<P>Choosing a camera lens or adjusting the zoom (projection transformation).
<BR>&nbsp;
<P>Determining how large you want the final photograph to be - for example,
you might want it enlarged (viewport transformation).</OL>
After these steps are performed, the picture can be snapped, or the scene
can be drawn.
<P><IMG SRC="figures/fig3-1.gif" ALT="[IMAGE]" >
<P><B>Figure 3-1 : </B>The Camera Analogy
<BR>&nbsp;
<BR>&nbsp;
<P>Note that these steps correspond to the order in which you specify the
desired transformations in your program, not necessarily the order in which
the relevant mathematical operations are performed on an object's vertices.
The viewing transformations must precede the modeling transformations in
your code, but you can specify the projection and viewport transformations
at any point before drawing occurs. Figure 3-2 shows the order in which
these operations occur on your computer.
<P><IMG SRC="figures/fig3-2.gif" ALT="[IMAGE]" >
<P><B>Figure 3-2 : </B>Stages of Vertex Transformation
<BR>&nbsp;
<BR>&nbsp;
<P>To specify viewing, modeling, and projection transformations, you construct
a 4 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -