Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCE 441: Computer Graphics Hidden Surface Removal

Similar presentations


Presentation on theme: "CSCE 441: Computer Graphics Hidden Surface Removal"— Presentation transcript:

1 CSCE 441: Computer Graphics Hidden Surface Removal
Jinxiang Chai

2 Review: 3D Geometry Pipeline
Object space World space View space Normalized project space Image space 2

3 3D Rendering Pipeline Modeling transformation lighting
Viewing transformation Project transformation Clipping Scan conversion Image

4 3D Rendering Pipeline Modeling transformation lighting
Transform into 3D world system Illuminate according to lighting and reflectance lighting Transform into 3D camera coordinate system Viewing transformation Transform into 3D normalized project space Project transformation Clipping Clip primitives outside camera’s view Draw pixels (includes texturing, hidden surface, etc.) Scan conversion Image

5 Normalized project space
3D Geometry Pipeline Object space World space View space Normalized project space Image space 5

6 Hidden Surface Removal

7 Hidden Surfaces

8 Hidden Surfaces

9 Hidden Surfaces is the process used to determine which surfaces and parts of surfaces are not visible from a certain viewpoint

10 Polygon Mesh Representation

11 Hidden Surfaces Removal
The goal is to determine which surfaces and parts of surfaces are not visible from a certain viewpoint A.K.A occlusion culling or visible surface determination

12 Outline Backface Culling Painter’s algorithm BSP Z-buffer Ray casting
Required reading: section 16-1 to 16-11

13 Normalized project space
Backface Culling Normalized project space

14 Normalized project space
Backface Culling Normalized project space view direction

15 Normalized project space
Backface Culling Normalized project space view direction

16 Backface Culling view direction

17 Backface Culling , draw polygon view direction

18 Backface Culling , cull polygon view direction

19 Backface Culling Is this all we have to do?

20 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

21 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?

22 Backface Culling Advantages
Improves rendering speed by removing roughly half of polygons from scan conversion Disadvantages Assumes closed surface with consistently oriented polygons NOT a true hidden surface algorithm!!!

23 Painter’s Algorithm Basic idea: similar to oil painting
- draw background first - then most distant object - then nearer object - and so forth

24 Painter’s Algorithm Sort polygons according to distance from viewer
Draw from back (farthest) to front (nearest) - the entire object Near objects will overwrite farther ones

25 Painter’s Example Sort by depth: Green rect Red circle Blue tri
z = 0.7 z = 0.3 z = 0.1 Sort by depth: Green rect Red circle Blue tri z = 0

26 Painter’s Algorithm Does anyone see a problem with this?

27 Painter’s Algorithm Does anyone see a problem with this?
- Objects can have a range of depth, not just a single value - Need to make sure they don’t overlap for this algorithm to work

28 Painter’s Algorithm Does anyone see a problem with this?
- Objects can have a range of depth, not just a single value - Need to make sure they don’t overlap for this algorithm to work

29 Painter’s Algorithm Sort all objects’ zmin and zmax

30 Painter’s Algorithm Sort all objects’ zmin and zmax
If an object is uninterrupted (its zmin and zmax are adjacent in the sorted list), it is fine

31 Painter’s Algorithm Sort all objects’ zmin and zmax
If an object is uninterrupted (its zmin and zmax are adjacent in the sorted list), it is fine 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 yes, need to split one

32 Painter’s Algorithm The splitting step is the tough one
- Need to find a plane to split one polygon 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

33 Painter’s Algorithm The splitting step is the tough one
- Need to find a plane to split one polygon 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

34 Painter’s Algorithm-Summary
Advantages - Simple algorithm for ordering polygons Disadvantages - Splitting is not an easy task - Sorting can also be expensive - Redraws same pixel many times

35 Binary Space Partitioning Trees
Basic principle: Objects in the half space opposite of the viewpoint do not obscure objects in the half space containing the viewpoint; thus, one can safely render them without covering foreground objects 6 4 5 7 1 3 2

36 Binary Space Partitioning Trees
Basic principle: Objects in the half space opposite of the viewpoint do not obscure objects in the half space containing the viewpoint; thus, one can safely render them without covering foreground objects - 6 + 4 5 7 1 3 2

37 Binary Space Partitioning Trees
Basic principle: Objects in the half space opposite of the viewpoint do not obscure objects in the half space containing the viewpoint; thus, one can safely render them without covering foreground objects - 6 + 4 5 7 If we want to draw 5 correctly - we need draw 6 and 7 first, - then draw 5, - then draw 1,2,3,4 1 3 2

38 Binary Space Partitioning Trees
Basic principle: Objects in the half space opposite of the viewpoint do not obscure objects in the half space containing the viewpoint; thus, one can safely render them without covering foreground objects - 6 + 4 5 7 If we want to draw 5 correctly - we need draw 6 and 7 first, - then draw 5, - then draw 1,2,3,4 1 3 2 We need to do this for every polygon Can we do this more efficiently?

39 Binary Space Partitioning Trees
Basic principle: Objects in the half space opposite of the viewpoint do not obscure objects in the half space containing the viewpoint; thus, one can safely render them without covering foreground objects - 6 + 4 5 7 If we want to draw 5 correctly - we need draw 6 and 7 first, - then draw 5, - then draw 1,2,3,4 1 3 2 We need to do this for every polygon Can we do this more efficiently? BSP tree

40 Binary Space Partition 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 // similar to painter’s algorithm - Idea: divide space recursively into half-spaces by choosing splitting planes Splitting planes can be arbitrarily oriented

41 Binary Space Partition Trees (1979)
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

42 BSP Trees: Objects 9 8 6 7 5 4 1 2 3

43 BSP Trees: Objects 9 - 8 6 7 + 5 4 1 2 3

44 BSP Trees: Objects + - - + Put front objects in the left branch 9 8 6
7 + 1 2 3 4 5 6 7 8 9 5 4 1 2 3

45 BSP Trees: Objects + - - + + - Put front objects in the left branch 9
8 6 7 + 1 2 3 4 5 6 7 8 9 + - 5 4 ? ? 1 2 3

46 BSP Trees: Objects + - - + + - Put front objects in the left branch 9
8 6 7 + 5 6 7 8 9 + - 5 4 1 2 3 4 4 1 2 3

47 BSP Trees: Objects + - - + + - + -
Put front objects in the left branch + - 9 - 8 6 7 + 5 6 7 8 9 + - + - 5 4 1 2 3 4 4 ? ? 9 1 2 3

48 BSP Trees: Objects + - + - + - Put front objects in the left branch 9
8 6 7 + - + - 5 4 1 2 3 4 5 6 7 8 9 1 2 3

49 BSP Trees: Objects + - + - + - + - + - + -
Put front objects in the left branch + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 2 4 3 5 6 7 9 8

50 BSP Trees: Objects + - + - + - + - + - + - + - + -
Put front objects in the left branch + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9

51 BSP Trees: Objects + - + - + - + - + - + - + - + -
Put front objects in the left branch + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 When to stop the recursion?

52 Object Splitting No bunnies were harmed in my example
But what if a splitting plane passes through an object?

53 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: Ouch

54 Polygons: BSP Tree Construction
Split along the plane containing any polygon Classify all polygons into positive or negative half-space of the plane If a polygon intersects plane, split it into two Recurse down the negative half-space Recurse down the positive half-space

55 Binary Space Partition Trees (1979)
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

56 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order?

57 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8

58 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8->9

59 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8->9->7

60 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8->9->7->6

61 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8->9->7->6->5

62 BSP Trees: Objects + - + - + - + - + - + - + - + -
Correctly traversing this tree enumerates objects from back to front + - 9 8 6 7 + - + - 5 4 1 + - + - + - 1 2 3 3 5 6 8 + 2 - 6 + - 2 4 7 9 Traversal order: 8->9->7->6->5->3->4->2->1

63 Building a BSP Tree for Polygons
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/current node Recur

64 Building a BSP Tree 6 7 3 5 1 2 4

65 Building a BSP Tree 6 7 3 5 1 2 4 1 b 2,34,5,6,7

66 Building a BSP Tree 6 7 3 5 1 2 4 1 b 2,34,5,6,7 How to divide 2,3,4,5,6,7?

67 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 2,4,5-1,7-1
f b 2,4,5-1,7-1 7-2, 6,5-2

68 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 2,4,5-1,7-1
f b 2,4,5-1,7-1 7-2, 6,5-2

69 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2, 6,5-2 2
f 7-1 b 7-2, 6,5-2 f b 2 4,5-1

70 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-2, 6,5-2 7-1 4 2
f b 7-2, 6,5-2 7-1 f b 4 2 b 5-1

71 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2, 6,5-2 4 2
f b 7-2, 6,5-2 f b 4 2 b 5-1

72 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2, 6,5-2 4 2
f b 7-2, 6,5-2 f b 4 2 b 5-1

73 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6,5-2 2
f b 7-2 f b b 4 6,5-2 2 b 5-1

74 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6 2 5-1
f b 7-2 f b b 4 6 2 b f 5-1 5-2

75 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6 2 5-1
f b 7-2 f b b 4 6 2 b f 5-1 5-2

76 Building a BSP Tree 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6 2 5-1
f b 7-2 f b b 4 6 2 b f 5-1 5-2

77 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b How to traverse the tree? 7-2 f b b 4 6 2 b f 5-1 5-2

78 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b How to traverse the tree? - draw “back” polygons - draw “on” polygons - draw “front” polygons 7-2 f b b 4 6 2 b f 5-1 5-2

79 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 5-1 5-2

80 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6 5-1 5-2

81 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6->(5-2) 5-1 5-2

82 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6->(5-2)->(7-2) 5-1 5-2

83 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6->(5-2)->(7-2)->3 5-1 5-2

84 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6->(5-2)->(7-2)->3->(5-1) 5-1 5-2

85 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f Traversal order: 6->(5-2)->(7-2)->3->(5-1)->4->(7-1)->2->1 5-1 5-2

86 Rendering with a BSP Tree
Interpret the tree relative the position of the viewpoint How to traverse the tree Draw “back” polygons Draw “on” polygons Draw “front” polygons 1 b 3 7-1 f b 7-2 f b b 4 6 2 b f 5-1 5-2

87 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 3 7-1
b 3 7-1 f b Do we need to build a new tree? 7-2 f b b 4 6 2 b f 5-1 5-2

88 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 3 7-1
b 3 7-1 f b Do we need to build a new tree? - No, we use the same tree if objects are static 7-2 f b b 4 6 2 b f 5-1 5-2

89 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 3 7-1
b 3 7-1 f b Do we need to build a new tree? - No, we use the same tree if objects are static How can we traverse the tree? 7-2 f b b 4 6 2 b f 5-1 5-2

90 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 Else eye is on plane - 6 + 4 5 7 1 3 2 Stop here. 5 f b 1,2,3,4 6,7

91 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 Else eye is on plane - 6 + 4 5 7 1 3 2 5 f b 1,2,3,4 6,7

92 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 Else eye is on plane - 6 + 4 5 7 1 3 2 5 f b 1,2,3,4 6,7

93 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 + 7-1 f b 7-2 f b b 4 6 Traversal order: 2 b f 5-1 5-2

94 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1 2 b f 5-1 5-2

95 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1 2 b f 5-1 5-2

96 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1 2 b f 5-1 5-2

97 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2 2 b f 5-1 5-2

98 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2->(7-1) 2 b f 5-1 5-2

99 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2->(7-1)->4 2 b f 5-1 5-2

100 Different View Points? - + 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2->(7-1)->4->(5-1) 2 b f 5-1 5-2

101 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2->(7-1)->4->(5-1)->3 2 b f 5-1 5-2

102 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 3 7-1 7-2 4 6
b 3 7-1 f b 7-2 f b b 4 6 Traversal order: 1->2->(7-1)->4->(5-1)->3->(7-2)->(5-2)->6 2 b f 5-1 5-2

103 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 5-1 5-2

104 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 - 1 b f 3 + 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? Traversal order? 1 5-1 5-2

105 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 - 1 b f 3 + 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? Traversal order? 1->? 5-1 5-2

106 Rendering with a BSP Tree
6 - 7-2 5-2 3 7-1 5-1 + 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->? Traversal order? 5-1 5-2

107 Rendering with a BSP Tree
+ - 6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->? Traversal order? 5-1 5-2

108 Rendering with a BSP Tree
- 6 + 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->? Traversal order? 5-1 5-2

109 Rendering with a BSP Tree
- 6 + 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->6 Traversal order? 5-1 5-2

110 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? Traversal order? 1->6->? 5-1 5-2

111 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->6->5-2 5-1 5-2

112 Rendering with a BSP Tree
6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 b f 3 7-1 b 7-2 f b 4 b 6 2 b f Traversal order? 1->6->(5-2)->(7-2)->3->4->(5-1)->(7-1)->2 5-1 5-2

113 Improved BSP Rendering
Take advantage of view direction to cull away polygons behind viewer

114 Improved BSP Rendering
Take advantage of view direction to cull away polygons behind viewer View frustum

115 Improved BSP Rendering
Take advantage of view direction to cull away polygons behind viewer

116 Summary: BSP Trees Pros: Simple, elegant scheme
No depth comparisons needed Polygons split and ordered automatically Works for moving cameras Only writes to framebuffer (i.e., painters algorithm)

117 Summary: BSP Trees Cons:
Computationally intense preprocess stage restricts algorithm to static scenes Worst-case time to construct tree: O(n3) Splitting increases polygon count Again, O(n3) worst case Redraws same pixel many times Choosing splitting plane not an exact science Not suitable for moving objects

118 Outline Backface Culling Painter’s algorithm BSP Z-buffer Ray casting
Reading: section 16-1 to 16-11


Download ppt "CSCE 441: Computer Graphics Hidden Surface Removal"

Similar presentations


Ads by Google