1.2.1. Overview

In this section we will first review the characteristics of a volume, show how these parameters are set and queried and then explain the basics of loading data from a file or a block of memory. At this point, if you are able to get your data loaded, you may want to skip to the next section and learn about how to control the data range and color mapping. However if your data is very large you should read the subsections about LDM format and converting to LDM format. The following subsections go into more detail about handling some specific file formats including DICOM for medical scanner data and SEGY for seismic data. You may want to read just the sub-section for your data format. Finally we will discuss how VolumeViz handles histogram data.

VolumeViz has built-in support, through “volume readers” (specific classes derived from SoVolumeReader( C++ | Java | .NET )), for some commonly used file formats described in Section 1.2.3, “Loading from a file”. For other data sources, the application can create a new class derived from SoVolumeReader( C++ | Java | .NET ), allowing VolumeViz to load the data directly. Data sources are not limited to disk files. A volume reader could interface to an existing application data manager or a network data server. For small volumes it may be convenient for the application to load the data and give VolumeViz the location of the data in memory. For large volumes we recommend first converting to a tiled and (optionally) multi-resolution format. VolumeViz provides the .ldm (LDM) file format. This is a tiled, multi-resolution file format optimized for the LDM data organization that VolumeViz uses internally. Using a tiled, multi-resolution format like .ldm for large volumes allows an initial rendering to appear very quickly and allows interactive rendering even if the volume will not fit in system or GPU memory. We will discuss the LDM data organization in Section 1.2.5, “LDM Data” and conversion to .ldm format in Section 1.2.6, “Converting to LDM”.

It may also be necessary for the application to access the volume data directly. The application may need to apply a filter to the data, to compute statistics, to compute a derived volume (for example seismic attributes), to apply segmentation algorithms or even to edit the data values. Filters and derived volumes can be implemented using the techniques discussed in Section 1.9.2, “Transforming volumes”. The application can access any portion of the volume, for example to apply statistics or segmentation algorithms, using the LDM Data Access API described in Section 1.10, “Data Access and Computing”. Direct editing of the volume data is also possible.

Use the SoVolumeData( C++ | Java | .NET ) node to access volume data. The data volume can be specified by:

[Important]

Note that unlike some data nodes in Open Inventor, the volume data is normally not considered to be stored in the scene graph and so is not saved if the scene graph is written to a .iv file. It is possible to have the volume data stored in the scene graph by setting the data field, but this is only practical for small volumes.