CS 543 - Computer Graphics:              Projection                                         by                            ...
Projection Transformation View volume can have different shapes   Parallel, perspective, isometric Different types of p...
Why is it Called Projection?                                         View planeR.W. Lindeman - WPI Dept. of Computer Scien...
Field of View Determine how much of the world is  taken into the picture Larger field of view = smaller object-  project...
View Frustum 3D counterpart of 2D-world clip window Objects outside the frustum are clipped                     Near pla...
gluPerspective( fovy, aspect, near, far )Aspect ratio is used to calculate   the window width          y               fo...
glOrtho( left, right, bottom, top,         near, far )For orthographic projection                                      to...
Projection Transformation Projection    Map the object from 3D space to 2D screen          y                            ...
Parallel Projection   OpenGL maps (projects) everything in      the visible volume into a canonical view      volume (CVV...
Parallel Projection: glOrtho(cont.) Translation sequence moves midpoint of view   volume to coincide with origin      e....
Parallel Projection: glOrtho()        (cont.)         Concatenating M1xM2, we get transform           matrix used by glOr...
Perspective Projection:Classical (cont.) So (x*, y*), the projection of point, (x, y, z)   onto the near plane N, is give...
Pseudo Depth Checking (cont.) Solving:                             aPz + b                      z* =                     ...
Perspective Projection Same for x, so we have      x’ = x * d / -z      y’ = y * d / -z      z’ = -d Put in a matrix for...
Perspective Projection (cont.) Not done yet! OpenGL also normalizes  the x and y ranges of the view frustum  to [-1, 1] (...
Perspective Projection (cont.) After perspective projection, viewing     frustum is also projected into a canonical     v...
Upcoming SlideShare
Loading in …5
×

Cs543 15 projection

353 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
353
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cs543 15 projection

  1. 1. CS 543 - Computer Graphics: Projection by Robert W. Lindeman gogo@wpi.edu (with help from Emmanuel Agu ;-)3D Viewing and View Volume Recall: 3D viewing set upR.W. Lindeman - WPI Dept. of Computer Science 2 1
  2. 2. Projection Transformation View volume can have different shapes  Parallel, perspective, isometric Different types of projection  Parallel (orthographic), perspective, etc. Important to control  Projection type: perspective or orthographic, etc.  Field of view and image aspect ratio  Near and far clipping planesR.W. Lindeman - WPI Dept. of Computer Science 3Perspective Projection Similar to real world Characterized by object foreshortening  Objects appear larger if they are closer to camera camera Need to define  Center of projection (COP)  Projection (view) plane projection plane Projection  Connecting the object to the center of projectionR.W. Lindeman - WPI Dept. of Computer Science 4 2
  3. 3. Why is it Called Projection? View planeR.W. Lindeman - WPI Dept. of Computer Science 5Orthographic (Parallel) Projection No foreshortening effect  Distance from camera does not matter The center of projection is at infinity Projection calculation  Just choose equal z coordinatesR.W. Lindeman - WPI Dept. of Computer Science 6 3
  4. 4. Field of View Determine how much of the world is taken into the picture Larger field of view = smaller object- projection size center of projection field of view (view angle) y y z θ z xR.W. Lindeman - WPI Dept. of Computer Science 7Near and Far Clipping Planes Only objects between near and far planes are drawn Near plane + far plane + field of view = View Frustum Near plane Far plane y z xR.W. Lindeman - WPI Dept. of Computer Science 8 4
  5. 5. View Frustum 3D counterpart of 2D-world clip window Objects outside the frustum are clipped Near plane Far plane y z x View FrustumR.W. Lindeman - WPI Dept. of Computer Science 9Projection Transformation In OpenGL  Set the matrix mode to GL_PROJECTION  For perspective projection, use gluPerspective( fovy, aspect, near, far ); or glFrustum( left, right, bottom, top, near, far );  For orthographic projection, use glOrtho( left, right, bottom, top, near, far );R.W. Lindeman - WPI Dept. of Computer Science 10 5
  6. 6. gluPerspective( fovy, aspect, near, far )Aspect ratio is used to calculate the window width y fovy y w z θ z h eye x Aspect = w / h near farR.W. Lindeman - WPI Dept. of Computer Science 11glFrustum( left, right, bottom, top, near, far )Can use this function in place of gluPerspective( ) left top y z x right bottom near farR.W. Lindeman - WPI Dept. of Computer Science 12 6
  7. 7. glOrtho( left, right, bottom, top, near, far )For orthographic projection top left y z x bottom right near farR.W. Lindeman - WPI Dept. of Computer Science 13Example: ProjectionTransformationvoid display( ) { glClear( GL_COLOR_BUFFER_BIT ); glMatrixMode( GL_PROJECTION ); glLoadIdentity( ); gluPerspective( FovY, Aspect, Near, Far ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); gluLookAt( 0, 0, 1, 0, 0, 0, 0, 1, 0 ); myDisplay( ); // your display routine}R.W. Lindeman - WPI Dept. of Computer Science 14 7
  8. 8. Projection Transformation Projection  Map the object from 3D space to 2D screen y y z z x x Perspective: gluPerspective( ) Parallel: glOrtho( )R.W. Lindeman - WPI Dept. of Computer Science 15Parallel Projection (The Math) After transforming the object to eye space, parallel projection is relatively easy: we could just set all Z to the same value  Xp = x (Xp, Yp)  Yp = y  Zp = -d y (x,y,z) z x We actually want to remember Z – why?R.W. Lindeman - WPI Dept. of Computer Science 16 8
  9. 9. Parallel Projection  OpenGL maps (projects) everything in the visible volume into a canonical view volume (CVV) (xmax, ymax, far) (1, 1, -1)(xmin, ymin, near) (-1, -1, 1) glOrtho( xmin, xmax, ymin, Canonical View Volume ymax, near, far ) Projection: Need to build 4x4 matrix to do mapping from actual view volume to CVV R.W. Lindeman - WPI Dept. of Computer Science 17 Parallel Projection: glOrtho  Parallel projection can be broken down into two parts  Translation, which centers view volume at origin  Scaling, which reduces cuboid of arbitrary dimensions to canonical cube  Dimension 2, centered at origin R.W. Lindeman - WPI Dept. of Computer Science 18 9
  10. 10. Parallel Projection: glOrtho(cont.) Translation sequence moves midpoint of view volume to coincide with origin  e.g., midpoint of x = (xmax + xmin)/2 Thus, translation factors are -(xmax+xmin)/2, -(ymax+ymin)/2, -(far+near)/2 So, translation matrix M1: #1 0 0 "(x max+ x min) /2& % ( %0 1 0 "(y max+ y min) /2( %0 0 1 "(z max+ z min) /2 ( % ( $0 0 0 1 R.W. Lindeman - WPI Dept. of Computer Science 19 !Parallel Projection: glOrtho(cont.) Scaling factor is ratio of cube dimension to Ortho view volume dimension Scaling factors 2/(xmax-xmin), 2/(ymax-ymin), 2/(zmax-zmin) So, scaling matrix M2: # 2 & % x max" x min 0 0 0( % 2 ( % 0 0 0( % y max" y min ( % 2 0 0 0( % z max" z min ( % ( $ 0 0 0 1R.W. Lindeman - WPI Dept. of Computer Science 20 ! 10
  11. 11. Parallel Projection: glOrtho() (cont.)  Concatenating M1xM2, we get transform matrix used by glOrtho # 2 & #1 0 0 "(x max+ x min) /2& % x max" x min 0 0 0( % ( % ( 2 %0 1 0 "(y max+ y min) /2( X % 0 0 0( % y max" y min ( % 2 %0 0 1 "(z max+ z min) /2 ( 0 0 0( % ( % z max" z min ( % 0 0 0 ( 1 $0 0 0 1 $ ! $2 /(x max# x min) 0 0 #(x max+ x min) /(x max# x min) & 0 ! 2 /(y max# y min) 0 #(y max+ y min) /(y max# y min)) ) M2 " M1 = & & 0 0 2 /(z max# z min) #(z max+ z min) /(z max# z min) ) & ) % 0 0 0 1 ( Refer to: Hill, 7.6.2! R.W. Lindeman - WPI Dept. of Computer Science 21 Perspective Projection: Classical  Side view y z x Projection plane y (x,y,z) Based on similar triangles: (x’,y’,z’) (0,0,0) y -z = z y’ d d d -z y’ = y * -z Eye (center of projection ) R.W. Lindeman - WPI Dept. of Computer Science 22 11
  12. 12. Perspective Projection:Classical (cont.) So (x*, y*), the projection of point, (x, y, z) onto the near plane N, is given as # Px P & ( x*, y *) = % N ,N y ( $ "Pz "Pz  Similar triangles Numerical example !Q: Where on the viewplane does P = (1, 0.5, - 1.5) lie for a near plane at N = 1?(x*, y*) = (1 x 1/1.5, 1 x 0.5/1.5) = (0.666, 0.333)R.W. Lindeman - WPI Dept. of Computer Science 23Pseudo Depth Checking Classical perspective projection drops z coordinates But we need z to find closest object (depth testing) Keeping actual distance of P from eye is cumbersome and slow distance = (P x 2 2 + Py + Pz 2 ) Introduce pseudodepth: all we need is a measure of which objects are further if two points project to ! the same (x, y) # P Py aPz + b & x ( x*, y*,z *) = % N ,N , ( $ "Pz "Pz "Pz  Choose a, b so that pseudodepth varies from –1 to 1 (canonical cube) !R.W. Lindeman - WPI Dept. of Computer Science 24 12
  13. 13. Pseudo Depth Checking (cont.) Solving: aPz + b z* = "Pz For two conditions, z* = -1 when Pz = -N ! and z* = 1 when Pz = -F, we can set up two simultaneous equations Solving for a and b, we get "(F + N) "2FN a= b= F "N F "NR.W. Lindeman - WPI Dept. of Computer Science 25 ! !Homogenous Coordinates Would like to express projection as 4x4 transform matrix Previously, homogeneous coordinates for the point P = (Px, Py, Pz) was (Px, Py, Pz, 1) Introduce arbitrary scaling factor, w, so that P = (wPx, wPy, wPz, w) (Note: w is non-zero) For example, the point P = (2, 4, 6) can be expressed as  (2, 4, 6, 1)  or (4, 8, 12, 2) where w=2  or (6, 12, 18, 3) where w = 3 So, to convert from homogeneous back to ordinary coordinates, divide all four terms by last component and discard 4th termR.W. Lindeman - WPI Dept. of Computer Science 26 13
  14. 14. Perspective Projection Same for x, so we have x’ = x * d / -z y’ = y * d / -z z’ = -d Put in a matrix form # x & #1 % 0 0 0&# x & # x& (% ( % ( ( ) % "d z ( %0 1 0 0( y % # &( % ( = % y( ) % "d% y (( %0 0 1 0(% z ( % z ( $ z % ( % "d ( $0 0 ( 1"d) 1% 1 ( % w ( $ $ % ( $ 1 OpenGL assumes d = 1, i.e., the image plane is at z = -1R.W. Lindeman - WPI Dept. of Computer Science ! 27Perspective Projection (cont.) We are not done yet! Need to modify the projection matrix to include a and b x’ 1 0 0 0 x y y’ = 0 1 0 0 y z z’ 0 0 a b z x w 0 0 (1/-d) 0 1 Z=1 z = -1 We have already solved a and bR.W. Lindeman - WPI Dept. of Computer Science 28 14
  15. 15. Perspective Projection (cont.) Not done yet! OpenGL also normalizes the x and y ranges of the view frustum to [-1, 1] (translate and scale) So, as in ortho, to arrive at final projection matrix  We translate by  –(xmax + xmin)/2 in x  -(ymax + ymin)/2 in y  And scale by  2/(xmax – xmin) in x  2/(ymax – ymin) in yR.W. Lindeman - WPI Dept. of Computer Science 29Perspective Projection (cont.) Final projection matrixglFrustum( xmin, xmax, ymin, ymax, N, F )  N = near plane, F = far plane # 2N x max+ x min & % x max" x min 0 0 ( x max" x min % 2N y max+ y min ( % 0 0 ( % y max" y min y max" y min ( % "(F + N) "2FN ( 0 0 % F "N F "N( % ( $ 0 0 "1 0 R.W. Lindeman - WPI Dept. of Computer Science 30 ! 15
  16. 16. Perspective Projection (cont.) After perspective projection, viewing frustum is also projected into a canonical view volume (like in parallel projection) (1, 1, -1) y z x (-1, -1, 1) Canonical View VolumeR.W. Lindeman - WPI Dept. of Computer Science 31References Hill, Chapter 7R.W. Lindeman - WPI Dept. of Computer Science 32 16

×