SlideShare a Scribd company logo
1 of 30
Download to read offline
Computer Graphics : Hidden Surfaces
Dr. Bunil Kumar Balabantaray
Visible-Surface Detection 1
Problem:
Given a scene and a projection,
what can we see?
Visible-Surface Detection 2
Terminology:
Visible-surface detection vs. hidden-surface removal
Hidden-line removal vs. hidden-surface removal
Many algorithms:
• Complexity scene
• Type of objects
• Hardware
Visible-Surface Detection 3
Two main types of algorithms:
Object space: Determine which part of the object
are visible
Image space: Determine per pixel which point of
an object is visible
H&B 16-1:504
Object space Image space
Visible-Surface Detection 4
Visible-surface detection = sort for depth
• what and in what order varies
Performance: use coherence
• Objects
• Position in world space
• Position in image space
• Time
H&B 16-1:504
Visible-Surface Detection 5
Four algorithms:
• Back-face elimination
• Depth-buffer
• Depth-sorting
• Ray-casting
But there are many other.
H&B 16
Back-face elimination 1
We cannot see the back-face of solid objects:
Hence, these can be ignored
H&B 16-2:504-505
face
back
:
0

N
V
V
N
Back-face elimination 2
We cannot see the back-face of solid objects:
Hence, these can be ignored
face
front
:
0

N
V
V
N
H&B 16-2:504-505
Back-face elimination 3
• Object-space method
• Works fine for convex polyhedra: ±50% removed
• Concave or overlapping polyhedra: require additional
processing
• Interior of objects can not be viewed
Partially visible front faces
H&B 16-2:504-505
Depth-Buffer Algorithm 1
• Image-space method
• Aka z-buffer algorithm
xv
yv
zv
Normalized view volume
View plane
pixel
front =
visible
Algorithm:
Draw polygons,
Remember the
color most in front.
H&B 16-3:505-508
Depth-Buffer Algorithm 2
var zbuf: array[N,N] of real; { z-buffer: 0=near, 1=far }
fbuf: array[N,N] of color; { frame-buffer }
For all 1<= i, j <=N do
zbuf[i,j] := 1.0; col[i,j] := BackgroundColour;
For all polygons do { scan conversion }
For all covered pixels (i,j) do
Calculate depth z;
If z < zbuf[i,j] then { closer! }
zbuf[i,j] := z;
fbuf[i,j] := surfacecolor(i,j);
Sorting
H&B 16-3:505-508
polygon
Depth-Buffer Algorithm 3
Fast calculation z: use coherence.
C
A
y
x
z
y
x
z
C
D
By
x
A
y
x
z
C
D
By
Ax
y
x
z
D
Cz
By
Ax

















)
,
(
)
,
1
(
:
Thus
)
1
(
)
,
1
(
:
Also
)
,
(
:
Hence
0
:
Plane
scan line
x
y
x+1
display
C
B
y
x
z
y
x
z 

 )
1
,
(
)
,
(
:
Also
H&B 16-3:505-508
Depth-Buffer Algorithm 4
+ Easy to implement
+ Hardware supported
+ Polygons can be processed in arbitrary order
+ Fast: ~ #polygons, #covered pixels
- Costs memory
- Color calculation sometimes done multiple times
- Transparancy is tricky
H&B 16-3:505-508
Depth-Sorting Algorithm 1
• Image and Object space
• Aka Painter’s algorithm
1. Sort surfaces for depth
2. Draw them back to front
H&B 16-6:511-514
Depth-Sorting Algorithm 2
Simplistic version sorting:
• Sort polygons for (average/frontal) z-value
xv
zv
4
3
2
1
display
xv
zv
4?
3?
2?
1?
display
3!
4!
1!
2!
H&B 16-6:511-514
Depth-Sorting Algorithm 3
A polygon S can be drawn if all remaining polygons S’
satisfy one of the following tests:
1. No overlap of bounding rectangles of S and S’
2. S is completely behind plane of S’
3. S’ is completely in front of plane of S
4. Projections S and S’ do not overlap
H&B 16-6:511-514
Depth-Sorting Algorithm 4
1. No overlap of bounding rectangles of S and S’
xv
zv
display
xv
yv
S
S’
S
S’
H&B 16-6:511-514
Depth-Sorting Algorithm 5
xv
zv
display
xv
yv
2. S is completely behind plane of S’
Substitute all vertices of S in plane equation S’, and
test if the result is always negative.
S
S’
S
S’
H&B 16-6:511-514
Depth-Sorting Algorithm 6
xv
zv
display
xv
yv
3. S’ is completely in front of plane of S
Substitute all vertices of S’ in plane equation of S, and
test if the result is always positive
S
S’
S
S’
H&B 16-6:511-514
Depth-Sorting Algorithm 7
xv
zv
display
xv
yv
4. Projections S and S’ do not overlap
S
S’
S
S’
H&B 16-6:511-514
Depth-Sorting Algorithm 8
xv
zv
display
If all tests fail: Swap S and S’,
and restart with S’.
S’
S S’’
H&B 16-6:511-514
Depth-Sorting Algorithm 9
xv
yv
Problems: circularity and intersections
Solution: Cut up polygons.
xv
yv
H&B 16-6:511-514
Depth-Sorting Algorithm 10
- Tricky to implement
- Polygons have to be known from the start
- Slow: ~ #polygons2
0
1
2
3 0
1
2
3
-1
-0.5
0
0.5
1
0
1
2
3
+ Fine for certain types of objects,
such as plots of z=f(x, y) or
non-intersecting spheres
+ Produces exact boundaries polygons
H&B 16-6:511-514
Ray-casting Algorithm 1
• Image-space method
• Related to depth-buffer, order is different
xv
yv
zv
Normalized view volume
View plane
pixel
front =
visible
Algorithm:
Per pixel:
- Calculate
intersection points
- Determine front one
z
H&B 16-10:518-519
Ray-casting Algorithm 2
Var fbuf: array[N,N] of colour; { frame-buffer }
n : integer; { #intersections }
z : array[MaxIntsec] of real; { intersections }
p : array[MaxIntsec] of object; { corresp. objects }
For all 1<= i, j <=N do { for alle pixels }
For all objects do
Calculate intersections and add these to z and p,
keeping z and p sorted;
if n > 1 then fbuf[i,j] := surfacecolor(p[1], z[1]);
H&B 16-10:518-519
Ray-casting Algorithm 3
Acceleration intersection calculations:
Use (hierarchical) bounding boxes
xv
yv
zv
z
H&B 16-10:518-519
Ray-casting algorithm 4
+ Relatively easy to implement
+ For some objects very suitable (for instance
spheres and other quadratic surfaces)
+ Transparency can be dealt with easily
- Objects must be known in advance
- Sloooow: ~ #objects*pixels, little coherence
+ Special case of ray-tracing
H&B 16-10:518-519
Comparison
• Hardware available? Use depth-buffer, possibly in
combination with back-face elimination or depth-sort for
part of scene.
• If not, choose dependent on complexity scene and type
of objects:
– Simple scene, few objects: depth-sort
– Quadratic surfaces: ray-casting
– Otherwise: depth-buffer
• Many additional methods to boost performance (kD-
trees, scene decomposition, etc.)
H&B 16-11:519
glEnable(GL_CULL_FACE); // Turn culling on
glCullFace(mode); // Specify what to cull
mode = GL_FRONT or GL_BACK // GL_BACK is default
Orientation matters! If you want to change the default:
glFrontFace(vertexOrder); // Order of vertices
vertexOrder = GL_CW or // Clockwise
GL_CCW; // Counterclockwise (default)
OpenGL backface removal
H&B 16-11:523-525
1
2
3
4
CCW:
front
4
3
2
1
CW:
back
glEnable(GL_DEPTH_TEST); // Turn testing on
glClear(GL_DEPTH_BUFFER_BIT); // Clear depth-buffer,
// typically once per frame
glDepthFunc(condition); // Change test used
condition: GL_LESS // Closer: visible (default)
GL_GREATER // Farther: visible
Note: range between znear and zfar is mapped to [0,1], using one or
two bytes precision. If zfar has an unnecessarily high value,
you loose precision, and artifacts can appear.
OpenGL depth-buffer functions
H&B 16-11:523-525

More Related Content

Similar to Hidden_surfaces.pdf

Visible surface determination
Visible  surface determinationVisible  surface determination
Visible surface determination
Patel Punit
 
Visible surface detection in computer graphic
Visible surface detection in computer graphicVisible surface detection in computer graphic
Visible surface detection in computer graphic
anku2266
 

Similar to Hidden_surfaces.pdf (20)

unit 4.pptx
unit 4.pptxunit 4.pptx
unit 4.pptx
 
testpang
testpangtestpang
testpang
 
UNIT-1.pptx
UNIT-1.pptxUNIT-1.pptx
UNIT-1.pptx
 
Implementation
ImplementationImplementation
Implementation
 
Visible surface determination
Visible  surface determinationVisible  surface determination
Visible surface determination
 
visible surface detection in 3D objects for viewing
visible surface detection in 3D objects for viewingvisible surface detection in 3D objects for viewing
visible surface detection in 3D objects for viewing
 
Searching
SearchingSearching
Searching
 
AI3391 Session 10 A searching algorithm.pptx
AI3391 Session 10 A searching algorithm.pptxAI3391 Session 10 A searching algorithm.pptx
AI3391 Session 10 A searching algorithm.pptx
 
AD3251-Data Structures Design-Notes-Searching-Hashing.pdf
AD3251-Data Structures  Design-Notes-Searching-Hashing.pdfAD3251-Data Structures  Design-Notes-Searching-Hashing.pdf
AD3251-Data Structures Design-Notes-Searching-Hashing.pdf
 
Visible surface detection in computer graphic
Visible surface detection in computer graphicVisible surface detection in computer graphic
Visible surface detection in computer graphic
 
WEEK 4- DLD-GateLvelMinimization.pptx
WEEK 4- DLD-GateLvelMinimization.pptxWEEK 4- DLD-GateLvelMinimization.pptx
WEEK 4- DLD-GateLvelMinimization.pptx
 
artificial intelligence
artificial intelligence artificial intelligence
artificial intelligence
 
3 d
3 d3 d
3 d
 
B. SC CSIT Computer Graphics Unit 4 By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Unit 4 By Tekendra Nath YogiB. SC CSIT Computer Graphics Unit 4 By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Unit 4 By Tekendra Nath Yogi
 
Bidirectional graph search techniques for finding shortest path in image base...
Bidirectional graph search techniques for finding shortest path in image base...Bidirectional graph search techniques for finding shortest path in image base...
Bidirectional graph search techniques for finding shortest path in image base...
 
final_presentation
final_presentationfinal_presentation
final_presentation
 
Computer Vision - Single View
Computer Vision - Single ViewComputer Vision - Single View
Computer Vision - Single View
 
CVGIP_Chia-Pin Tseng
CVGIP_Chia-Pin TsengCVGIP_Chia-Pin Tseng
CVGIP_Chia-Pin Tseng
 
Futher pure mathematics 3 hyperbolic functions
Futher pure mathematics 3 hyperbolic functionsFuther pure mathematics 3 hyperbolic functions
Futher pure mathematics 3 hyperbolic functions
 
Lecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdfLecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdf
 

More from Mattupallipardhu (13)

Module 1.pptx
Module 1.pptxModule 1.pptx
Module 1.pptx
 
Image processing.pptx
Image processing.pptxImage processing.pptx
Image processing.pptx
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
 
Lec_2.pdf
Lec_2.pdfLec_2.pdf
Lec_2.pdf
 
Lec_10.pdf
Lec_10.pdfLec_10.pdf
Lec_10.pdf
 
Lec_4.pdf
Lec_4.pdfLec_4.pdf
Lec_4.pdf
 
2-D Transformations.pdf
2-D Transformations.pdf2-D Transformations.pdf
2-D Transformations.pdf
 
Ray Tracing.pdf
Ray Tracing.pdfRay Tracing.pdf
Ray Tracing.pdf
 
Fundamentals of Computer Graphics.pdf
Fundamentals of Computer Graphics.pdfFundamentals of Computer Graphics.pdf
Fundamentals of Computer Graphics.pdf
 
raster algorithm.pdf
raster algorithm.pdfraster algorithm.pdf
raster algorithm.pdf
 
cathoderaytube.pdf
cathoderaytube.pdfcathoderaytube.pdf
cathoderaytube.pdf
 
2d Transformation.pdf
2d Transformation.pdf2d Transformation.pdf
2d Transformation.pdf
 
3. Syntax Analyzer.pptx
3. Syntax Analyzer.pptx3. Syntax Analyzer.pptx
3. Syntax Analyzer.pptx
 

Recently uploaded

Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 

Recently uploaded (20)

Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 

Hidden_surfaces.pdf

  • 1. Computer Graphics : Hidden Surfaces Dr. Bunil Kumar Balabantaray
  • 2. Visible-Surface Detection 1 Problem: Given a scene and a projection, what can we see?
  • 3. Visible-Surface Detection 2 Terminology: Visible-surface detection vs. hidden-surface removal Hidden-line removal vs. hidden-surface removal Many algorithms: • Complexity scene • Type of objects • Hardware
  • 4. Visible-Surface Detection 3 Two main types of algorithms: Object space: Determine which part of the object are visible Image space: Determine per pixel which point of an object is visible H&B 16-1:504 Object space Image space
  • 5. Visible-Surface Detection 4 Visible-surface detection = sort for depth • what and in what order varies Performance: use coherence • Objects • Position in world space • Position in image space • Time H&B 16-1:504
  • 6. Visible-Surface Detection 5 Four algorithms: • Back-face elimination • Depth-buffer • Depth-sorting • Ray-casting But there are many other. H&B 16
  • 7. Back-face elimination 1 We cannot see the back-face of solid objects: Hence, these can be ignored H&B 16-2:504-505 face back : 0  N V V N
  • 8. Back-face elimination 2 We cannot see the back-face of solid objects: Hence, these can be ignored face front : 0  N V V N H&B 16-2:504-505
  • 9. Back-face elimination 3 • Object-space method • Works fine for convex polyhedra: ±50% removed • Concave or overlapping polyhedra: require additional processing • Interior of objects can not be viewed Partially visible front faces H&B 16-2:504-505
  • 10. Depth-Buffer Algorithm 1 • Image-space method • Aka z-buffer algorithm xv yv zv Normalized view volume View plane pixel front = visible Algorithm: Draw polygons, Remember the color most in front. H&B 16-3:505-508
  • 11. Depth-Buffer Algorithm 2 var zbuf: array[N,N] of real; { z-buffer: 0=near, 1=far } fbuf: array[N,N] of color; { frame-buffer } For all 1<= i, j <=N do zbuf[i,j] := 1.0; col[i,j] := BackgroundColour; For all polygons do { scan conversion } For all covered pixels (i,j) do Calculate depth z; If z < zbuf[i,j] then { closer! } zbuf[i,j] := z; fbuf[i,j] := surfacecolor(i,j); Sorting H&B 16-3:505-508
  • 12. polygon Depth-Buffer Algorithm 3 Fast calculation z: use coherence. C A y x z y x z C D By x A y x z C D By Ax y x z D Cz By Ax                  ) , ( ) , 1 ( : Thus ) 1 ( ) , 1 ( : Also ) , ( : Hence 0 : Plane scan line x y x+1 display C B y x z y x z    ) 1 , ( ) , ( : Also H&B 16-3:505-508
  • 13. Depth-Buffer Algorithm 4 + Easy to implement + Hardware supported + Polygons can be processed in arbitrary order + Fast: ~ #polygons, #covered pixels - Costs memory - Color calculation sometimes done multiple times - Transparancy is tricky H&B 16-3:505-508
  • 14. Depth-Sorting Algorithm 1 • Image and Object space • Aka Painter’s algorithm 1. Sort surfaces for depth 2. Draw them back to front H&B 16-6:511-514
  • 15. Depth-Sorting Algorithm 2 Simplistic version sorting: • Sort polygons for (average/frontal) z-value xv zv 4 3 2 1 display xv zv 4? 3? 2? 1? display 3! 4! 1! 2! H&B 16-6:511-514
  • 16. Depth-Sorting Algorithm 3 A polygon S can be drawn if all remaining polygons S’ satisfy one of the following tests: 1. No overlap of bounding rectangles of S and S’ 2. S is completely behind plane of S’ 3. S’ is completely in front of plane of S 4. Projections S and S’ do not overlap H&B 16-6:511-514
  • 17. Depth-Sorting Algorithm 4 1. No overlap of bounding rectangles of S and S’ xv zv display xv yv S S’ S S’ H&B 16-6:511-514
  • 18. Depth-Sorting Algorithm 5 xv zv display xv yv 2. S is completely behind plane of S’ Substitute all vertices of S in plane equation S’, and test if the result is always negative. S S’ S S’ H&B 16-6:511-514
  • 19. Depth-Sorting Algorithm 6 xv zv display xv yv 3. S’ is completely in front of plane of S Substitute all vertices of S’ in plane equation of S, and test if the result is always positive S S’ S S’ H&B 16-6:511-514
  • 20. Depth-Sorting Algorithm 7 xv zv display xv yv 4. Projections S and S’ do not overlap S S’ S S’ H&B 16-6:511-514
  • 21. Depth-Sorting Algorithm 8 xv zv display If all tests fail: Swap S and S’, and restart with S’. S’ S S’’ H&B 16-6:511-514
  • 22. Depth-Sorting Algorithm 9 xv yv Problems: circularity and intersections Solution: Cut up polygons. xv yv H&B 16-6:511-514
  • 23. Depth-Sorting Algorithm 10 - Tricky to implement - Polygons have to be known from the start - Slow: ~ #polygons2 0 1 2 3 0 1 2 3 -1 -0.5 0 0.5 1 0 1 2 3 + Fine for certain types of objects, such as plots of z=f(x, y) or non-intersecting spheres + Produces exact boundaries polygons H&B 16-6:511-514
  • 24. Ray-casting Algorithm 1 • Image-space method • Related to depth-buffer, order is different xv yv zv Normalized view volume View plane pixel front = visible Algorithm: Per pixel: - Calculate intersection points - Determine front one z H&B 16-10:518-519
  • 25. Ray-casting Algorithm 2 Var fbuf: array[N,N] of colour; { frame-buffer } n : integer; { #intersections } z : array[MaxIntsec] of real; { intersections } p : array[MaxIntsec] of object; { corresp. objects } For all 1<= i, j <=N do { for alle pixels } For all objects do Calculate intersections and add these to z and p, keeping z and p sorted; if n > 1 then fbuf[i,j] := surfacecolor(p[1], z[1]); H&B 16-10:518-519
  • 26. Ray-casting Algorithm 3 Acceleration intersection calculations: Use (hierarchical) bounding boxes xv yv zv z H&B 16-10:518-519
  • 27. Ray-casting algorithm 4 + Relatively easy to implement + For some objects very suitable (for instance spheres and other quadratic surfaces) + Transparency can be dealt with easily - Objects must be known in advance - Sloooow: ~ #objects*pixels, little coherence + Special case of ray-tracing H&B 16-10:518-519
  • 28. Comparison • Hardware available? Use depth-buffer, possibly in combination with back-face elimination or depth-sort for part of scene. • If not, choose dependent on complexity scene and type of objects: – Simple scene, few objects: depth-sort – Quadratic surfaces: ray-casting – Otherwise: depth-buffer • Many additional methods to boost performance (kD- trees, scene decomposition, etc.) H&B 16-11:519
  • 29. glEnable(GL_CULL_FACE); // Turn culling on glCullFace(mode); // Specify what to cull mode = GL_FRONT or GL_BACK // GL_BACK is default Orientation matters! If you want to change the default: glFrontFace(vertexOrder); // Order of vertices vertexOrder = GL_CW or // Clockwise GL_CCW; // Counterclockwise (default) OpenGL backface removal H&B 16-11:523-525 1 2 3 4 CCW: front 4 3 2 1 CW: back
  • 30. glEnable(GL_DEPTH_TEST); // Turn testing on glClear(GL_DEPTH_BUFFER_BIT); // Clear depth-buffer, // typically once per frame glDepthFunc(condition); // Change test used condition: GL_LESS // Closer: visible (default) GL_GREATER // Farther: visible Note: range between znear and zfar is mapped to [0,1], using one or two bytes precision. If zfar has an unnecessarily high value, you loose precision, and artifacts can appear. OpenGL depth-buffer functions H&B 16-11:523-525