1 / 25

Basic Perspective Projection Watt Section 5.2, some typos

Basic Perspective Projection Watt Section 5.2, some typos. Define a focal distance, d , and shift the origin to be at that distance (note d is negative). P(x v ,y v ,z v ). P(x s ,y s ). y v. d. -z v. x v. Basic Case. Similar triangles gives:. y v. P(x v ,y v ,z v ). P(x s ,y s ).

nellie
Download Presentation

Basic Perspective Projection Watt Section 5.2, some typos

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. Basic Perspective ProjectionWatt Section 5.2, some typos • Define a focal distance, d, and shift the origin to be at that distance (note d is negative) P(xv,yv,zv) P(xs,ys) yv d -zv xv

  2. Basic Case • Similar triangles gives: yv P(xv,yv,zv) P(xs,ys) d -zv View Plane

  3. Homogeneous Screen Coordinates • Using homogeneous coordinates we can write:

  4. Clipping Planes • The image has a finite width and height • Edges define clipping planes that cut off geometry outside the view • Also define near and far clipping planes • Clip things behind the camera and very distant • Far plane can be problematic: Use tricks like “fog” to blend it out

  5. Clipping Planes Left Clip Plane Near Clip Plane xv Far Clip Plane View Volume -zv f Image Plane Right Clip Plane

  6. OpenGL Basic Case • gluPerspective(…) • Field of view (determines focal distance) • Aspect ratio (should match window aspect ratio) • Near and far clipping planes • Assumes that the image is centered in the image plane

  7. Screen Space • Image corners should be (-1,-1), (1,1) instead of (-w,-h), (w,h) • We need depth information to decide what’s in front • Useful properties: • Points on the image plane should map to zs=0 • Points on the far clip plane should map to zs=1 • Intersections of lines and planes in view space should map to their intersections in screen space • Straight lines should transform to straight lines • Planes should transform to planes

  8. Computing Screen Depth • Intersections pts maintained if: zs=A+B/zv • Desired mapping of image plane and far plane gives constraints. Solving equation gives:

  9. Homogeneous Screen Coords • Using homogeneous coordinates we can write: • Note: ws is homogeneous coordinate, w is window width

  10. Decomposing the Transformation • The transformation taking view to screen space can be decomposed into two components: • One scales the space to make the side clipping planes of the form x=z, y=z • The other deforms space to take the frustum to a box, with the focal point at -

  11. Small Complication • We really want the near clip plane to map to zs=0 • Change focal dist to near clip dist, modify image size (or specify field of view and derive image size) Image Plane New Image Plane

  12. General Case • Previous case assumed that view window was centered with corners (-w,-h), (w,h) • General case uses arbitrary area on image plane (xmin,ymin), (xmax,ymax) • OpenGL: glFrustum(...) • Corners of frustum in image plane • Near and far clip planes

  13. General to Basic Case • Shear the volume so that the central axis lies on the n-axis • This is a shear, because rectangles on planes n=constant must stay rectangles • Shear takes old window midpoint to (0, 0, d) - this means that matrix is:

  14. General to Basic Case

  15. Near/Far and Depth Resolution • It may seem sensible to specify a very near clipping plane and a very far clipping plane • Sure to contain entire scene • But, a bad idea: • OpenGL only has a finite number of bits to store screen depth • Too large a range reduces resolution in depth - wrong thing may be considered “in front” • Distant stuff is very small anyway!

  16. Screen to Window Space • Points in screen space are in homogeneous form • Clipping (described next) must be done in this form • “Perspective divide”, converts homogeneous points into 3D screen points • x,y range from –1 to 1, z from 0 to 1 • Do lighting here • Viewport transformation scales and translates x,y to fill the window in the screen: glViewport(…)

  17. Viewing Transformation Summary • Convert world to view: Translation and rotation • Convert view to screen: Translation, possibly shearing, scaling and perspective • Convert screen to window: Scale and translate • All managed by OpenGL • You just give the parameters

  18. Clipping • Parts of the geometry to be rendered may lie outside the view volume • View volume maps to memory addresses • Out-of-view geometry generates invalid addresses • Clipping removes parts of the geometry that are outside the view • Best done in screen space before perspective divide

  19. Clipping (2) • Points are trivial to clip - just check which side of the clip planes they are on (dot product) • Many algorithms for clipping lines exist • Next lecture • Two main algorithms for clipping polygons exist • Sutherland-Hodgman (today) • Weiler (next lecture)

  20. Polygon-Rectangle Clipping (2D) • Task: Clip a polygon to a rectangle • Easy cases: • Task: Clip a polygon to a rectangle • Easy cases: • Hard cases:

  21. Sutherland-Hodgman Clip (1) • Clip the polygon against each edge of the clip region in turn • Clip polygon each time to line containing edge • Only works for convex clip regions (Why?)

  22. Sutherland-Hodgman Clip (2) • To clip a polygon to a line: • Consider the polygon as a list of vertices • One side of the line is inside the clip region, the other outside • Think of the process as rewriting the polygon, one vertex at a time • Check start vertex: if “inside”, emit it, otherwise ignore it • Process vertex list proceeding as follows…

  23. Sutherland-Hodgman (3) • Look at the next vertex in the list: • polygon edge crosses clip edge going from out to in: output crossing point, next vertex • polygon edge crosses clip edge going from in to out: output crossing • polygon edge goes from out to out: output nothing • polygon edge goes from in to in: output next vertex

  24. Sutherland-Hodgman (4) Inside Outside Inside Outside Inside Outside Inside Outside p s i s p p s i p s Output p Output i No output Output i,p

  25. Sutherland-Hodgman (5) • In 3D, clip against planes instead of lines • Six planes to clip against • Inside/Outside test still works • Suitable for hardware implementation • Only need the clip edge, the endpoints of the current edge, and the last output point • Polygon edges are output as they are found, and passed right on to the next clip region edge

More Related