VolumeViz Release Notes

 VolumeViz 7.2 (October 2008)

LDM compression level

SoGzipDataCompressor and SoJpegDataCompressor now allow the user to specify a compression level through their respective setCompressionLevel methods.

The level of compression can also be set for the LDM converter using the new -l command line option.

Texture unit configuration

The new environment variable IVVR_FIRST_RESERVED_TEXTURE_UNIT allows you to specify which texture units will be used by predefined VolumeViz Shaders. If redefined this will affect all the SoVolumeShader derived nodes :

You can retrieve this value using the SoVolumeShader::getNumReservedTextures() method.

Color interpolation

You can now disable color interpolation in the standard VolumeViz fragment shaders using the new field SoVolumerenderingQuality::colorInterpolation.

If set to FALSE, interpolation is not done on data values used to access the colormap. (Interpolation is still done when computing the gradient for lighting.) This may be used to render segmented data sets where interpolation is not appropriate. The default is TRUE.

 VolumeViz 7.1.1 (June 2008)

No new features were added. See the fixed bugs section.

VolumeViz 7.1 (April 2008)

LDM reader

CUDA Compute demos

A set of three demos are now provided to demonstrate interoperability between VolumeViz/LDM and Nvidia CUDA GPU computing modules.

See $OIVHOME/src/VolumeViz/contrib/cudaCompute

SEG-Y 2D viewer demo

This demo provides a basic SEG-Y 2D viewer example using Open Inventor and VolumeViz LDM, including:

See $OIVHOME/src/VolumeViz/contrib/SegY-2D

Volume projection support

The SoVolumeRender node now supports projected volume rendering, for example rendering a volume defined on a grid of latitude / longitude coordinates.  Projection is enabled by adding an SoProjection node before the SoVolumeRender node (see SoProjection for more information about supported coordinate systems, ellipsoids and map projections). The projection quality versus speed ratio can be controlled using the new projectedTileSubdivision field that defines how often each tile's geometry will be subdivided when projected.  Volume projection works with both regular and rectilinear (non-uniform voxel spacing) grids.
Notes: Projection is incompatible with VolumeRenderingQuality node. and requires LDM culling options to be disabled.

See $OIVHOME/src/VolumeViz/examples/volumeProjection

SoLDMDataAccess performance improvement / Get trace data

SoLDMDataAccess now provides two methods (synchronous and asynchronous) specifically optimized for accessing the data in a single "trace" in a seismic data volume.  A "trace" is a single row of voxel values along the volume X axis.  In other words, a special case of the getDataLine methods where the line is assumed to be aligned with the volume X axis.  A trace is specified by its YZ coordinate in voxel units. 

Note: The same optimization has been added to the getDataLine API for the case where the line is parallel to the volume X axis.

LDM Programming Guide

A new LDM Programming Guide for data management is now available to explain and demonstrate how to efficiently

PDF document available in $OIVHOME/src/VolumeViz/Compute/PG-DataManagementVolVizLDM.pdf
Example in $OIVHOME/src/VolumeViz/Compute

New LDM converter option / Higher quality subsampling

SoConverter now provides a new algorithm for computing values in lower resolution (subsampled) tiles during LDM conversion and a new option (-s n) to specify which method to use.  If n = 0, the default method (decimation) is used.  If  n > 0, a weighted average algorithm is used which combines a voxel (weighted by n) with its six nearest neighbors.

SoLDMWriter performance improvement

The performance of SoLDMWriter::writeSubVolume has been significantly improved in some cases. Two new parameters (with default values) have been added to this method.

If the doLowerResolution parameter is true (the default), writeSubVolume now builds the lower resolution tiles immediately. This can be significantly faster than building them in the finish() method, because the full resolution data is already in memory. To take full advantage of this feature the subvolume should include blocks of eight tiles that can be combined to form lower resolution tiles. If doLowerResolution is false, the lower resolution tiles are not generated during this call, but can still be generated later if the finish() method is called with &B doMultiResolution @b set to true.

If the doOverlappingTiles parameter is true (the default) then all tiles that intersect the subvolume to any extent will be written. This allows you to write arbitrary subvolumes. For example, you can compute using non-overlapping subvolumes regardless of what the tile overlap setting is for that volume. However if tiles overlap (overlap > 0) it may require more read/write operations (and therefore be slower) than expected. If you want to write subvolumes that correspond exactly to tile boundaries (and handle the overlap yourself), you can now set doOverlappingTiles to false. In this case tiles that intersect the subvolume by only the tile overlap (or less) are not considered intersecting.

New class: SoLDMTopoOctree

SoLDMTopoOctree is a utility class that provides information about the LDM topology for a given dataset, based on the dataset dimensions. For example you can query the ID of the tile that contains a specified voxel/cell in the data set and you can query the extent of a specified tile in voxel/cell coordinates.

Open Inventor Fields Replace Methods

Additional methods are now deprecated and replaced by Open Inventor fields. Fields have the advantage that they are saved in Open Inventor format files.

 VolumeViz 7.0.1 (February 2008)

No new feature was added. See the fixed bugs section.

 VolumeViz 7.0 (December 2007)

Asynchronous Data Interface for SoLDMDataAccess::getData Methods

For each existing SoLDMDataAccess::getData() method, an asynchronous version has been added with the new methods requestData() and getRequestedData(). This new feature optimizes the use of LDM for computation because computing and loading can be done in parallel.

See $OIVHOME/src/VolumeViz/examples/getLDMData/asyncGetDataBox.cxx.

LDM Writer

The new class SoLDMWriter allows an application to load or compute portions of a volume in any order and any convenient internal format, then write the volume in LDM format. The application can pass tiles or arbitrary regions of full resolution data to the writer in any order. When the writer is closed it can optionally invoke the converter and generate the lower resolution levels.

See $OIVHOME/src/VolumeViz/LDMWriter.

Multi Data Redesign

The previous design (up to VolumeViz 6.1) for support of multiple data sets had some limitations for performance and evolution. Although compatibility has been kept, we strongly recommend that you use the new SoMultiDataSeparator node to combine multiple data sets.

Volume Rendering Supports Rectilinear Grids

Rectilinear grid support allows non-uniform voxel spacing on each axis of the volume. The AmiraMesh reader (.am file), the in-memory reader, and the LDM reader now support rectilinear coordinates. New tags in the LDM file header allow you to to specify rectilinear coordinates (i.e., <RectilinearMapping> and </RectilinearMapping>).

LDM Converter Supports Data Compression

The new options -c <Compression Type> and -l <Compression Level> can be used with the SoLDMConverter to specify the compression type and the compression level. Compressed data uses less disk space and can be loaded faster (fewer bytes to move). Currently gzip and jpeg compression is available. The effectiveness of compression depends on the nature of the data. By subclassing SoDataCompressor, you can add support for additional compression types.

LDM Converter Supports Tile Border (Overlap) > 1

The new argument <Border Size> to the -b option enables you to specify a border size > 1. In order to avoid discontinuity artifacts with lighted volume rendering or with bump mapped slices, a border size of 3 should be specified.

Volume Rendering Performance Optimizations

Volume rendering supports a variety of new different techniques in order to improve performance:

Volume Rendering Quality Improvements

The following new rendering effects has been added:

All the previous techniques can be combined together.

Additionally, the previous limitation on the number of slices used for volume rendering has been raised. Increasing the number of slices increases significantly the global image quality of the volume rendering.

Tile Loading Optimization

Tile loading from disk to main memory and from main memory has been significantly improved. The consequence is that high resolution rendering is obtained more quickly. Streaming SIMD Extensions instructions (SSE) are used in these optimizations.

Slice Rendering Quality Improvement

A new interpolation type (MULTISAMPLE_12) is available for 2D slices and volume skin which provides much higher quality images than linear interpolation. See SoVolumeShape::Interpolation for details.

Volume Clipping

There are now two ways to specify volume clipping:

Volume clipping applies to all volume rendering nodes.

SoVolumeRenderingQuality and SoVolumeIsosurface Can Work Together

Prior to Open Inventor 7.0, it was not possible to have SoVolumeRenderingQuality and SoVolumeIsosurface apply to the same SoVolumeRender node. This restriction has been lifted.

LDM Core Separation

The LDM core has been re-factored to support multiple extensions such as ReservoirViz. Consequently some headers file which are common to multiple extensions (and which existed in previous releases) have been moved to the directory $OIVHOME/include/LDM. For instance SoROI.h has been moved from $OIVHOME/include/VolumeViz/nodes/SoROI.h to $OIVHOME/include/LDM/nodes/SoROI.h. Another consequence is that the class SoVolumeData now inherits from the new SoDataSet class which is a generic class for all LDM data sets. Upward compatibility has been kept, so no code changes are required.

Open Inventor Fields Replace Many Methods

Numerous methods are now deprecated and replaced by Open Inventor fields. Fields have the advantage that they are saved in Open Inventor format files.

Update of volRend Demo

The volRend demonstration program has been updated to expose the new features described above. New color maps have been added, particularly those useful for seismic data.

VolumePro Support Dropped

The support of VolumePro boards from TeraRecon has been dropped.

VolumeViz 6.1 (March 2007)

No new features were added.

Release 6.0 (September 2006)

First release of VolumeViz .NET.