The basic operation of a ray caster is, given a ray originating at a point, determining the first object that the ray intersects. Determining where a ray intersects a cell is a simple and quick operation for practical cells such as polyhedra [1]. To determine the first cell a ray intersects, we could simply intersect the ray with every cell and pick the intersection closest to the origination point in the direction of the ray.
|
Although this approach works, it is unnecessarily computationally intensive to intersect a ray with every cell, and the first-intersection operation must occur many times during a render operation. Therefore, any practical ray casting renderer arranges the objects in a spatial hierarchy to prune away cells quickly as shown in Figure 1.1. The pruning hierarchy is sufficient for ray tracers that principally render opaque surfaces [1]. However, rays intersect far too many cells of a translucent volume (and therefore the system must perform too many first-intersection operations) to make this direct approach practical for volume rendering.