1 / 43

Viewing/Projections III Week 4, Wed Jan 30

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008 Viewing/Projections III Week 4, Wed Jan 30 Review: Graphics Cameras real pinhole camera: image inverted eye point image plane computer graphics camera: convenient equivalent eye point center of projection image plane

albert
Download Presentation

Viewing/Projections III Week 4, Wed Jan 30

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. http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008 Viewing/Projections IIIWeek 4, Wed Jan 30

  2. Review: Graphics Cameras • real pinhole camera: image inverted eye point image plane • computer graphics camera: convenient equivalent eye point center of projection image plane

  3. Review: Basic Perspective Projection similar triangles P(x,y,z) y P(x’,y’,z’) z z’=d homogeneous coords

  4. Perspective Projection • expressible with 4x4 homogeneous matrix • use previously untouched bottom row • perspective projection is irreversible • many 3D points can be mapped to same (x, y, d) on the projection plane • no way to retrieve the unique z values

  5. Moving COP to Infinity • as COP moves away, lines approach parallel • when COP at infinity, orthographic view

  6. Orthographic Camera Projection • camera’s back plane parallel to lens • infinite focal length • no perspective convergence • just throw away z values

  7. Perspective to Orthographic • transformation of space • center of projection moves to infinity • view volume transformed • from frustum (truncated pyramid) to parallelepiped (box) x x Frustum Parallelepiped -z -z

  8. orthographic view volume perspective view volume y=top y=top x=left x=left y y z x=right VCS z=-near x VCS y=bottom z=-far z=-far x y=bottom x=right z=-near View Volumes • specifies field-of-view, used for clipping • restricts domain of z stored for visibility test z

  9. Canonical View Volumes • standardized viewing volume representation perspective orthographic orthogonal parallel x or y x or y = +/- z backplane x or y backplane 1 frontplane frontplane -z -z -1 -1

  10. Why Canonical View Volumes? • permits standardization • clipping • easier to determine if an arbitrary point is enclosed in volume with canonical view volume vs. clipping to six arbitrary planes • rendering • projection and rasterization algorithms can be reused

  11. Normalized Device Coordinates • convention • viewing frustum mapped to specific parallelepiped • Normalized Device Coordinates (NDC) • same as clipping coords • only objects inside the parallelepiped get rendered • which parallelepiped? • depends on rendering system

  12. Normalized Device Coordinates left/right x =+/- 1, top/bottom y =+/- 1, near/far z =+/- 1 NDC Camera coordinates x x x=1 right Frustum -z z left x= -1 z=1 z= -1 z=-n z=-f

  13. Understanding Z • z axis flip changes coord system handedness • RHS before projection (eye/view coords) • LHS after projection (clip, norm device coords) VCS NDCS y=top y (1,1,1) x=left y z (-1,-1,-1) z x x=right x z=-far y=bottom z=-near

  14. perspective view volume y=top x=left y z=-near VCS y=bottom z=-far x x=right Understanding Z near, far always positive in OpenGL calls glOrtho(left,right,bot,top,near,far); glFrustum(left,right,bot,top,near,far); glPerspective(fovy,aspect,near,far); orthographic view volume y=top x=left y z x=right VCS x z=-far y=bottom z=-near

  15. Understanding Z • why near and far plane? • near plane: • avoid singularity (division by zero, or very small numbers) • far plane: • store depth in fixed-point representation (integer), thus have to have fixed range of values (0…1) • avoid/reduce numerical precision artifacts for distant objects

  16. NDCS y (1,1,1) z (-1,-1,-1) x Orthographic Derivation • scale, translate, reflect for new coord sys VCS y=top x=left y z x=right x z=-far y=bottom z=-near

  17. NDCS y (1,1,1) z (-1,-1,-1) x Orthographic Derivation • scale, translate, reflect for new coord sys VCS y=top x=left y z x=right x z=-far y=bottom z=-near

  18. Orthographic Derivation • scale, translate, reflect for new coord sys

  19. Orthographic Derivation • scale, translate, reflect for new coord sys VCS y=top x=left y z x=right x z=-far y=bottom z=-near same idea for right/left, far/near

  20. Orthographic Derivation • scale, translate, reflect for new coord sys

  21. Orthographic Derivation • scale, translate, reflect for new coord sys

  22. Orthographic Derivation • scale, translate, reflect for new coord sys

  23. Orthographic Derivation • scale, translate, reflect for new coord sys

  24. Orthographic OpenGL glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(left,right,bot,top,near,far);

  25. Demo • Brown applets: viewing techniques • parallel/orthographic cameras • projection cameras • http://www.cs.brown.edu/exploratories/freeSoftware/catalogs/viewing_techniques.html

  26. Projections II

  27. Asymmetric Frusta • our formulation allows asymmetry • why bother? x x right right Frustum Frustum -z -z left left z=-n z=-f

  28. Asymmetric Frusta • our formulation allows asymmetry • why bother? binocular stereo • view vector not perpendicular to view plane Left Eye Right Eye

  29. Simpler Formulation • left, right, bottom, top, near, far • nonintuitive • often overkill • look through window center • symmetric frustum • constraints • left = -right, bottom = -top

  30. Field-of-View Formulation • FOV in one direction + aspect ratio (w/h) • determines FOV in other direction • also set near, far (reasonably intuitive) x w h fovx/2 Frustum -z  fovy/2 z=-n z=-f

  31. Perspective OpenGL glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(left,right,bot,top,near,far); or glPerspective(fovy,aspect,near,far);

  32. Demo: Frustum vs. FOV • Nate Robins tutorial (take 2): • http://www.xmission.com/~nate/tutors.html

  33. viewing transformation projection transformation modeling transformation viewport transformation Projective Rendering Pipeline OCS - object/model coordinate system WCS - world coordinate system VCS - viewing/camera/eye coordinate system CCS - clipping coordinate system NDCS - normalized device coordinate system DCS - device/display/screen coordinate system object world viewing O2W W2V V2C VCS WCS OCS clipping C2N CCS perspectivedivide normalized device N2D NDCS device DCS

  34. Projection Normalization • warp perspective view volume to orthogonal view volume • render all scenes with orthographic projection! • aka perspective warp x x z=d z=d z=0 z=

  35. Perspective Normalization • perspective viewing frustum transformed to cube • orthographic rendering of cube produces same image as perspective rendering of original frustum

  36. Predistortion

  37. Demos • Tuebingen applets from Frank Hanisch • http://www.gris.uni-tuebingen.de/projects/grdev/doc/html/etc/AppletIndex.html#Transformationen

  38. viewing transformation projection transformation modeling transformation viewport transformation Projective Rendering Pipeline OCS - object/model coordinate system WCS - world coordinate system VCS - viewing/camera/eye coordinate system CCS - clipping coordinate system NDCS - normalized device coordinate system DCS - device/display/screen coordinate system object world viewing O2W W2V V2C VCS WCS OCS clipping C2N CCS perspectivedivide normalized device N2D NDCS device DCS

  39. Separate Warp From Homogenization normalized device clipping • warp requires only standard matrix multiply • distort such that orthographic projection of distorted objects is desired persp projection • w is changed • clip after warp, before divide • division by w: homogenization viewing V2C C2N CCS VCS NDCS projection transformation perspective division alter w / w

  40. Perspective Divide Example • specific example • assume image plane at z = -1 • a point [x,y,z,1]T projects to [-x/z,-y/z,-z/z,1]T [x,y,z,-z]T -z

  41. Perspective Divide Example • after homogenizing, once again w=1 projection transformation perspective division alter w / w

  42. Perspective Normalization • matrix formulation • warp and homogenization both preserve relative depth (z coordinate)

  43. Demo • Brown applets: viewing techniques • parallel/orthographic cameras • projection cameras • http://www.cs.brown.edu/exploratories/freeSoftware/catalogs/viewing_techniques.html

More Related