68
1 Dr. Scott Schaefer Hidden Surfaces

1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

Embed Size (px)

Citation preview

Page 1: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

1

Dr. Scott Schaefer

Hidden Surfaces

Page 2: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

2/62

Hidden Surfaces

Page 3: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

3/62

Hidden Surfaces

Page 4: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

4/62

Hidden Surfaces

Page 5: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

5/62

Backface Culling

Page 6: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

6/62

Backface Culling

view direction

v

Page 7: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

7/62

Backface Culling

view direction

n

v

Page 8: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

8/62

Backface Culling

view direction

n

v

0vn , draw polygon

Page 9: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

9/62

Backface Culling

view direction

n

v

0vn , cull polygon

Page 10: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

10/62

Backface Culling

Page 11: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

11/62

Backface Culling

1

2

3

counter clock-wise orientation, draw polygon

Page 12: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

12/62

Backface Culling

1

2

3

clock-wise orientation, cull polygon

Page 13: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

13/62

Backface Culling

Advantages Improves rendering speed by removing

roughly half of polygons from scan conversion

DisadvantagesAssumes closed surface with consistently

oriented polygonsNOT a true hidden surface algorithm!!!

Page 14: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

14/62

Backface Culling

Is this all we have to do?

Page 15: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

15/62

Backface Culling

Is this all we have to do? No!- Can still have 2 (or more) front faces that map to

the same screen pixel

Page 16: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

16/62

Backface Culling

Is this all we have to do? No!- Can still have 2 (or more) front faces that map to

the same screen pixel- Which actually gets drawn?

Page 17: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

17/62

Painter’s Algorithm

Sort polygons according to distance from viewer

Draw from back to front

How do we sort polygons?

Page 18: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

18/62

Painter’s Example

z = 0.7z = 0.3

z = 0.1

Sort by depth:Green rectRed circle

Blue triz = 0

Page 19: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

19/62

Painter’s Algorithm

Page 20: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

20/62

Sometimes there is NO ordering that produces correct results!!!

Painter’s Algorithm

Page 21: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

21/62

Painter’s Algorithm

1. Sort all objects’ zmin and zmax

Page 22: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

22/62

Painter’s Algorithm

1. Sort all objects’ zmin and zmax

2. If an object is uninterrupted (its zmin and zmax are adjacent in the sorted list), it is fine

Page 23: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

23/62

Painter’s Algorithm

1. Sort all objects’ zmin and zmax

2. If an object is uninterrupted (its zmin and zmax are adjacent in the sorted list), it is fine

3. If 2 objects DO overlap

3.1 Check if they overlap in x

- If not, they are fine

3.2 Check if they overlap in y

- If not, they are fine

- If yes, need to split one

Page 24: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

24/62

Painter’s Algorithm

The splitting step is the tough one - Need to find a plane to split one polygon by so

that each new polygon is entirely in front of or entirely behind the other

- Polygons may actually intersect, so then need to split each polygon by the other

Page 25: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

25/62

Painter’s Algorithm

The splitting step is the tough one - Need to find a plane to split one polygon by so

that each new polygon is entirely in front of or entirely behind the other

- Polygons may actually intersect, so then need to split each polygon by the other

After splitting, you can resort the list and should be fine

Page 26: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

26/62

Painter’s Algorithm-Summary

AdvantagesSimple algorithm for ordering polygons

DisadvantagesSorting criteria difficult to produceRedraws same pixel many timesSorting can also be expensive

Page 27: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

27/62

Depth (“Z”) Buffer

Simple modification to scan-conversion Maintain a separate buffer storing the closest

“z” value for each pixel Only draw pixel if depth value is closer than

stored “z” valueUpdate buffer with closest depth value

Page 28: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

28/62

Depth (“Z”) Buffer

AdvantagesSimple to implementAllows for a streaming approach to

polygon drawing Disadvantages

Requires extra storage spaceStill lots of overdraw

Page 29: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

29/62

Binary Space Partitioning Trees

BSP tree: organize all of space (hence partition) into a binary tree- Preprocess: overlay a binary tree on objects in the scene

- Runtime: correctly traversing this tree enumerates objects from back to front

- Idea: divide space recursively into half-spaces by choosing splitting planes

Splitting planes can be arbitrarily oriented

Page 30: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

30/62

BSP Trees: Objects

1 2 3

45

6 78

9

Page 31: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

31/62

BSP Trees: Objects

1 2 3

45

6 78

9

+

-

Page 32: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

32/62

BSP Trees: Objects

1 2 3

45

6 78

9

985 61 42 3

Put front objects in the left branch

7

+

--+

Page 33: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

33/62

BSP Trees: Objects

1 2 3

45

6 78

9

985 61 42 3

Put front objects in the left branch

7

-+

-+ -+

Page 34: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

34/62

BSP Trees: Objects

1 2 3

45

6 78

9

895 6

1

32 4

Put front objects in the left branch

7

-+

-+ -+

-+ -+ -+

Page 35: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

35/62

BSP Trees: Objects

1 2 3

45

6 78

9

865 6

1

32

2 4

Put front objects in the left branch

7 9

-+

-+ -+

+ + -+- -

+ - + -

Page 36: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

36/62

BSP Trees: Objects

1 2 3

45

6 78

9

865 6

1

32

2 4

Put front objects in the left branch

7 9

-+

-+ -+

+ + -+- -

+ - + -

When to stop the recursion?

Page 37: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

37/62

Object Splitting

No bunnies were harmed in my example But what if a splitting plane passes through

an object?- Split the object; give half to each node:

- Worst case: can create up to O(n3) objects!

Ouch

Page 38: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

38/62

Building a BSP Tree

Choose a splitting polygon Sort all other polygons as

Front Behind Crossing On

Add “front” polygons to front child, “behind” to back child

Split “crossing” polygons with infinite plane Add “on” polygons to root Recur

Page 39: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

39/62

Building a BSP Tree

1 2

3

4

5

6

7

Page 40: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

40/62

Building a BSP Tree

1 2

3

4

5

6

7

2,3,4,5,6,7

1

b

Page 41: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

41/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

3

7-2,6, 5-2

1

b

bf

2,4,5-1,7-1

Page 42: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

42/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2 4, 5-1

3

7-17-2,6, 5-2

1

b

b

b

f

f

Page 43: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

43/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

5-1

3

7-1

47-2,6, 5-2

1

b

b

b

b

f

f

Page 44: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

44/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

5-1

3

7-1

47-2,6, 5-2

1

b

b

b

b

f

f

Page 45: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

45/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

5-1

3

7-1

47-2,6, 5-2

1

b

b

b

b

f

f

Page 46: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

46/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

7-2

5-1

3

7-1

46, 5-2

1

b b

b

b

b

f

f

Page 47: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

47/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

5-2

2

7-2

5-1

3

7-1

46

1

b b

bb

b

b

f

f

Page 48: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

48/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

b

Page 49: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

49/62

2

7-2

Building a BSP Tree

1 2

3

4

6

5-1

3

7-1

46

1

7-2

7-1

5-2

5-1

b b

b

b

b

f

f

5-2

b

Page 50: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

50/62

Rendering with a BSP Tree

If eye is in front of plane Draw “back” polygons Draw “on” polygons Draw “front” polygons

If eye is behind plane Draw “front” polygons Draw “on” polygons Draw “back” polygons

Else eye is on plane Draw “front” polygons Draw “back” polygons

Page 51: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

51/62

BSP Trees: Objects

1 2 3

45

6 78

9

865 6

1

32

2 4

Correctly traversing this tree enumerates objects from back to front

7 9

-+

-+ -+

+ + -+- -

+ - + -

Traversal order?

Page 52: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

52/62

BSP Trees: Objects

1 2 3

45

6 78

9

865 6

1

32

2 4

Correctly traversing this tree enumerates objects from back to front

7 9

-+

-+ -+

+ + -+- -

+ - + -

Traversal order:8->9->7->6->5->3->4->2->1

Page 53: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

53/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

Traversal order: 2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

b

Page 54: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

54/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

Traversal order:6->(5-2)->(7-2)->3->(5-1)->4->(7-1)->2->1

2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

b

Page 55: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

55/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

Traversal order: 2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

b

Page 56: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

56/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

bTraversal order:1->2->(7-1)->4->(5-1)->3->(7-2)->(5-2)->6

Page 57: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

57/62

Building a BSP Tree

1 2

3

4

6

7-2

7-1

5-2

5-1

Traversal order? 2

7-2

5-1

3

7-1

46

1

b b

b

b

b

f

f

5-2

b

Page 58: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

58/62

Rendering with a BSP Tree

Advantages No depth comparisons needed Polygons split and ordered automatically

Disadvantages Computationally intense preprocess stage

restricts algorithm to static scenes Splitting increases polygon count Redraws same pixel many times Choosing splitting plane not an exact science

Page 59: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

59/62

Improved BSP Rendering

Take advantage of view direction to cull away polygons behind viewer

Page 60: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

60/62

Improved BSP Rendering

Take advantage of view direction to cull away polygons behind viewer

View frustum

Page 61: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

61/62

Improved BSP Rendering

Take advantage of view direction to cull away polygons behind viewer

Page 62: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

62/62

OpenGL and Hidden Surfaces

glEnable(GL_DEPTH_TEST);

glEnable(GL_CULL_FACE);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glCullFace ( GL_BACK );

Page 63: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

63/62

Page 64: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

64/62

Scan Line Algorithm

Assume for each line of screen, we have scan-lines for all polygons intersecting that line

For each polygon, keep track of extents of scan line

Whenever the x-extents of two scan lines overlap, determine ordering of two polygons

Page 65: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

65/62

Scan Line Algorithm

Page 66: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

66/62

Scan Line Algorithm

Page 67: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

67/62

Scan Line Algorithm

Page 68: 1 Dr. Scott Schaefer Hidden Surfaces. 2/62 Hidden Surfaces

68/62

Scan Line Algorithm

AdvantagesTakes advantage of coherence resulting in

fast algorithmDoes not require as much storage as depth

buffer Disadvantages

More complex algorithmRequires all polygons sent to GPU before

drawing