Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCE 441: Computer Graphics Hidden Surface Removal (Cont.)

Similar presentations


Presentation on theme: "CSCE 441: Computer Graphics Hidden Surface Removal (Cont.)"— Presentation transcript:

1 CSCE 441: Computer Graphics Hidden Surface Removal (Cont.)
Jinxiang Chai

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

3 Review: Backface Culling
, draw polygon view direction

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

5 Review: 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

6 Review: Building 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 5-1 5-2

7 Rendering with a BSP Tree
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

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

9 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

10 Different View Points? 6 7-2 5-2 3 7-1 5-1 1 2 4 1 1 V0 3
b 3 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-1 7-2 f b b 4 6 2 b f 5-1 5-2

11 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 Vnew V0 5 f b 1,2,3,4 6,7

12 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 Vnew V0 5 f b 1,2,3,4 6,7

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

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

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

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

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

18 Different View Points? - + Vnew 6 7-2 5-2 3 7-1 5-1 1 1 2 4 1 V0 3 7-1
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

19 Different View Points? - + Vnew 6 7-2 5-2 3 7-1 5-1 1 1 2 4 1 V0 3 7-1
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

20 Different View Points? Vnew 6 7-2 5-2 3 7-1 5-1 1 1 2 4 1 V0 3 7-1 7-2
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

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

22 Summary: BSP Trees Cons:
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 Not suitable for moving objects

23 Outline Backface Culling Painter’s algorithm BSP Z-buffer Ray casting
Reading: section 9-1 to 9-11, 9-14,9-15

24 Depth (“Z”) Buffer Simple modification to scan-conversion
Maintain a separate buffer storing the closest “z” value for each pixel—depth buffer Only draw pixel if depth value is closer than stored “z” value Update buffer with closest depth value Work in normalized coordinate space [0.0…1.0]

25 NOTE: Can draw these shapes in any order
Z-Buffering Example z = 1.0 z = 1.0 z = 0.3 z = 0.7 z = 0.3 z = 0.1 z = 1.0 z = 0.3 z = 0.1 z = 1.0 z = 0.7 z = 0.3 z = 0.1 NOTE: Can draw these shapes in any order

26 Depth Buffer Algorithm
Initialize the depth buffer and frame buffer for every pixel - depthBuff(x,y)=1.0; - frameBuff(x,y)=backgndColor; Process each polygon in a scene, one at a time. - for each pixel (x,y), calculate the depth z (if not already known). - if z <depthBuff(x,y), compute the surface color at (x,y) and set depthBuff(x,y)=z; frameBuff(x,y)=surfColor(x,y);

27 How to Calculate “z”? This is easy to implement for polygon surfaces
v0 p=[x,y,z] v1 v2 Given the pixel coordinates (x,y), how to calculate the z value? use plane normal

28 How to Calculate “z”? This is easy to implement for polygon surfaces
v0 p=[x,y,z] v1 v2 Plane normal (p-v0)∙((v2-v0)x(v1-v0))=0 Plane equation: Ax+By+Cz+D=0 P=[x,y,z]

29 How to Calculate “z”? This is easy to implement for polygon surfaces
How can we speed up the calculation? Plane equation: Ax+By+Cz+D=0 p=[x,y,z]

30 How to Calculate “z”? This is easy to implement for polygon surfaces
How can we speed up the calculation? - scan line conversion Plane equation: Ax+By+Cz+D=0 p=[x,y,z]

31 How to Calculate “z”? Update “z” values using scan line conversion algorithm

32 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0

33 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0

34 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0

35 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0

36 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0

37 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0 What’s the x,y,z value for this pixel?

38 How to Calculate “z”? Update “z” values using scan line conversion algorithm Plane equation: Ax+By+Cz+D=0 What’s the xk+1,yk+1,zk+1 values for the next horizontal pixel?

39 Depth (“Z”) Buffer Advantages Disadvantages
Always works. The nearest object always determines the color of a pixel Polygon drawn in any order Commonly in hardware Disadvantages Needs a whole extra buffer (depth buffer) Requires extra storage space (How big?) Still lots of overdraw

40 Depth (“Z”) Buffer Advantages Disadvantages
Always works. The nearest object always determines the color of a pixel Polygon drawn in any order Commonly in hardware Disadvantages Needs a whole extra buffer Requires extra storage space (How big?) (1k*1k*24bits) Still lots of overdraw

41 Outline Backface Culling Painter’s algorithm BSP Z-buffer Ray casting
Reading: section 9-1 to 9-11, 9-14,9-15

42 Ray Casting Key idea: for every pixel, cast a ray, find the closest point on the object and draw the point

43 Ray Casting For each pixel enter Pij
- Send a ray from eye point, c, through pij into scene - Intersect ray with each object - Select the nearest intersection Effective for scenes with curved surfaces, particularly sphere

44 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk)

45 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) Intersection with polygons?

46 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) Intersection with polygons? Ray equation: Plane equation: Ax+By+Cz+D=0 Plug in and calculate the parameter value t!

47 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) Intersection with spheres? Plug in and calculate the parameter value t!

48 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) Intersection with spheres? Ray equation: Sphere equation: (x-x0)2+(y-y0)2+(z-z0)2=r2 Plug in and calculate the parameter value t!

49 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) Intersection with curved surfaces? Ray equation: Curved surface equation: f(x,y,z)=0 Plug in and calculate the parameter value t!

50 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) - Q: given the set {tk}, what is the first intersection point?

51 Ray Casting Implementation - Might parameterize each ray as
- Each object Ok returns tk>0 such that first intersection with ok occurs at r(tk) - Q: given the set {tk}, what is the first intersection point?

52 Ray Casting Ray casting properties: - process pixels one at a time
- draw each visible pixel once - efficient algorithm needed for ray-object intersection - may (not) use pixel coherence - simple but generally not used

53 Hidden Surface Removal: opengl
Backface culling - glEnable(GL_CULL_FACE), glDisable(GL_CULL_FACE) - glCullFace(GL_BACK) , cull polygon view direction

54 Z-buffer: opengl In opengl, depth values are normalized to [0.0,1.0]
- Specify depth-buffer operations glutInitDisplayMode // with argument GLUT_DEPTH - Specify initial depth-buffer value glClear(GL_DEPTH_BUFFER_BIT) // initialize depth-buffer values to 1.0 glClearDepth (depth) // specify an initial depth-buffer value - Activate depth-testing operations glEnable (GL_DEPTH_TEST)

55 Summary Backface Culling Painter’s algorithm BSP Z-buffer Ray casting


Download ppt "CSCE 441: Computer Graphics Hidden Surface Removal (Cont.)"

Similar presentations


Ads by Google