Computer Graphics: Programming, Problem Solving, and Visual Communication

Post on 25-Jan-2016

32 views 0 download

Tags:

description

Computer Graphics: Programming, Problem Solving, and Visual Communication. Steve Cunningham California State University Stanislaus and Grinnell College PowerPoint Instructor’s Resource. Viewing and Projection. Making an image from a scene. Creating an Image from a Scene. - PowerPoint PPT Presentation

transcript

Computer Graphics:Programming, Problem Solving,

and Visual Communication

Steve CunninghamCalifornia State University Stanislaus and Grinnell College

PowerPoint Instructor’s Resource

Viewing and Projection

Making an image from a scene

Creating an Image from a Scene

• Computer graphics has three main functions– Modeling, where you define a scene– Viewing and projection, where you define

how the scene is to be seen– Rendering, where the model and view are

translated into an image

• In this chapter, we assume a scene has been modeled and we discuss how you define the way it is seen

Two Main Parts

• There are two main parts of defining how a scene is to be seen

• Viewing, where you place the observer in the scene

• Projection, where you specify how the observer’s view is created

• This chapter covers both parts

This is Part of the Geometry Pipeline

• Modeling creates the scene in world coordinates, and this chapter covers the part of the pipeline shown here

Specifying a View

• To specify an image, you place the observer in the world with specific information– The location of the observer– The direction the observer is looking– The orientation of the observer– The breadth of field of the observer– The aspect ratio of the observer

• The first three of these are viewing; the last two are part of projection– For the projection part, the observer must be looking

through some sort of frame

Two Similar Views

• Half dome from the valley floor

• Half dome from the Glacier Point lookout

These Half Dome Views…

• Are from different viewpoints

• Are looking in slightly different directions

• Have slightly different field of view– Valley floor is narrower (more zoomed in)– Glacier Point is wider (more zoomed out)

• Have the same orientation (conventional up direction) and aspect ratio (1:1)

How Do We Specify a View?

• There are two parts to the specification

• The viewing specification places the observer

• The projection specifies the frame

• Most graphics systems, including OpenGL, have you specify them separately because they operate independently

A Viewing Example

• A view of world space that includes a model and an observer

• The view of the object in the world as seen by the observer

For Viewing, You Define…

• The eye point, which is the position of the observer

• The “look-at” point or view reference point, which defines the direction the observer is looking

• The up vector, which defines the orientation of the observer (in world space)

The Standard Viewing Model

• The eye coordinates are left-handed!

• You specify the eyepoint• You specify the view

reference point, giving you the z-direction

• You specify the y-direction with the up vector

• The x-direction is computed as a cross product

For Projection, You Define…

• The type of projection– Perspective– Orthographic

• The width of your viewing space

• The height of your viewing space OR the aspect ratio of your viewing space

• The front and back of your viewing volume

Perspective or Orthographic?

• Perspective view • Orthographic view

Perspective or Orthographic (2)

• Perspective views are more realistic (see the figure)

• Orthographic views are standard in some engineering areas and give you accurate relative measurements

Types of Perspective

• One-point– Two coordinate directions

parallel to view plane

• Two-point– One coordinate direction

parallel to view plane

• Three-point– No coordinate direction

parallel to view plane

View Volumes

• The region in world space that is seen with perspective (left) or orthographic (right) projections

View Volumes in a Scene

Clipping on the View Volume

• Clipping is the process of determining what lies outside the view volume and removing that before it is processed

• Six clipping planes to the left, right, top, bottom, front, and back of the volume

Clipping…

• Removes objects that lie entirely outside the volume (e.g. some of the trees)

• Reworks each object that lies partly in and partly outside the volume

• Line segments (left) or polygon (right)

Field of View in Perspective Projections

• Acts like defining the focal length of a camera -- wide angle (left) to telephoto (right)

Drawing to a Viewport

• A viewport is a rectangular region in the window to which you can draw

• Default viewport is the entire window

• You can define a smaller viewport so all drawing is restricted to that region

• You can use separate modeling for each viewport

Mapping to Screen Space

• The final step in the geometry pipeline is mapping the image to screen space

• The points in the viewing volume are projected to the viewplane at the front of the volume

• This converts them to 2D points in the space

Mapping to Screen Space (2)

• The points in the 2D real space are then converted to 2D integer space by a simple proportional process, followed by a roundoff

• These 2D integer points are vertex coordinates in the screen

• Now ready for the rendering process

Managing the View:Hidden Surfaces

• An understandable 3D image scene needs to show some things in front of others

• A graphics program simply draws things as you define them

• You need a way to keep track of things in depth order

Managing the View:Hidden Surfaces (2)

• One way is for you to keep track of the depth of each object and draw them back to front (farthest to nearest)– This is the Painter’s Algorithm

• A graphics system can provide a way to keep track of things in depth order

• Depth buffering tracks this for each pixel and only shows those that are in front

Managing the View:Double Buffering

• Your program draws the objects you define one by one– It can take some time for the image of a

complex scene to be drawn

• In order to show only the completed scene, you can use double buffering

• The image is drawn to the back buffer and then this is swapped to the front buffer for display

Managing the View:Stereo Viewing

• There are a number of ways to get a stereo view, but one is easy to do at this point

• Divide your window into two viewports• Draw a scene twice in the separate viewports

with eye points approximating a viewer’s eye locations

Viewing and Projection in OpenGL

• How you define a view

• How you define a projection

Viewing

• Default view has the eye at the origin, looking at the point (0, 0, -1), with the up vector the y-axis

• You can change this with the functions glMatrixMode( GL_MODELVIEW );glLoadIdentity();gluLookAt( eyex, eyey, eyez, lookatx, lookaty, lookatz, upx,upy,upz )

• There are times when you will want to use the default view

The Perspective Projection

• Default OpenGL approach is through the glFrustum function; this is difficult

• More usual approach is through the functions

glMatrixMode(GL_PROJECTION );glLoadIdentity();gluPerspective( view_angle, aspect_ratio, front, back );

The Orthographic Projection

• The orthgonal projection uses a much simpler view volume and is defined by specifying that volume

glMatrixMode( GL_PROJECTION )glLoadIdentity()glOrtho( left, right, bottom, top, near, far )

Other Features

• glutInit(GLUT_DEPTH | GLUT_DOUBLE …)

• Depth testing– glEnable(GL_DEPTH_TEST)

• Double buffering– glutSwapBuffers()

• Stereo viewing– draw into separate viewports that enable

eye conversion– other techniques discussed later