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

68
1 Dr. Scott Schaefer Hidden Surfaces

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

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