i
i
i
i
i
i
i
i
28.2. 3D Scalar Fields 719
find volume entry and exit points a and b
L = c
b
Δs = distance(a, b)
p = b
for i =1to N do
p = p − Δs(b −a)
L = L +(1− d(p)aΔsL + d(p )a Δsc(p))
The step size Δs will determine the quality of the integration. To reduce the
number of variables, we can use a new density function g(p)=d(p)a.
In some applications direct volume rendering is used to render something sim-
ilar to surfaces. In these cases the transfer function on density is “on” or “off” and
the gradient of the number density is used to get a surface normal for shading.
This can produce images of pseudosurfaces that are less sensitive to noise than
traditional isosurfacing.
Another way to do volume rendering is maximum-intensity projection. Here,
we set each pixel to the maximum density value encountered along a ray. This
turns the ray integration into a search along the ray which is more efficient. Fig-
ure 28.12 shows an image generated using maximum-intensity projection.
Frequently Asked Questions
• What is the best transfer function for direct volume rendering?
The answer depends highly on the application and the characteristics of the data.
Some empirical tests have been run and can be found in (Pfister et al., 2001). Var-
ious optical models used in direct volume rendering are described in (Max, 1995).
• What do I do to visualize vector or tensor data?
Vector data is often visualized using streamlines, arrows, and line-integral convo-
lution (LIC). Such techniques are surveyed in (Interrante & Grosch, 1997). Tensor
data is more problematic. Even simple diffusion tensor data is hard to visualize
effectively because you just run out of display dimensions for mapping of data
dimensions. See (Kindlmann et al., 2000).
• How do I interactively view a volume by changing isovalues?
One way is to use ray tracing on a parallel machine. The other is to use polygonal
isosurfacing with a preprocess that helps search for cells containing an isosurface.