+>>Does anyone know of any volume visualization research conducted
+>>with non-cubic voxels?
+One problem with some of these schemes
+occurs if the cells are of very different thickness. Unless an adjustment
+is made in the "optical depth" for very thin jelly-blobs, they are very
+transparent in spite of all the work you did rendering them. One
+promising approach is to render "glowing jelly tetrahedra" as
+polygons which are opaque in the middle and transparent at the edges.
I've stayed out of this about as long as I can....
To answer the first question, about "non-cubic" voxels, there are a number
of choices. Before referring to the various articles, let's establish
what we mean by non-cubic voxels. Are we talking gridded data points
which would then result in either rectilinear or curvilinear voxels?
Or are we talking unstructured grids, where the voxels may be tetrahedra,
Assuming either rectilinear voxels or those from unstructured grids, there
are a plethora of papers describing how to render these things. The two
most popular methods are 1) splats and 2) representing the shapes of these
voxels with polygonal objects; tetrahedra, hexahedra, etc. I've tried
implementing 2), with the presumption being that the "fast" graphics
hardware will enable you to do lots of neat stuff with the volume. In
practice, this doesn't work at all for any realistic-sized dataset, because
no graphics hardware has sufficient memory to deal with the 100+mbyte
geometries I produce. Further, the variance in rendering quality varies
wildly from hardware vendor to hardware vendor. I haven't tried 1), but
other have gotten good results (ref Hanrahan's paper in Sigg. 91 proceedings).
For all voxel types, one has to deal with "opacity" in such a manner
as to get "reasonable" results. One of the articles quoted suggested to
make opacity a function of voxel thickness. This is not appropriate
for a number of reasons, not the least of which is that voxel "thickness"
is sensitive to orientation. If you make a movie of a rotating volume,
and the voxel "thickness" changes as the volume rotates, the results will
be pretty meaningless. The voxel opacity should be a function of the
"number of voxels in the volume" (whatever that means; I'm not trying
to provide a rigorous definition here, just some off the cuff
alternatives) as well as voxel "volume". In this way, for a given
volume, orientation has no bearing on voxel opacity. Also, this scheme
more equally treats the "opacity relationship" between big and little
voxels. A little voxel of a given opacity should appear more transparent
than a big voxel of the same opacity.
Finally, if we're talking curvilinear voxels, you can either "do it right"
or you can "cheat and get it done." By "cheating" you can "approximate"
the curvilinear grid with one which is rectilinear. The results
are not pretty, however (see published papers of the past few years and
decide for yourself). But, these researchers are turning in respectable
cpu times for the renderings. Or, you can "do it right" and render
the curvilinear voxels as curved things, rather than rectangular things,
spend more on cpu clocks, but the images look much better than the
approximating techniques. I can send more info via email if there's
any interest. Also, there is an AVS module available for rendering
curvilinear volume data available from avs.ncsc.org for FREE. Try it
and decide for yourself which "looks" better.
To summarize, my experience with transparent polygons has been dismal.