Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface...
-
Upload
brett-dede -
Category
Documents
-
view
229 -
download
2
Transcript of Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface...
![Page 1: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/1.jpg)
28/10/08 Lecture 9 1
Computer Graphics Inf4/MSc
Computer Graphics
Lecture 9
Visible Surface Determination
Taku Komura
![Page 2: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/2.jpg)
28/10/08 Lecture 9 2
Computer Graphics Inf4/MSc
Hidden surface removal
• Drawing polygonal faces on screen consumes CPU cycles– We cannot see every surface in scene– We don’t want to waste time rendering
primitives which don’t contribute to the final image.
![Page 3: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/3.jpg)
28/10/08 Lecture 9 3
Computer Graphics Inf4/MSc
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
![Page 4: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/4.jpg)
28/10/08 Lecture 9 4
Computer Graphics Inf4/MSc
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
• How do we remove these efficiently?• How do we identify these efficiently?
![Page 5: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/5.jpg)
28/10/08 Lecture 9 5
Computer Graphics Inf4/MSc
The visibility problem.Two problems remain: (Clipping we have covered)• Removal of faces facing away from the viewer.• Removal of faces obscured by closer objects.
![Page 6: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/6.jpg)
28/10/08 Lecture 9 6
Computer Graphics Inf4/MSc
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 after vertices have been rasterized
•Z-buffering
![Page 7: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/7.jpg)
28/10/08 Lecture 9 7
Computer Graphics Inf4/MSc
Back face culling.• We saw in modelling, that 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.
• Only works for convex objects without holes, ie. closed orientable manifolds.
![Page 8: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/8.jpg)
28/10/08 Lecture 9 8
Computer Graphics Inf4/MSc
Back face culling
• Back face culling can be applied anywhere in the pipeline: geometry stage or rasterization stage
• If we clip our scene to the view frustrum, then remove all back-facing polygons – are we done?
• NO! Most views involve overlapping polygons.
![Page 9: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/9.jpg)
28/10/08 Lecture 9 9
Computer Graphics Inf4/MSc
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.
![Page 10: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/10.jpg)
28/10/08 Lecture 9 10
Computer Graphics Inf4/MSc
One Solution
• Binary Space Partitioning Tree (or BSP Tree)
• A data structure that is used to organize objects within a space.
• Polygons are subdivided and queued
![Page 11: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/11.jpg)
28/10/08 Lecture 9 11
Computer Graphics Inf4/MSc
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.
3
41
2
5
View of scene from above
![Page 12: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/12.jpg)
28/10/08 Lecture 9 12
Computer Graphics Inf4/MSc
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.
3
3
41
2
5
5a
5b
125a
45b
backfront
![Page 13: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/13.jpg)
28/10/08 Lecture 9 13
Computer Graphics Inf4/MSc
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.
3
3
41
2
5
5a
5b
45b
backfront
2
15a
front
![Page 14: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/14.jpg)
28/10/08 Lecture 9 14
Computer Graphics Inf4/MSc
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.
3
3
41
2
5
5a
5b
backfront
2
15a
front
5b
4
![Page 15: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/15.jpg)
28/10/08 Lecture 9 15
Computer Graphics Inf4/MSc
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.
3
3
41
2
5
back
2
1
front
5
4 back
back
Alternate formulation starting at 5
![Page 16: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/16.jpg)
28/10/08 Lecture 9 16
Computer Graphics Inf4/MSc
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.
![Page 17: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/17.jpg)
28/10/08 Lecture 9 17
Computer Graphics Inf4/MSc
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 object location don’t change
very often in the scene.
![Page 18: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/18.jpg)
28/10/08 Lecture 9 18
Computer Graphics Inf4/MSc
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.
![Page 19: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/19.jpg)
28/10/08 Lecture 9 19
Computer Graphics Inf4/MSc
![Page 20: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/20.jpg)
28/10/08 Lecture 9 20
Computer Graphics Inf4/MSc
![Page 21: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/21.jpg)
28/10/08 Lecture 9 21
Computer Graphics Inf4/MSc
![Page 22: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/22.jpg)
28/10/08 Lecture 9 22
Computer Graphics Inf4/MSc
![Page 23: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/23.jpg)
28/10/08 Lecture 9 23
Computer Graphics Inf4/MSc
Triangle Rasterization
• Consider a 2D triangle with vertices p0 , p1 , p2. • Let x be any point in the plane. We can always
find a, b, c such that
• We will have if and only if x is inside the triangle.
• We call the barycentric coordinates of x.
![Page 24: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/24.jpg)
28/10/08 Lecture 9 24
Computer Graphics Inf4/MSc
Rasterization
• We assume that p are normalized device coordinates (NDC); that is, the canvas corresponds to the region [-1, 1] × [-1, 1].
-This is what you get after applying all transformation matrices.
![Page 25: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/25.jpg)
28/10/08 Lecture 9 25
Computer Graphics Inf4/MSc
Bounding box of the triangle• First, identify a rectangular region on the
canvas that contains all of the pixels in the triangle (excluding those that lie outside the canvas).
• Calculate a tight bounding box for a triangle: simply calculate pixel coordinates for each vertex, and find the minimum/maximum for each axis
![Page 26: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/26.jpg)
28/10/08 Lecture 9 26
Computer Graphics Inf4/MSc
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 NDC coordinates (x, y).
• Next we 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)
![Page 27: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/27.jpg)
28/10/08 Lecture 9 27
Computer Graphics Inf4/MSc Computing the baricentric
coordinates of the interior pixels
• Depth can be computed by • Can do the same thing for color, normals
![Page 28: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/28.jpg)
28/10/08 Lecture 9 28
Computer Graphics Inf4/MSc
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
![Page 29: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/29.jpg)
28/10/08 Lecture 9 29
Computer Graphics Inf4/MSc
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 objectsZ-precision errors• May have to use point sampling
![Page 30: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/30.jpg)
28/10/08 Lecture 9 30
Computer Graphics Inf4/MSc
Z-buffer performance
• Brute-force image-space algorithm scores best for complex scenes – not very accurate but is easy to implement and is very general.
• Storage overhead: O(1)• Time to resolve visibility to screen precision: O(n)
![Page 31: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/31.jpg)
28/10/08 Lecture 9 31
Computer Graphics Inf4/MSc
Exercise• Write a program to load 3D polygons• Use OpenGL’s 2D functions to draw
triangles glOrtho2D(); glColor3f(); glRecti(i,j,i+1,j+1); -Try to use barycentric coordinates to
rasterize the triangle
![Page 32: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura.](https://reader035.fdocuments.in/reader035/viewer/2022062404/551ae7b05503466b6a8b5f08/html5/thumbnails/32.jpg)
28/10/08 Lecture 9 32
Computer Graphics Inf4/MSc
References for this lecture• 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