Graphics Reference
In-Depth Information
Figure 7.11.
Determining a back-to-front order
for voxels.
consider Figure 7.11 and assume that the camera is in the first octant looking toward
the origin. In that case, the sequence 8, 7, 4, 6, 5, 2, 3, 1 is one order in which to list
the voxels so that no voxel in the list will ever be obscured by a voxel appearing earlier
in the list. As each voxel is subdivided, we would use the same order for the new sub-
divided voxels.
Assuming that the voxel faces are parallel to the coordinate planes, it is straight-
forward to define a back-to-front order for the voxels for an arbitrary orthographic
projection based simply on knowing into which of the eight octants the view plane
normal is pointing. This can be generalized to an arbitrary parallel projection, not
just orthographic projections. Having decided on a back-to-front order of the voxels
(there is more than one), one then simply writes them to the frame buffer in that order
like in the painter's algorithm. For more details and references to papers see [FVFH90]
and [Roge98].
For a visible surface algorithm based on ray tracing in the volume rendering case
see Chapter 10. One has to define discrete 3d rays first, which is done in Section 10.4.1.
7.10
Curved Surface Algorithms
One of the earliest curved surface visible surface algorithms is Catmull's z-buffer algo-
rithm described in [Catm75]. It recursively subdivided surface patches until they
covered a single pixel and then updated the z-buffer appropriately. In this section we
describe a scan line approach that is due to Blinn ([Blin81]). Before we start, however,
we need to point out that curved surface algorithms like Blinn's are hardly, if ever,
used anymore. Nowadays, one simply generates a sufficiently close polygonal approx-
imation to the surface and displays those polygons. We will have more to say about
this in Chapter 14. High-performance graphics systems now have hardware support
to make this feasible. Nevertheless, it is worthwhile discussing Blinn's algorithm
anyway because it brings out some interesting aspects of curved surfaces.
Let us begin with a review of the polygonal case. The top level scan line algorithm
was:
Search WWH ::




Custom Search