Graphics Reference
In-Depth Information
7.3
The Schumacker List Priority Algorithm
The original list priority algorithm is due to [SBGS69]. Its major contribution was the
idea that faces of objects can sometimes be given a priory ordering from which their
visibility can be computed independently of the viewpoint. Figure 7.2 shows an
example of this. Figure 7.2(a) shows possible priority numbers for the faces. Figure
7.2(b) shows how one uses these numbers. Once an actual viewpoint is specified, one
eliminates back faces (shown with dotted lines) and then uses the priority numbers
on the remaining faces to tell which face is in “front” of another one. More accurately,
if one face has a lower priority number than another one, then this means that the
second will never obscure the first. In the figure, we would conclude that the face with
priority number 2 does not obscure the face with priority number 1. Given the
priority numbers we can then use the so-called painter's algorithm , Algorithm 7.3.1,
to draw the scene. The painter's algorithm gets its name from the way a painter paints
an oil painting. As the brush draws over other paint it covers it up.
Of course, the priority numbering that Schumacker was looking for does not
always exist for the whole world. One can, however, divide the world into prio-
ritizable clusters , that is, collections of faces within which one can assign priority
numbers to each face with the meaning above. These clusters will then themselves
have to be prioritized. One big problem with Schumacker's approach was that too
Figure 7.2.
A priority ordering for faces.
Given:
The faces of a scene listed in “back” to “front” order, meaning that if
face A is in back of face B , or equivalently, face B is in front of face A ,
then A will not obscure B in any way.
Draw the scene by writing the faces to the frame buffer in back to front order.
Algorithm 7.3.1.
The painter's algorithm.
Search WWH ::




Custom Search