1 / 32

Computer Graphics

Lecture 5 Hidden Surface Removal and Rasterization Taku Komura. Computer Graphics. Hidden surface removal. Drawing polygonal faces on screen consumes CPU cycles Illumination We cannot see every surface in scene

lynton
Download Presentation

Computer Graphics

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. Lecture 5 Hidden Surface Removal and Rasterization Taku Komura Computer Graphics

  2. Hidden surface removal • Drawing polygonal faces on screen consumes CPU cycles • Illumination • We cannot see every surface in scene • We don’t want to waste time rendering primitives which don’t contribute to the final image.

  3. Visibility (hidden surface removal)‏ • A correct rendering requires correct visibility calculations • Correct visibility • when multiple opaque polygons cover the same screen space, only the closest one is visible (remove the other hidden surfaces)‏ • wrong visibility correct visibility

  4. Visibility of primitives • A scene primitive can be invisible for 3 reasons: • Primitive lies outside field of view • Primitive is back-facing • Primitive is occluded by one or more objects nearer the viewer

  5. Visible surface algorithms. • Definitions: • Object space techniques: applied before vertices are mapped to pixels • Back face culling, Painter’s algorithm, BSP trees • Image space techniques: applied while the vertices are rasterized • Z-buffering

  6. Back face culling. • The vertices of polyhedra are oriented in an anticlockwise manner when viewed from outside – surface normal N points out. • Project a polygon. • Test z component of surface normal. If negative – cull, since normal points away from viewer. • Or if N.V > 0 we are viewing the back face so polygon is obscured.

  7. Painters algorithm (object space). • Draw surfaces in back to front order – nearer polygons “paint” over farther ones. • Supports transparency. • Key issue is order determination. • Doesn’t always work – see image at right.

  8. BSP (Binary Space Partitioning) Tree. • One of class of “list-priority” algorithms – returns ordered list of polygon fragments for specified view point (static pre-processing stage). • Choose polygon arbitrarily • Divide scene into front (relative to normal) and back half-spaces. • Split any polygon lying on both sides. • Choose a polygon from each side – split scene again. • Recursively divide each side until each node contains only 1 polygon. 5 2 3 1 4 View of scene from above

  9. Lecture 9 5 5a 5b 2 3 1 4 3 back front 1 2 5a 4 5b BSP Tree. • Choose polygon arbitrarily • Divide scene into front (relative to normal) and back half-spaces. • Split any polygon lying on both sides. • Choose a polygon from each side – split scene again. • Recursively divide each side until each node contains only 1 polygon.

  10. BSP Tree. 5 5a 5b 2 • Choose polygon arbitrarily • Divide scene into front (relative to normal) and back half-spaces. • Split any polygon lying on both sides. • Choose a polygon from each side – split scene again. • Recursively divide each side until each node contains only 1 polygon. 3 1 4 3 back front 2 4 5b front 5a 1

  11. 5 5a 5b 2 3 1 4 3 back front 2 4 front 5a 1 5b BSP Tree. • Choose polygon arbitrarily • Divide scene into front (relative to normal) and back half-spaces. • Split any polygon lying on both sides. • Choose a polygon from each side – split scene again. • Recursively divide each side until each node contains only 1 polygon.

  12. Lecture 9 Displaying a BSP tree. • Once we have the regions – need priority list • BSP tree can be traversed to yield a correct priority list for an arbitrary viewpoint. • Start at root polygon. • If viewer is in front half-space, draw polygons behind root first, then the root polygon, then polygons in front. • If polygon is on edge – either can be used. • Recursively descend the tree. • If eye is in rear half-space for a polygon – then can back face cull.

  13. Lecture 9 BSP Tree. • A lot of computation required at start. • Try to split polygons along good dividing plane • Intersecting polygon splitting may be costly • Cheap to check visibility once tree is set up. • Can be used to generate correct visibility for arbitrary views. • Efficient when objects don’t change very often in the scene.

  14. Lecture 9 BSP performance measure • Tree construction and traversal (object-space ordering algorithm – good for relatively few static primitives, precise) • Overdraw: maximum • Front-to-back traversal is more efficient • Record which region has been filled in already • Terminate when all regions of the screen is filled in • S. Chen and D. Gordon. “Front-to-Back Display of BSP Trees.” IEEE Computer Graphics & Algorithms, pp 79–85. September 1991.

  15. Z-buffering : image space approach Basic Z-buffer idea: • rasterize every input polygon • For every pixel in the polygon interior, calculate its corresponding z value (by interpolation)‏ • Track depth values of closest polygon (smallest z) so far • Paint the pixel with the color of the polygon whose z value is the closest to the eye.

  16. Implementation. • Initialise frame buffer to background colour. • Initialise depth buffer to z = max. value for far clipping plane • For each triangle • Calculate value for z for each pixel inside • Update both frame and depth buffer

  17. Filling in Triangles • Scan line algorithm • Filling in the triangle by drawing horizontal lines from top to bottom • Barycentric coordinates • Checking whether a pixel is inside / outside the triangle

  18. Triangle Rasterization • Consider a 2D triangle with vertices p0 , p1 , p2. • Let p be any pointin the plane. We can always find a, b, c such that • We will haveif and only if p is inside the triangle. • We call thebarycentric coordinates of p.

  19. Computing the baricentric coordinates of the interior pixels • (α,β,γ) : barycentric coordinates • Only if 0<α,β,γ<1, (x,y) is inside the triangle • Depth can be computed by αZ0 + βZ1 +γZ2 • Can do the same thing for color, normals, textures • The triangle is composed of 3 points p0 (x0,y0), p1 (x1, y1), p2(x2,y2)‏

  20. Bounding box of the triangle • First, identify a rectangular region on the canvas that contains all of thepixels in the triangle (excluding those that lie outside the canvas). • Calculate a tight bounding box for a triangle: simply calculate pixelcoordinates for each vertex, and find the minimum/maximum for each axis

  21. Scanning inside the triangle • Once we've identified the bounding box, we loop over each pixel in the box. • For each pixel, we first compute the corresponding (x, y) coordinates in the canonical view volume • Nextwe convert these into barycentric coordinates for the triangle being drawn. • Only if the barycentric coordinates are within the range of [0,1], we plot it (and compute the depth)‏

  22. Why is z-buffering so popular ? Advantage • Simple to implement in hardware. • Memory for z-buffer is now not expensive • Diversity of primitives – not just polygons. • Unlimited scene complexity • Don’t need to calculate object-object intersections. Disadvantage • Extra memory and bandwidth • Waste time drawing hidden objects Z-precision errors • May have to use point sampling

  23. Z-buffer performance • Brute-force image-space algorithm scores best for complex scenes –easy to implement and is very general. • Storage overhead: O(1)‏ • Time to resolve visibility to screen precision: O(n)‏ • n: number of polygons

  24. Lecture 9 Ex. Architectural scenes Here there can be an enormous amount of occlusion

  25. Lecture 9 Occlusion at various levels

  26. A B C D E Portal Culling (object-space) D F • Model scene as a graph: • Nodes: Cells (or rooms) • Edges: Portals (or doors) • Graph gives us: • Potentially visible set • Render the room • If portal to the next room is visible, render the connected room in the portal region • Repeat the process along the scene graph B E C G A

  27. Summary • Z-buffer is easy to implement on hardware and is an important tool • We need to combine it with an object-based method especially when there are too many polygons • BSP trees, portal culling

  28. References for hidden surface removal • Foley et al. Chapter 15, all of it. • Introductory text, Chapter 13, all of it • Baricentric coordinates www.cs.caltech.edu/courses/cs171/barycentric.pdf • Or equivalents in other texts, look out for: • (as well as the topics covered today)‏ • Depth sort – Newell, Newell & Sancha • Scan-line algorithms

More Related