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.

 

Medical Imaging
Industrial Imaging
About TeraRecon
News and Events
Literature
Image Gallery