next up previous contents index
Next: Cell Traversal Up: Ray Casting Previous: Ray Casting   Contents   Index


Naïve Ray Casting

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.

Figure 1.1: An example of hierarchical pruning for ray casting (in 2D). With a K-D tree structure, the application can isolate the nearest region in $ O\left(\log(N)\right)$ time.
\includegraphics[bb=140 437 463 680,width=\linewidth,height=3in,keepaspectratio=true,clip=true]{previous_work/ray_cast_pruning}

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.


next up previous contents index
Next: Cell Traversal Up: Ray Casting Previous: Ray Casting   Contents   Index
Kenneth D Moreland 2004-07-16