This overview consists of the following sections:
As the volume of information produced by instrumentation devices and simulation increases in size, complexity, and level of detail, so does the need for better, more powerful interpretation tools. In particular, the requirements for volume-data interpretation software keeps expanding. Utilizing various computational techniques (such as marching cubes, segmentation, region growing, isosurface extraction, flow streamlines, and flow volumes) and visualization techniques (such as 3D texture mapping, ray casting, projected tetrahedra), users demand more interactivity and immersion capabilities with their large volumetric datasets.
To help application programmers answer these needs, SGI has developed OpenGL Volumizer 2, a software development kit that provides a simple interface to complex hardware features available through OpenGL.
OpenGL Volumizer 2 is a new design that allows better incorporation and sharing of capabilities across the SGI application programming interfaces (APIs) and facilitates management of extremely large volumetric datasets (See Chapter 6, “The Large-Data API: 3D Clip Textures” for detailed information). OpenGL Volumizer 2 provides a supported pathway for new application writers and current application writers who will want to migrate to new technologies (like visual serving) in the coming years.
| Note: Hereafter in this manual, OpenGL Volumizer unqualified refers to OpenGL Volumizer 2. |
OpenGL Volumizer, like other SGI graphics APIs, is a layer of functionality that sits on top of OpenGL, as shown in Figure 1-1.
OpenGL Volumizer is a toolkit designed to handle the volume rendering aspect of an application. You can use other toolkits, like OpenGL Performer and Open Inventor, to structure the other elements of your application. The API is designed to allow seamless integration with other scene graph APIs.
OpenGL Volumizer is a rich toolkit with features that include the following:
A high-level, extensible, C++ API that segments classes and methods based on the corresponding procedural-versus-descriptive nature of the component members. The core API consists of a volumetric-shape description API and a procedural 3D texture-based render action. See Chapter 3, “The OpenGL Volumizer API” and Chapter 4, “Texture Mapping Render Action” for more information.
Integrated shading capabilities to perform volumetric shading, which allows techniques like multivolume blending and volumetric lighting to improve realism and to implement very high quality visualizations. See Chapter 5, “Custom Volumetric Shading” for more information.
Large data management capabilities, including support for 3D clip textures, which allow interactive visualization of extremely large datasets. See Chapter 6, “The Large-Data API: 3D Clip Textures” for more information.
Direct rendering of irregular grids using projected tetrahedra. See Chapter 7, “Irregular Grids: The Projected Tetrahedra Render Action” for more information.
The Volume Data Description Language (VDDL). VDDL allows you to change volume data descriptions at run time by simply editing a text file. See Chapter 8, “OpenGL Volumizer File Loader” for more information.
Thread safety, which allows implementation of multithreaded applications that run on multiple processors and graphics engines in conjunction with APIs like OpenGL Multipipe SDK and OpenGL Performer.
A container for volume rendering techniques. Developers can integrate their own scene graph parameters and rendering algorithms in the API structure. The ability to incorporate such custom-tailored parameters and renderers gives the flexibility to advanced developers to implement and experiment with new rendering methods.
Multiplatform support: Linux and Windows systems
Examples that include a transfer function editor, data loaders, and a volume rendering application for multipipe systems, along with sample integration with existing APIs.
As the product name implies, OpenGL Volumizer targets OpenGL applications. This section describes the following platforms:
32-bit Linux platforms
64-bit Linux platforms
Windows platforms
OpenGL Volumizer supports the following 32-bit Linux platforms:
On 32-bit Linux systems, the OpenGL Volumizer libraries are compiled with GCC 3.2 libraries and are not binary compatible with GCC 2.x. The Red Hat systems ship with GCC 3.x compiled libraries by default.
Graphics cards must support 3D textures. Specific shaders require other OpenGL extensions (see Chapter 5, “Custom Volumetric Shading”). The following graphics cards are supported:
On 64-bit Linux systems, the OpenGL Volumizer libraries are compiled with GCC 3.2. OpenGL Volumizer supports Silicon Graphics Prism platforms, which require SGI ProPack 3 Service Pack 2 or later.
Graphics cards must support 3D textures. Specific shaders require other OpenGL extensions (see Chapter 5, “Custom Volumetric Shading”). The following graphics cards are supported:
OpenGL Volumizer supports the following Windows platforms:
Windows NT
Windows XP
Windows 2000
Graphics cards must support 3D textures. Specific shaders require other OpenGL extensions (see Chapter 5, “Custom Volumetric Shading”). The following graphics cards are supported:
This section describes the product components in the following subsections:
The product libraries fall into the following categories:
Core OpenGL Volumizer library
Shape description API (See Chapter 3, “The OpenGL Volumizer API”.)
* Texture Mapping Render Action (See Chapter 4, “Texture Mapping Render Action”.)
* Clip Texture Render Action (See Chapter 6, “The Large-Data API: 3D Clip Textures”.)
* Projected Tetrahedra Render Action (See Chapter 7, “Irregular Grids: The Projected Tetrahedra Render Action”.)
Additional modules:
XML file loader interface (See Chapter 8, “OpenGL Volumizer File Loader”.)
DICOM data loader library (See Chapter 8, “OpenGL Volumizer File Loader”.)
Plot3D data loader library (See Chapter 7, “Irregular Grids: The Projected Tetrahedra Render Action”.)
Table 1-1 shows the names of the libraries on the various platforms.
Table 1-1. Product Library Names
Library | Linux | Windows |
|---|---|---|
Core OpenGL Volumizer library | ||
XML file loader | ||
DICOM data loader | ||
Plot3d data loader |
For the location of these libraries, see the subsection “OpenGL Volumizer File Locations”.
As demos, OpenGL Volumizer provides sample applications and plug-in libraries. In addition, OpenGL Volumizer includes a number of example modules and utilities to help you use the API. These modules are not part of the supported API . These modules include the following items:
Plug-in libraries
Toolkit libraries
Sample applications
Figure 1-2 shows the structure of the Volview application, which is written on top on OpenGL Volumizer, OpenGL Multipipe SDK, and uses the plug-in libraries provided with OpenGL Volumizer sample distribution.
For the location of the demos and example modules, see the subsection “OpenGL Volumizer File Locations”.
The environment variable VZROOT defines the root directory for OpenGL Volumizer files.
Default value for VZROOT on Linux systems:
/usr/share/Volumizer2/ |
Default value for VZROOT on Windows systems:
c:\Program Files\Silicon Graphics\OpenGL Volumizer |
Table 1-2 shows the directories for the major program components.
Files | Linux | Windows |
|---|---|---|
Product libraries | /usr/lib | %VZROOT%\bin (DLLs) %VZROOT%\lib (import libraries) |
Conversion utilities | VZROOT/bin | %VZROOT%\bin |
Demos | /usr/demos/Volumizer2 | %VZROOT%\bin\demos |
Sample source code | VZROOT/src | %VZROOT%\src |
Header files | /usr/include/Volumizer2 | %VZROOT%\include |
Sample datasets | VZROOT/data | %VZROOT%\data |
Developer reference pages | VZROOT/doc | %VZROOT%\doc |
Release notes | VZROOT/release_notes | %VZROOT%\release_notes |
| Note: Hereafter in this guide, file paths will be denoted in this manner: VZROOT/<relative-path>. The Windows equivalent, %VZROOT%\<relative-path>, will not be shown. |