Introduction

Visually rich images are often generated from simpler models by applying displacement maps to increase surface detail (Figure 1). Displacement maps are a special type of offset surface, and are usually assumed to perturb surface positions a small distance using some function. Images with displacement maps are usually computed using explicit subdivision [3]. The displacement is often a semi-random procedural function that uses Perlin-style noise [11]. Somewhat surprisingly, displacement maps are almost never used in ray tracing. This turns out to be for entirely technical reasons; a straightforward implementation would need to store more micropolygons than would fit in main memory on most computers [4]. For this reason, sophisticated caching strategies have been suggested [12]. Although caching strategies work well for a variety of applications they are problematic for applications that resist reordering such as Metropolis Light Transport [16]. Alternatively, explicit numeric root-finding can be used, provided the displacements can be nicely bounded [5,8]. A third approach that could work for displacement mapped surfaces is the recursive subdivision scheme used for procedural geometry by Kajiya[6]. This approach requires knowing tight bounds over each subdivided region of the displacement function in order to be efficient. Because most global illumination algorithms require ray tracing, it is desirable to find a simple way to add displacement maps to ray tracing programs. This would allow realism in both global lighting complexity and local geometric complexity.

We introduce a method for ray tracing polygonal models with displacements that avoids complex strategies by restricting the allowable base geometry to triangle meshes with vertex normals. Although this is a narrow class of modeling primitive, almost all other modeling primitives can be converted to triangle meshes in a practical manner. The key problem with triangle meshes is the well-known faceting artifacts. However, we show how to use a deterministic spline displacement function to smooth tessellated models. While we have restricted how our base models must be represented, we feel the resulting benefits in computation and storage make up for this restriction.

In Section 2 we give an overview of our assumptions on the model and the restrictions we impose for our algorithm. In Section 3 we present the ray intersection algorithm for triangles with displacement functions. The requirements for a displacement function used to smooth triangle meshes is discussed in Section 4. Images resulting from the algorithm are shown in Section 5. Finally, we discuss future directions for the work in Section 6.

Figure 1: An image of a complex object created by displacement mapping an icosahedron. The figure is ray traced with global illumination. Only twenty triangles are stored.
\begin{figure}\centerline{\epsfig{figure=spine.eps,width=0.70\textwidth}}\end{figure}

Comments: Brian Smits
2000-06-02