0% found this document useful (0 votes)
17 views

SurfaceDetectionMethods Rev 2020

Visible surface detection techniques determine which surfaces are visible within a 3D scene from a given viewpoint. Common techniques include back face detection, which discards back-facing polygons, and depth-buffer and scan-line methods, which compare depth values of surfaces at each pixel or along scan-lines to determine visibility. The A-buffer method extends the depth buffer to allow for transparency.

Uploaded by

Kriti Gautam
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

SurfaceDetectionMethods Rev 2020

Visible surface detection techniques determine which surfaces are visible within a 3D scene from a given viewpoint. Common techniques include back face detection, which discards back-facing polygons, and depth-buffer and scan-line methods, which compare depth values of surfaces at each pixel or along scan-lines to determine visibility. The A-buffer method extends the depth buffer to allow for transparency.

Uploaded by

Kriti Gautam
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

1

of
28

Visible Surface Detection Methods


2
of
28
Contents
we will start to take a look at visible surface
detection techniques:
– Why surface detection?
– Back face detection
– Depth-buffer method
– A-buffer method
– Scan-line method
3
of
28 No Lines Removed
4
of
28 Hidden Lines Removed
5
of
28 Hidden Surfaces Removed
6
of
28
Why?
We must determine what is visible within a
scene from a chosen viewing position
For 3D worlds this is known as visible
surface detection or hidden surface
elimination
7
of
28
Two Main Approaches
Visible surface detection algorithms are
broadly classified as:
– Object Space Methods: Compares objects
and parts of objects to each other within the
scene definition to determine which surfaces
are visible
– Image Space Methods: Visibility is decided
point-by-point at each pixel position on the
projection plane
Image space methods are by far the more
common
8
of
28
Back-Face Detection
The simplest thing we can do is find the
faces on the backs of polyhedra and discard
them
9
of
28
Back Face Detection Method
10
of
28
Back Face Detection Method
11
of
28
Depth-Buffer Method
Compares surface depth values throughout
a scene for each pixel position on the
projection plane
Usually applied to scenes only containing
polygons
As depth values can be computed easily,
this tends to be very fast
Also often called the z-buffer method
Images taken from Hearn & Baker, “Computer Graphics with OpenGL” (2004)

of
28
12
Depth-Buffer Method (cont…)
13
of
28
Depth-Buffer Algorithm
1. Initialise the depth buffer and frame buffer
so that for all buffer positions (x, y)
depthBuff(x, y) = 0
frameBuff(x, y) = bgColour
14
of
28
Depth-Buffer Algorithm (cont…)
2. Process each polygon in a scene, one at
a time
– For each projected (x, y) pixel position of a
polygon, calculate the depth z (if not already
known)
– If z > depthBuff(x, y), compute the surface
colour at that position and set
depthBuff(x, y) = z
frameBuff(x, y) = surfColour(x, y)
After all surfaces are processed depthBuff
and frameBuff will store correct values
15
of
28
Calculating Depth
At any surface position the depth is
calculated from the plane equation as:

For any scan line adjacent x positions differ


by ±1, as do adjacent y positions
16
of
28
Iterative Calculations
The depth-buffer algorithm proceeds by
starting at the top vertex of the polygon
Then we recursively calculate the
x-coordinate values down a left edge of the
polygon
The x value for the beginning position on
each scan line can be calculated from the
previous one

where m is the slope


17
of
28
Iterative Calculations (cont…)
Depth values along the edge being
considered are calculated using
18
of
28
19
of
28
Iterative Calculations (cont…)

top scan line

y scan line

y - 1 scan line

bottom scan line

x x’
20
of
28
A-Buffer Method
The A-buffer method is an extension of the
depth-buffer method
The A-buffer method is visibility detection
method developed at Lucasfilm Studios for
the rendering system REYES (Renders
Everything You Ever Saw)
21
of
28
A-Buffer Method (cont…)
The A-buffer expands on the depth buffer
method to allow transparencies
The key data structure in the A-buffer is the
accumulation buffer
22
of
28
A-Buffer Method (cont…)

If depth is >= 0, then the surface data field


stores the depth of that pixel position as
before
If depth < 0 then the data filed stores a
pointer to a linked list of surface data
23
of
28
A-Buffer Method (cont…)
Surface information in the A-buffer includes:
– RGB intensity components
– Opacity parameter
– Depth
– Percent of area coverage
– Surface identifier
– Other surface rendering parameters
The algorithm proceeds just like the depth
buffer algorithm
The depth and opacity values are used to
determine the final colour of a pixel
24
of
28
Scan-Line Method
An image space method for identifying
visible surfaces
Computes and compares depth values
along the various scan-lines for a scene
25
of
28
Scan-Line Method (cont…)
Two important tables are maintained:
– The edge table
– The surface facet table
The edge table contains:
– Coordinate end points of reach line in the
scene
– The inverse slope of each line
– Pointers into the surface facet table to
connect edges to surfaces
26
of
28
Scan-Line Method (cont…)
27
of
28
Scan-Line Method (cont…)
The surface facet tables contains:
– The plane coefficients
– Surface material properties
– Other surface data
– Maybe pointers into the edge table
28
of
28
Scan-Line Method (cont…)
To facilitate the search for surfaces crossing
a given scan-line an active list of edges is
formed for each scan-line as it is processed
The active list stores only those edges that
cross the scan-line in order of increasing x
Also a flag is set for each surface to indicate
whether a position along a scan-line is either
inside or outside the surface
29
of
28
Scan-Line Method (cont…)
Pixel positions across each scan-line are
processed from left to right
At the left intersection with a surface the
surface flag is turned on
At the right intersection point the flag is
turned off
We only need to perform depth calculations
when more than one surface has its flag
turned on at a certain scan-line position
Images taken from Hearn & Baker, “Computer Graphics with OpenGL” (2004)

of
28
30
Scan Line Method Example
31
of
28
Scan-Line Method Limitations
The scan-line method runs into trouble when
Images taken from Hearn & Baker, “Computer Graphics with OpenGL” (2004)

surfaces cut through each other or otherwise


cyclically overlap
Such surfaces need to be divided
32
of
28
Summary
We need to make sure that we only draw
visible surfaces when rendering scenes
There are a number of techniques for doing
this such as
– Back face detection
– Depth-buffer method
– A-buffer method
– Scan-line method

You might also like