1 / 69

Modeling and Viewing

Learn about modeling hierarchically complex objects, camera positioning, projection transformations, viewing terminologies, graphics functions, and setting up cameras at Hofstra University. Understand OpenGL utilities, viewing transformations, and custom routines.

etucker
Download Presentation

Modeling and Viewing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modeling and Viewing • Modeling • Use modeling (local) coordinates and geometric transformations to build hierarchically more complex objects and scenes. The final scene is in world frame • Viewing • Model the camera: position , orientation, camera (view) reference frame, projection • Viewing transformations: from world to camera coordinates • Clipping/hidden surface removal: clip out from consideration parts outside of view volume • Projection transformations and hidden surface removal: from 3D viewing coord. to 2D projection coord. and normalized device coordinates • Viewport transformations: from normalized device coordinates to screen (device) coordinates Hofstra University

  2. Viewing and Projection • Transforming • Modeling transformations (affine), 3D to 3D • Viewing transformations (affine), 3D to 3D • Linear in homogeneous coordinates • Images of parallel lines stay parallel • Transformation matrix in homogeneous coordinates has last row, 0 0 0 1 • Projection transformations (not affine), 3D to 2D • Linear in homogeneous coordinates • Images of parallel lines may intersect at infinity • Transformation matrix most general • Viewport transformations (affine), maps viewing window to viewport, 2D to 2D Hofstra University

  3. Viewing Terminology • Viewing volume: the region in 3D that can contain objects that are visible by the camera • Projection: math transformations that maps from 3D to 2D (or 4D to 3D, in homogeneous) • Projection plane: the plain containing the 2D image • Viewing window: the rectangle in the image plane that will be mapped to the screen eventually • Viewport: 2D rectangle within the display window on the screen that shows the viewing window • Clipping: cutting off from consideration parts outside the view volume (done easier if the view volume is mapped to a canonical view volume which is a cube) Hofstra University

  4. Graphics functions • Graphics systems support viewing by • Providing a viewing model whose parameters specify the camera • Providing functions for viewing, projection and viewport • Implementing viewing and projection transformations as matrix multiplications in homogeneous coordinates Hofstra University

  5. Viewing APIs • The the position of the eye or camera is called the view reference point(VRP) • A unit view plane normal (VPN), is in the viewing direction, it is perpendicular to the image plane. In open GL VPN is in direction opposite to the one in which camera is looking • Another vector called the view-up vector is a vector specifying which is the approximate “up” direction for the camera Hofstra University

  6. Camera Model: viewing VRP: Camera(eye) position, (u,v,n): camera frame. Viewing: specify VRP,n,VUP. Hofstra University

  7. Viewing Coordinate System: (u,v,n) • right handed • v, the y-axis of the view frame, is the perpendicular projection of VUP on the projection plane • n is the z-axis of the view frame • u= v × n Hofstra University

  8. Setting up the camera • Construct a scene and then look at it from a point of view, eye: • eye, the eyepoint, is the VRP specified in the world coordinates • Camera is pointed at a point at, the at point • These points determine VPN • vpn = eye – at Hofstra University

  9. Two Points of View • Hold camera frame fixed, move objects in front of the camera • Model objects stationary and move the camera away from the objects Hofstra University

  10. gluLookAt Utility Routine in OpenGL • Defines a viewing transformation matrix M, and M postmultiplies CTM, i.e. CTM=CTM*M • Eye point: eyex, eyey, andeyez. • At point: atx, aty,and atz. • VUP: upx, upy, and upz gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz); Hofstra University

  11. Viewing Transformations • Given 3D model of a scene/object in 4D homogeneous coordinates P, with respect to the world coordinate system • Given camera coordinate system (position, VRP, and camera frame (u,v,n) ) • Viewing transformation M converts coordinates of objects from world to camera coordinates • How? Hofstra University

  12. Viewing Transformations • Let W=(O,ex,ey,ez) be the world coord. system • Let V=(VRP,u,v,n) be the camera coord. System • Let M be the change of frame matrix, mapping V to W, M = R.T(-VRP), where • T is a translation mapping VRP to O • R is a rotation aligning (u,v,n) with (ex,ey,ez), in 3D affine coordinates it represented by a matrix with rows u’,v’,n’ • Then for a point P with modeling coordinates w=(xw,yw,zw,1)’ the viewing coordinates are v =(vx,vy,vz,1)’, where Hofstra University

  13. Custom Utility Routine • You might need to define your own transformation routine • Flight simulator: Display the world from the pilot’s point of view • Pilot see the world in terms of roll, pitch, and heading Hofstra University

  14. Custom Utility Routine • The following routine could serve as the viewing transformation: • void pilotView{GLdouble planex, GLdouble planey, •                GLdouble planez, Gldouble roll,                  • GLdouble pitch, GLdouble heading) • { •      glRotated(roll, 0.0, 0.0, 1.0);       • glRotated(pitch, 0.0, 1.0, 0.0);       • glRotated(heading, 1.0, 0.0, 0.0);       • glTranslated(-planex, -planey, -planez); • } Hofstra University

  15. Custom Utility Routine • Orbiting the camera around an object that's centered at the origin • Use polar coordinates. • Let the distance variable define the radius of the orbit • The azimuth describes the angle of rotation of the camera about the object in the x-y plane • elevation is the angle of rotation of the camera in the y-z plane Hofstra University

  16. Projections • Projecting: mapping from 3D viewing coordinates to 2D coordinates in projection plane. In homogeneous coordinates it is a map from 4D viewing coordinates to 3D. • Projections • Parallel: orthogonal and oblique • Perspective • Canonical views: orthographic and perspective projections Hofstra University

  17. Perspective projection Projectors intersect at COP Hofstra University

  18. Parallel Projections Projectors parallel. COP at infinity. Hofstra University

  19. Parallel projections: summary • Center of projection is at infinity. • Projectors are parallel. • Parallel lines stay parallel • There is no forshorthening • Distances and angles are transformed consistently • Used most often in engineering design, CAD systems. Used for top and side drawings from which measurements could be made. Hofstra University

  20. Orthographic Projection: projectors orthogonal to projection plane same for all points DOP (direction of projectors) Hofstra University

  21. Orthographic Projections DOP is perpendicular to the view plane Hofstra University

  22. Multiview Parallel Projection Faces are parallel to the projection plane Hofstra University

  23. Isometric Projection Projector makes equal angles with all three principal axes All three axes are equally foreshortened Hofstra University

  24. Mechanical Drawing isometric Hofstra University

  25. Oblique Parallel Projections • Most general parallel views • Projectors make an arbitrary angle with the projection plane • Angles in planes parallel to the projection plane are preserved Hofstra University

  26. Oblique Projections: projectors are not orthogonal to image plane Cavalier Angle between projectors and projection plane is 45°. Lines orthogonal to the projection plane Retain their exact length. Perpendicular faces are projected at full scale Cabinet Angle between projectors and projection plane is arctan(2)=63.4°. Lines orthogonal to the projection plane are projected at half length. Perpendicular faces are projected at 50% scale. Looks like forshorthening. Hofstra University

  27. Perspective Projection • Most natural for people • In human vision, perspective projection of the world is created on the retina (back of the eye) • Used in CG for creating realistic images • Perspective projection images carry depth cues • Foreshorthening causes distant objects to appear smaller • Relative lengths and angles are not preserved • A perspective image cannot be used for metric measurements of the 3D world • Parallel lines not parallel to the image plane converge at a vanishing point • An axis (principal) vanishing point is a point of convergence for lines parallel to a principal axis of the object. We distinguish one-, two-, three-point projections.) Hofstra University

  28. Vanishing Points Hofstra University

  29. Vanishing Points Hofstra University

  30. Early Perspective Giotto Not systematic—parallel lines do not converge to a single "vanishing" point Hofstra University

  31. Math of Projections:Overview • Math of perspective projection, standard configuration • OpenGL perspective projections • Math of orthographic projection • OpenGL orthographic projections • Viewport transformations and setting them in OpenGL • Summary • Viewing transformations • Orthographic projection canonical viewing volume • Perspective projection canonical viewing volume • Hidden surface removal Hofstra University

  32. Perspective Viewing Hofstra University

  33. Perspective Projections -z -z Viewing direction orthogonal To projection plane Genaral perspective: Viewing direction is not orthogonal to projection plane Hofstra University

  34. Perspective Projections • The graphics system applies a 4 x 4 projection matrix after the model-view matrix Hofstra University

  35. Math of perspective projection • The discussion here is carried out with respect to the camera (view) reference frame, (VRP,u,v,n) • The projection transformation maps 3D points to 2D points in the projection plane • Standard configuration: • COP=VRP • Projection plane is orthogonal to z-axis, at z=d Hofstra University

  36. Math of perspective projection • Standard configuration: • Let O be COP • Projection plane has equation z=d, d <0 • 3D point P has homogeneous coordinates (x,y,z,1) • It is mapped to point Q (xp,yp,d) in the projection plane • Q is on the segment PO, thus • Q=cP+(1-c)O, where 0<c<1 • Thus, xp = c.x, yp = c.y, d = c.z  c = d/z • Thus, xp = (d/z).x, yp = (d/z).y , in affine coordinates • Note that projection is not linear in affine coordates. Hofstra University

  37. Math of perspective projection • P=p(x,y,z,1)  Q=q(d.x/z, d.y/z, d, 1), in homogeneous coordinates. • Perspective projection is not linear in affine coord. • Perspective projection is linear in homogeneous • From homogeneous to affine coordinates: (a,b,c,w)  (a/w, b/w,c/w) • Thus (x,y,z,d/z) in homogeneous becomes (x/(z/d), y/(z/d),d,1) ==> (d.x/z, d.y/z,1) in proj. plane Hofstra University

  38. Clipping • Object parts outside of the of the view volume are clipped • First we will discuss the openGL functions that set up the projection transformations • Next we will discuss the viewport transformation and setting the viewport in OpenGL • Last, we will go back to projection, and see how the graphics systems carry out efficiently the more general perspective projection by reducing it to the standard perspective, and then to the canonical orthographic • You can set up any projection you want (parallel or perspective) by setting up the the projection matrix directly • Although, more often we use affine transformations to reduce more general projections to the canonical ones Hofstra University

  39. Perspective Viewing in OpenGL Depth of projection plane (size of clipping window) inside the pyramid does not matter. All that matters is object size relative to the window. The projection plane depth does not affect relative size. Thus in CG systems usually far or near plane is selected to be the projection plane. Near in openGL. Hofstra University

  40. Projections in OpenGL frustum only fixed point Objects not in the view volume are clipped. View (projection) plane is front clipping plane. Hofstra University

  41. OpenGL Perspective glFrustum(left, right, bottom, top, near, far); glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glFrustum(left, right, bottom, top, near, far); The relationship between front(near) plane and COP(origin) define the steepness of the frustum Hofstra University

  42. OpenGL Perspective gluPerspective(fovy, aspect, near, far); fov is the angle between the top and bottom planes Hofstra University

  43. OpenGL Orthographic Projection glOrtho(left, right, bottom, top, near, far); Hofstra University

  44. Standard Orthographic Projection Hofstra University

  45. Viewport Transformation • viewport transformation corresponds to the stage where the size of the developed photograph is chosen • The viewport is measured in pixels, in screen window coordinates, which reflect the position of pixels on the screen relative to the lower left corner of the window • vertices outside the viewing volume have been clipped Hofstra University

  46. Viewport Transformation • viewport is the rectangular region of the window where the image is drawn Hofstra University

  47. Defining the Viewport • The window manager, not OpenGL, is responsible for opening a window on the screen • By default the viewport is set to the entire pixel rectangle of the window that's opened • Use the glViewport() command to choose a smaller drawing region void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); size of viewport rectangle lower left corner Hofstra University

  48. Defining The Viewport • By default, the initial viewport values are • (0, 0, winWidth, winHeight), • where winWidth and winHeight are the size of the window. • The aspect ratio of a viewport should generally equal the aspect ratio of the viewing volume • If the two ratios are different, the projected image will be distorted as it's mapped to the viewport Hofstra University

  49. Viewport Distortion Hofstra University

  50. Summary • World to View coordiantes • Camera position: VRP • Viewing transformation • Translate VRP to origin: T(-VRP) • Rotate, aligning view frame (u,v,n) with world frame • The composite transformation R.T will have the effect of transforming the coordinates of vertices from world to view coordinates Hofstra University

More Related