Chapter 1. Overview

This overview consists of the following sections:

What Is OpenGL Volumizer 2?

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 Versus Other APIs

OpenGL Volumizer, like other SGI graphics APIs, is a layer of functionality that sits on top of OpenGL, as shown in Figure 1-1.

Figure 1-1. OpenGL Volumizer in Relation to Other Graphics APIs

OpenGL Volumizer in Relation to Other Graphics APIs

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.

Features

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.

Supported Platforms

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

32-Bit Linux Platforms

OpenGL Volumizer supports the following 32-bit Linux platforms:

  • SUSE LINUX 9.1 or later

  • Red Hat 8

  • Red Hat 9

  • Red Hat Enterprise Linux

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:

  • ATI RADEON 9000 series or later

  • ATI FireGL series

  • NVIDIA GeForce FX or later

64-Bit Linux Platforms

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:

  • ATI RADEON 9000 series or later

  • ATI FireGL series

  • NVIDIA GeForce FX or later

Windows Platforms

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:

  • ATI RADEON 9000 series or later

  • ATI FireGL series

  • NVIDIA GeForce FX or later

Product Components

This section describes the product components in the following subsections:

Product Libraries

The product libraries fall into the following categories:

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

libvz.so

vz.dll

XML file loader

libvzxml.so

vzxml.dll

DICOM data loader

libvzdicom.so

vzdicom.dll

Plot3d data loader

libvzplot3d.so

vzplot3d.dll

For the location of these libraries, see the subsection “OpenGL Volumizer File Locations”.

Demos, Example Modules, and Utilities

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

    • Sample transfer function editor

    • Examples of volume loaders and writers

  • Toolkit libraries

    • Additional utility programs to reformat data into a format readable by OpenGL Volumizer sample applications

    • Integration libraries for the APIs OpenGL Performer, Open Inventor, and Visualization Toolkit (VTK)

  • Sample applications

    • Simple examples of each of the render actions

    • Volume-viewer application, Volview, based on OpenGL Multipipe SDK


      Note: Volview is not supported on Windows.


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.

Figure 1-2. Volview: OpenGL Multipipe Volume Viewer Application

Volview: OpenGL Multipipe Volume Viewer Application

For the location of the demos and example modules, see the subsection “OpenGL Volumizer File Locations”.

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.

Table 1-2. File Locations

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.