Viewing - California State University Stanislaus

Download Report

Transcript Viewing - California State University Stanislaus

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 • 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

observer specification places the • 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