| OCR Text |
Show 21 contains the objects in each branch of the hierarchy. After the hierarchy and bounding volumes were established, the ray intersection method required intersecting a ray with a bounding volume for a branch of the hierarchy. If the ray intersected a volume, the objects contained in the volume would then be tested. If the ray did not intersect a volume, the ray did not have to be tested against all the objects inside the volume, providing substantial savings. Some improvements to this approach were described by Kay and Kajiya [24]. A set of bounding plane normals was used to generate convex hulls of objects in the hierarchy. The distance to the convex hull can be calculated very efficiently, and the fact that a ray does not intersect a convex hull (a rejection) can be computed with just six subtractions, six multiplies, and three comparisons. Kay and Kajiya also describe the use of a heap to sort the intersections within a convex hull. This provides additional savings as it does not require evaluations of all intersection points. 3.3 Octrees Another approach to shrinking the space searched for ray intersections is due to Glassner [16]. A box was placed around the space of interest, bounding all geometric primitives and the point of view. The bounding box was then subdivided by splitting it in two halves in each of three cartesian planes. This yielded eight sub-boxes (thus creating an octree ), into which were placed references to any objects whose surfaces lay within a given sub-box. The criteria for subdividing an octree box were that the box contained more than a preselected number of surfaces and that the subdivision level did not exceed a certain depth. Octrees provide adaptive subdivision of the three-dimensional bounds of a scene. (The maximum depth constraint on the octree was employed because certain geometries could drive the octree subdivision to an infinite depth.) Octrees were selected as the method |