Frequently Asked Questions
Frequently Asked Questions are contained on the following pages.
Please review all the pages.
Q1. What are some of the specific features
in the VolumePro® 500 hardware and software and what features
can be expected in future products?
The VolumePro® 500 supports rendering of
isotropic, anisotropic and gantry tilted volume data sets of 2563
12-bit voxels at a real-time rate of about 30 frames per second. The
VolumePro® 500 board is available with 128 Mbytes or 256 Mbytes
of volume memory. More generally, VolumePro® renders volume data
sets by a ray casting algorithm at the rate of 500 million Phong-illuminated
samples per second. The VolumePro® hardware supports interactive
changes of the viewing direction and rendering parameters, interactive
updates of the classification tables (for assigning RGBA), real-time
calculation of gradients for Phong illumination, an arbitrary number
of lighting sources, super-sampling along viewing rays, one arbitrary
oblique cut plane with thickness, box cropping parallel to the faces
of the volume data set, parallel (orthographic) projections, and volume
data sets that can be updated between frames. The VolumePro®
hardware can render in one-pass volume data sets of rectangular shape
in sizes up to 256 voxels in any dimension. In addition, VolumePro®
provides software support for super volumes - i.e., volumes exceeding
256 voxels in one or more dimensions - and for super sampling in the
X & Y dimensions on the image plane.
Q2. What is the VolumePro® product?
The VolumePro® 500 product comprises a half-length
PCI board, software drivers, and the VLI (Volume Library Interface).
The VolumePro® 500 PCI board includes one vg500 rendering ASIC,
128- or 256-Mbytes of SDRAM memory for volume data sets, 32 Mbytes
of additional SRAM for internal use, and a PCI interface.
Q3. How is color derived out of the volume
data?
Color is derived from a 4,096 entry color lookup table: 8 bits for
Red, 8 bits for Green, 8 bits for Blue, and 12 bits for high precision
Alpha (opacity), totaling 36 bits of color. Samples are created by
interpolating voxel values. Each sample has a value and a gradient
representing a surface normal. The sample value is used to lookup
RGB and Alpha values from the lookup table to obtain the emissive
color. The gradient associated with the sample value is used in a
Phong illumination algorithm to obtain diffuse and specular color
values. Using two reflectance maps, specular and diffuse illumination
is implemented at each sampled point.
Q4. What are the performance targets for VolumePro?
The performance of VolumePro® products can be measured in the
number of samples rendered per second. The VolumePro® 500 renders
more than 500 million tri-linearly interpolated, Phong-illuminated
samples per second. This is the throughput required to display a 2563
volume at about 30 frames per second. Because VolumePro® implements
a true ray-casting algorithm, image quality is superior to images
of volumes produced with texture-based methods.
Q5. Will the VolumePro® board be configurable so that
the system can be matched to the application?
The VolumePro® board comes in two configurations - 128 or 256
Mbytes of volume memory. Because of the high performance demands made
by the vg500 ASIC on its SDRAM, memory chips are permanently mounted
to the VolumePro® board. It is therefore not possible for users
to configure VolumePro® to different memory sizes.
Q6. What is texture mapping and how is it different from
what VolumePro renders?
An alternative way of rendering a volume data
set is to use the 3D texture mapping capability of a conventional
3D polygon graphics system. In this method, a volume data set is classified
or converted to RGBA and loaded into the texture memory. Rendering
proceeds by texturing mapping a series of planes perpendicular to
the view direction, then compositing them into the frame buffer. There
are several shortcomings to this approach. First, there are no practical
ways to calculate and use gradients or surface normals to implement
realistic shading and illumination, a very important requirement of
usable 3D visualization. VolumePro® provides a Phong lighting
calculation at every sample point to highlight surfaces, no matter
what classification function is applied. Second, only some of the
3D graphics systems at PC price points support 3D texture mapping,
and of those that do, very few can approach the 128- or 256-Mbyte
volume capacity of the VolumePro® 500. Systems without adequate
texture memory must resort to swapping the volume data set, a serious
performance limitation. "Unified graphics memory" systems,
in which the textures reside in the main memory of the host computer,
are exempt from the swapping overhead but are limited by the bandwidth
of the graphics port. Third, only the most expensive 3D graphics systems
have comparable texture mapping performance of the VolumePro®
in all conditions. PC-class 3D graphics systems typically have performances
of about 200-300 texels/second. Fourth, because the volume must be
converted to RGBA before being loaded into the texture map, changes
to the classification functions are substantially less interactive.
Again, only the most expensive 3D graphics platforms have OpenGL extensions
to allow some degree of interactivity in this area. The results of
these limitations can be seen on many texture-based volume rendering
applications in the market. Whenever the user wants to rotate the
volume, zoom or change the view position, or change the classification
functions, these systems blur the volume to a fraction of its normal
resolution. Once the interactive changes are complete, only then is
the volume rendered at full resolution to show the full detail. The
delay between blurred resolution and full resolution is a very noticeable
visual artifact that interferes with interactive use of these systems.
Q7. How scalable is the VolumePro architecture?
The VolumePro® 500 board has a fixed memory
size of 128 or 256 megabytes and a fixed rendering performance of
500 million samples per second. VolumePro® software can render
larger volumes by breaking them into pieces, rendering each piece
separately, and then stitching together the results. In future generations,
we are contemplating enhanced VolumePro® products that would
be scalable in hardware. We are also collaborating with OEMs to put
a number of VolumePro® rendering engines in one, high-performance
system. This will make it possible to render very large volume data
sets in real-time.
Q8. What is meant by multiple voxel formats?
A voxel is a quantum of data describing one or
more properties of an object in a small region of space surrounding
the location of the voxel. VolumePro® 500 supports voxels with
one field of either 8 or 12 bits. (12-bit voxels are stored in 16-bit
words.) A voxel may represent a property such as density (as in CT
scans), velocity (as in fluid flow applications), amount of hydrogen
(as in MRI scans), etc. In future generations of VolumePro®,
we will support broader variety of voxel data formats, including voxels
with multiple fields.
Q9. How many and how flexible are the
VolumePro cut planes?
The VolumePro® 500 supports a single cut
plane of arbitrary thickness at an arbitrary angle and position in
the volume data set. The opacity of the samples on the faces may be
linearly interpolated to give a smooth looking edge. The cut plane
may be controlled to include or exclude the samples between its faces.
In addition, the VolumePro® 500 support box cropping with three
pairs of orthogonal clipping planes aligned with the faces of the
volume data set, one pair in each dimension.
Q10. What provisions are there for marking
position within a volume data set?
The VolumePro® 500 supports a color 3D line
or plane cursor. This line or plane can be many voxels thick.
Q11. What is super-sampling in volume
space and is it supported in the first generation hardware?
In volume rendering, super-sampling is the specification
of sample points spaced more closely than voxels in one or more dimensions.
VolumePro® 500 supports super-sampling in hardware along the
viewing rays (z-dimension) in order to minimize aliasing. The application
can specify a super-sample factor of up to eight; that is, up to eight
slices of interpolated samples for each slice of voxels. Naturally,
the speed of rendering is reduced by the super-sample factor. In the
X and Y dimensions, super-sampling is supported in software by multi-pass
rendering, also to reduce aliasing. This is achieved by rendering
the volume in multiple passes with the rays offset from each other
from pass to pass. The resulting images of these passes are then blended
together in software to produce the final image.
Q12. What is parallel and perspective
projection in the volume rendering and are these features supported
in VolumePro hardware?
Volume rendering is the projection of a three-dimension
data set onto a two-dimensional image. Parallel projection means that
the rays being cast through the volume are parallel to each other.
This is equivalent to placing the eye of the viewer at an infinite
distance from the volume. In perspective projection the viewer is
at a finite distance from the volume of interest. The size of a perspective
projection of an object varies inversely with the distance of the
object from the center of projection. This provides the foreshortening
that is a familiar part of three-dimensional art and photography.
VolumePro® 500 hardware supports only parallel orthographic projection.
Perspective can be achieved in software but at the expense of performance.
Future generations will support perspective projection in hardware.
Q13. What is the output of the board?
The VolumePro® 500 board generates a warped,
two-dimensional image of the volume. Using the shear-warp algorithm,
rays are cast through the volume and projected onto the "base
plane" - i.e., a plane that is co-planar with the face of the
volume data set closest to and most nearly parallel to the image plane.
This projected image is a distortion of the final image. It must therefore
be corrected in a step called "2D warp" before it can be
viewed. The 2D warp step may be performed by the host CPU or by a
third party 3D graphics board. VolumePro® 500 supports a number
of pixel formats for the output image.
Q14. What current polygon graphics cards
does VolumePro support?
TeraRecon maintains a short list of 3D polygon
graphics cards that have been tested with the VolumePro® 500.
This can be found on in our Release Notes. We welcome collaborations
with manufacturers and others for testing additional cards.
Q15. What buses are associated with the
VolumePro system?
VolumePro® supports a PCI bus compliant
with PCI version 2.1 specification. Bus speeds up to 66 MHz are supported.
A DMA capability is provided to move data to and from the VolumePro®
memory.
Q16. What software is provided with the
VolumePro 500?
Each VolumePro® 500 includes a run-time
license for a software driver and a low-level API called the VLI (Volume
Library Interface). The goal of the VLI is to allow applications quick
access to all the hardware features of the VolumePro® board.
It is an OpenGL friendly C++ object library including classes such
as: Volumes, Color Tables, Alpha Tables, Camera, Light, Vector2D,
Vector3D, Context, and Matrix (4x4). Drivers and VLI libraries are
currently available for Windows NT 4.0 and Sun Solaris. Drivers
and VLI are expected to be available for Linux and SGI Irix. Also
available for separate purchase is a Software Developers Kit (SDK).
Q17. What is in the Software Developers
Kit release?
The primary goal of the SDK is to provide developers
a means for incorporating the VolumePro® 500 system into their
own visualization applications. The SDK includes:
CD-ROM
Software Installation program
VLI and DLL driver binaries
Release notes
Programming tips & sample applications
VLI documentation
System Configuration Specifications
Host processor specifications
System memory specifications (Main, RAM, Cache)
3D polygon graphics card specification
VolumePro® installation guide
Q18. What has happened to the RT Visualizer?
RT Visualizer was originally developed for TeraRecon by Kitware,
Inc. It was primarily intended for researchers and scientific visualization
users who are not developing products for re-sale. By agreement, RT
Visualizer is now sold directly by Kitware under the product name
VolView and is available for Solaris and Windows NT platforms.
Q19. What high level API is available?
The VLI is a C++ object library and is a low level interface to the
VolumePro® board. We have written VLI in C++ so it can be easily
updated and used. We are defining a higher level volume rendering
toolkit and scene graph with our development partners.
Q20. What types of volume data sets will the VolumePro support?
VolumePro® can render volume data sets that are represented
as a 3D array of voxel values. VolumePro® assumes that the elements
of the 3D array represents points on a three dimensional grid. The
default assumption is that the grid is rectilinear and isotropic (i.e.,
with voxels spaced equally in all three dimensions). However, VolumePro®
can also support anisotropic data sets - i.e., data sets in which
the spacing of voxels is different from one dimension to another.
VolumePro® also supports "gantry-tilted" data sets
such as found in CT applications. These gantry-tilted data sets are
essentially rectangular grids that have been sheared in one or more
dimensions.
Q21. What is the 2D warp step and what types of commands
are given to the conventional 3D graphics card?
Although VolumePro® supports the viewing of a volume data sets
from any angle, it actually renders volumes to a base plane image.
This base plane is parallel to and aligned with one of the faces of
the rectangular volume data set. The resulting base plane image is
distorted and not necessarily scaled to the screen or window size.
To remove the distortion and fit the final image to the viewers display
screen, a post-processing step called a 2D warp is applied. This step
is a common operation in three-dimensional graphics systems and is
typically done on the companion 3D polygon graphics board.
Q22. Will the VolumePro 500 support stereo viewing?
Yes, but the application is responsible for computing the volume
rendering parameters for the two images and rendering them into the
left and right buffers.
Q23. Will the VolumePro 500 support perspective viewing?
No, perspective is planned for later generations of the product.
Q24. What data structure for the volume image does the VolumePro
500 take for rendering?
Memory format is slice by slice, with each slice consisting of a
2D voxel array. The arrays are packages as tightly as possible. Voxels
are either 8 bits or 12 bits of a 16 bit value. The VLI can read volumes
in "Vox1999a" format that is described in a document that is available
on the distribution CDROM. In addition, many applications use their
own standard file formats for volume images. In these cases, the application
is responsible for reading and interpreting the format into host memory;
then it passes the volume image in memory to the VLI for loading onto
our board.
Q25. What type of image output can we get from the rendering?
How do we use the image in our program?
The output of a volume rendering operation is a "baseplane image"
of 32-bit pixels (RGBA). It looks a lot like the final image, but
it is warped -- i.e., distorted in a systematic way. Of course, the
application can do whatever it wants in software with the baseplane
image, including re-sample it, unwarp it, or do other image processing
on it, etc.
Q26. If the volume is larger than the board memory, what do we need
to do?
This is called a "supervolume." The VLI partitions the
supervolume into "bricks," loads each brick, renders it,
retrieves its baseplane image, then stitches together all of the baseplane
images from all of the bricks to produce one final baseplane image.
If the volume is larger than available board memory, VLI will need
to reload two or more bricks for each frame; note that downloading
a brick is much slower than rendering it. A 128-megabyte VolumePro®
system has enough voxel memory, to hold a volume of 512x512x256 16-bit
voxels or 512x512x512 8-bit voxels. A 256-megabyte VolumePro®
system has twice as much memory, thereby accommodating one volume
of up to 512x512x512 16-bit voxels or many smaller volumes. The rendering
speed of the VolumePro® 500 is the same, independent of the memory
size.
Q27. Can we send contours or sparse points for rendering?
No, VolumePro® only accepts dense volume data sets organized
as a set of 2D slices -- that is, data sets with one data value for
each voxel position. Each voxel occupies an element of memory on the
VolumePro® board.
Q28. If we have multiple objects to render, how do you handle
the colors?
It is possible to set up or change the color lookup table for each
rendering operation. If multiple volume objects are stored on the
VolumePro® board, then the typical case is to render them one
at a time, each with its own color lookup table. Loading a new color
lookup table is a relatively small, lightweight operation. Note that
the application is responsible for combining the resulting images
of the renderings of multiple objects. There is no explicit support
for this in the VolumePro® or VLI 1.0.
Q29. Why not translate OpenGL calls into VLI, transparent
to the user?
OpenGL is set up to do texture maps. Our approach does true shear
warp volume rendering. OpenGL does not have all the primitives or
flexibility to handle this quality of volume visualization. For example,
OpenGL can not handle per-sample gradient estimation or per-sample
Phong lighting. There are many useful features of the board for which
there is no easy mapping from OpenGL.
Q30. Are there any restrictions on using the VLI from different
Windows NT threads?
Yes. You need to be sure not to use one VLI object from two threads
concurrently. For example, if one thread is changing VLIContext parameters
and rendering with that context while a second thread is doing the
same with the same VLIContext, the results are indeterminate. The
VLIVolume class does have access controls that can be useful in serializing
access, but these may not be sufficient for application purposes.
Q31. How do I render geometry in addition to the volume?
If the geometry is completely behind the volume,
render it first. If the geometry is completely in front of the volume,
render it after the volume. If the geometry is completely on one side
or the other, the order is not important. Note that these relationships
are dependent on the eye position, and may need to be calculated on
a frame by frame basis. However, it is not possible to handle geometry
that intersects the volume in a general fashion, because the output
of the volume rendering process is a single image plane. It is possible
to embed small objects, such as pointers, using the cut plane and
multiple passes. An example of this is in the Revli sample application.
As the objects get large, however, the depth layering breaks down
and artifacts appear.
Q32. How can I prevent the vg500 from
interpolating voxel values?
The vg500 always interpolates voxel values tri-linearly;
this cannot be disabled. If different data ranges represent different
materials or tissues, some samples between materials may be classified
in a surprising manner. This is highly view and parameter dependent.
Q33. What Operating Systems and platforms
do you support?
Presently we support Windows NT 4.0 SP 3 or higher.
This would be on a IBM compatible PC with:
300 MHz Pentium Class microprocessor or faster
256 MB RAM memory
10 MB free hard disk space to install the software
3D Graphics accelerator based on our recommended list
We also support Solaris 2.5.1 and 2.7.
This would be on Sun Microsystems workstation with:
Ultra Sparc 30 or better
300 MHz Ultra Sparc II or better
256 MB Ram memory
10 MB free hard disk space to install the software
Creator3D or Elite 3D
Support for SGI Irix 6.5.4 is also available.
This would be on an SGI O2 Visual Workstation with:
R10000 CPU
256 MB RAM memory
10 MB free hard disk space to install the software
PCI expansion chassis
We do expect to have additional support in the
future for Red Hat Linux 6.2 and Windows 2000. Contact Sales/Marketing
for more information.
Q34. Do you provide multiprocessor support?
Yes, we provide multiprocessor support with our
Windows NT product.
|