VisAD polygon generation algorithm(s)

Hello to Bill H. and the VisAD world,

We're (at UNH) interested in learning more about how VisAD renders data.
We have (among others) a 128 x 128 x 128 data set -the (modified) output
from a CAT scan of a cadaver head and we've used VisAD to render
isosurfaces of the 3D data at uniform resolution (128 x 128 x 128). See
http://www.cs.unh.edu/~rlaramee/pictures/head1.jpg
for the picture (at a not so great angle).

More specifically, we're interested in how the VisAD application takes the
raw data and outputs the polygons, not particularly the projection &
display algorithm(s), but the polygon generation algorithm(s) itself.
For example, does VisAD, in this case, use the Marching Cubes algorithm
for polygon generation?  And if so, which Java classes are responsible for
this?

In the ideal world, we would like to be able to look at a collaboration
graph of the Java classes and objects used to generate the polygons.
However, we do not expect that this kind of elaborate documentation exists
in publishible format (or perhaps at all).  Do you have any documentation
of this nature (in any format)?  Or does anyone for that matter?

We are interested in being able to render isosurfaces like these at
multiple resolutions e.g. 128 cubed, 64 cubed, etc.  And, we've written an
application to do so.  It stores cube data in an octree data structure and
uses each level of the octree to store a the cube data at a different
resolution e.g. the lowest level of the octree, the leaf nodes, store cube
data at the highest resolution (128 x 128 x 128).  The cube data
represents the original 3D grid of raw data -stored this way so we can
generate polygons with the marching cubes algorithm.

However, what our program lacks is not the polygon generation algorithm(s)
but the nice display algorithms that VisAD has, e.g. we have no shading
model implemented, or texture mapping.  So ideally what we like to be able
to do is add our polygon generation algorithm to VisAD and let VisAD do
the rest so-to-speak.

But in order to do that, we need to know how VisAD is generating the
polygons.  And it's since it's kind of a mammoth of a program, we're not
sure where to start the investigation.  I've read the VisAD Developers
Guide, and I could try a brute force approach of looking through the
classes in an attempt to figure it out from scratch.  However, if I can
avoid that approach, I will.  Does anyone have any suggestions or other
documentation like a collaboration diagram of some sort?  Maybe VisAD
already has an octree data structure somewhere that we can use.  Maybe
there's already a marching cubes algorithm written here.  Of course the
online API is excellent.  We're just looking for some guidance to sort
through it a little bit.

-cheers, bob  

P.S.  Thanks to Bill Hibbard for answering my last question.

Robert S Laramee        tel:    (603) 868-1361 (new as of 19 Jan '00)
9 Woodman Ave, #316     office: (603) 862-0350
Durham, NH 03828        URL:   http://www.cs.unh.edu/~rlaramee