32
28/10/08 Lecture 9 1 Computer Graphics Inf4/MSc Computer Graphics Lecture 9 Visible Surface Determination Taku Komura

Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura

Embed Size (px)

Citation preview

Page 1: Computer Graphics Inf4/MSc 28/10/08Lecture 91 Computer Graphics Lecture 9 Visible Surface Determination Taku Komura

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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