Shirley and Tuchman [86] proposed the first algorithm for projecting cells of unstructured grids. Like most other cell projection algorithms, Shirley and Tuchman's algorithm, for simplicity, works with a single type of polyhedron: the tetrahedron. Because their algorithm works exclusively with tetrahedra, they dubbed their algorithm projected tetrahedra. Thanks to its simplicity and effectiveness, a significant number of rendering systems still uses the projected tetrahedra algorithm today.
Shirley and Tuchman chose the tetrahedron because it is a simplex in three dimensions [36]. That is, the tetrahedron is the simplest possible polyhedron; it has the minimum number of vertices (4), edges (6), or faces (4) required to construct a polyhedron. A tetrahedron is always simple (non self-intersecting) and convex (any segment connecting two points within the tetrahedron is completely contained by the tetrahedron). Furthermore, we can decompose any simple polyhedron into tetrahedra. Thus, the projected tetrahedra algorithm will work for general unstructured grids once we decompose them into tetrahedra.
![]() |
Shirley and Tuchman noted that when a tetrahedron projects onto a viewing plane, they could classify it in one of four ways, shown in Figure 1.3. If the tetrahedron is in general position, it will fall into Class 1 or Class 2. If one or two faces are perpendicular to the viewing plane, it will fall into Class 3 or Class 4, respectively. By comparing the dot products of the surface normals with the viewing vector, Shirley and Tuchman were able to classify the tetrahedra.
Once it has determined the projection class, the algorithm can break the projection into triangles. Figure 1.3 shows how Shirley and Tuchman decompose each projection into triangles. No triangular region crosses an edge of the projected tetrahedra. Thus, assuming we interpolate parameters linearly through the tetrahedron, the parameters vary linearly within the triangles. Once the triangles have been determined, Shirley and Tuchman feed them to graphics hardware to render.
Wilhelms and van Gelder [102] propose a similar algorithm that projects hexahedra instead of tetrahedra. Although the hexahedron is not as versatile as a tetrahedron--in general, a polyhedron cannot be decomposed into hexahedra--it is a common element in unstructured grids. Furthermore, we require five or six tetrahedra (depending on layout) to decompose a hexahedron. Therefore, projecting the hexahedra directly can lead to a substantial performance improvement.