Volume Rendering Demo

FEI Visualization Sciences Group Series logo
(© 2010 FEI Visualization Sciences Group -- www.openinventor.com)

Volume Rendering

With continuing increases in desktop computing power and graphics performance, volume rendering is now more accessible than ever before. Volume rendering can be used in a wide variety of applications including oil and gas exploration, geoscience, medical imaging, meteorology, molecular modeling, nondestructive testing, failure analysis, fluid dynamics, electronics, magnetism, and many more.

The VolumeViz module allows you to inspect 3D sampled data efficiently by providing the key features of volume rendering. The main concepts such as classification, compositing, interpolating, lighting, slicing, and clipping are supported in this module as a set of nodes that are fully integrated with the Open Inventor™ 3D graphics toolkit. The application programming interface is compact in order to make the programmer's task as easy as possible. Rendering a 3D data set minimally requires instantiation of only two classes: one for describing the data and one for drawing the volume. (In this case, the volume would be rendered using the default gray color map.)

Because the VolumeViz module is integrated with Open Inventor, you can freely mix volume rendering and conventional 3D geometry (subject to limitations of the hardware) to make a more meaningful image. You can also take advantage of Open Inventor's powerful interaction tools, like prebuilt viewer classes and interactive 3D "draggers" for manipulating objects in the scene. You will be using some of these tools when you run the demo program. Adding the MeshViz module to your application provides powerful tools for drawing axes, legends, and other data visualization techniques such as contouring and isosurfaces.

This module has been designed to take advantage of 3D graphics on specialized volume rendering hardware, while at the same time providing the highest possible image quality. By default, VolumeViz will automatically select the "best" rendering method available. You can specify the rendering method in this demo program to compare the performance and appearance of the different methods. Note: Although texture mapped rendering is available on all supported machines, acceptable performance will almost always require a fast 3D accelerator board volume rendering board.


Volume Rendering Demo

The VolRendDemo program is provided as both a demonstration of VolumeViz features and an example of using the VolumeViz toolkit. There are two windows:

Main Window

The Main Window looks like this:

VolRend Main Window

The Main Window was created using the standard Open Inventor ExaminerViewer class. This class implements a "virtual trackball" which allows you to use your mouse to rotate, pan and zoom the rendered volume (and any other geometry in the scene). The viewer "decorations" surround the actual drawing window (black background) and provide controls such as thumbwheels for rotating the scene and buttons for various functions. Please note the "arrow" and "hand" buttons. The arrow button is for selection mode. In this mode the cursor shape is the default Windows pointing cursor and the mouse can be used to "grab" and drag 3D user interface objects called "manipulators". The hand button is for viewing mode. In this mode the mouse can be used to rotate, pan, and zoom the scene. The <ESC> key can also be used to switch between selection and viewing modes.

The volume is displayed in the drawing window. In this example, a bounding box and axes are also visible. These items can be enabled in the Volume Rendering dialog. Press the left mouse button (cursor will be be a curved hand) and drag to rotate the volume. Press the middle mouse button and drag to pan (cursor will be an upright hand). Press the left and middle mouse buttons at the same time to zoom in and out (cursor will be a hand with an arrow). Using the left mouse button you can also spin the volume by dragging and releasing the mouse button while still moving. To return to the default view, click the "house" button. The ExaminerViewer also provides a standard popup menu activated by the right mouse button. Note that the "Preferences" submenu includes an item which brings up the standard stereo dialog. If your graphics board supports OpenGL stereo in hardware, you can activate it here. You can always select software stereo modes such as interlaced and red-green (anaglyph).

On the left side of the window is the color map (transfer function) display. This display shows the color and opacity associated with each entry in the current color map. The color map is drawn on top of a "checker board" pattern, so the visibility of the checker pattern indicates the opacity of the color map entry. For example, where the checker pattern is completely visible, voxels with that data value are completely transparent. The color map display changes dynamically when you modify the color map in the Data dialog.

Also on the left side of the window is the histogram display. This display shows graphically the number of voxels in the data set that have a particular value. This information can help you decide how to modify the color map to focus on interesting features in the data set. The histogram display only changes when you load a different data set.

At the bottom of the window some information about the current volume is displayed. The first three values are the width, height and depth of the volume in voxels. The fourth value is the size of a voxel (8 or 16 bits). The last value is the total size of the volume in memory (in megabytes).


Volume with stereo enabled:
Right-click in the main window to display the viewer popup menu, then selectPreferences->Stereo. This image shows Red/Cyan (anaglyph) stereo.

Volume with stereo


VolumeViz Demo Interface

The interface is composed of seven different dialogs:
  • Data
    This dialog allows you to select what volume needs to be loaded and how (memory management), what color map to use with this volume, what color map to use with added geometry (e.g., slices), and the type of background to use for the main window.

  • Volume Rendering
    This dialog allows you to specify how to use a volume rendering node (render methods, render style, composition, interpolation,..).

  • Geometry Control
    Allows you to add/manipulate an ortho slice, an oblique slice, or a volume geometry node.

  • Region Of Interest
    This dialog provides a way to control a region of interest.

  • Volume Clipping
    This dialog allows to apply clipping on volume and slices.

  • Paging Control
    Paging control if the memory mode chosen is Paging.

  • LDM Control
    LDM control if the memory mode chosen is LDM.

Note: If the dialog box is too big to be displayed in its entirety on your display, you can grab it at the top and resize it smaller. A scroll bar will appear, allowing you access to all of the controls.


Data:

Data Dialog


ColorMap
Note: the following descriptions are valid for either the Volume ColorMap section of the dialog or the Slice ColorMap section. Different colormaps can be mixed when using a volume and some geometry.

Predefined Colormap: This pulldown allows selection of one of the predefined color maps provided with VolumeViz.
Note: If using texture map rendering, and paletted textures are not available, changing the color map requires reloading the texture data, which may be very slow for large volumes.
The special entry "User filename" attempts to load the specified user file (which can be selected with the browse button).

User Filename: The name of a user-defined color map file. VolumeViz does not currently define a color map file format. This demo program reads a simple text format. The first line of the file is the number of colors in the map. Each following line is either an RGB value or an RGBA value with each component in the range 0..65535, for example "240 240 65535". A sample color map file named "blueWhiteRed.txt" is provided with the demo.

Colormap Min/Max: These two edit fields allow you to "compress" the color map into a smaller range of voxel values. For example, if the initial color map spans voxel values zero to 255, entering "32" in the "Min" field (and pressing the Enter key) will remap the color values into the range 32 to 255, making color map entries below 32 completely transparent. This uses the SoTransferFunction node's reMap() method.

Opaque Min/Max: These two edit fields allow you to keep the color map range the same, but force all entries below "Min" and above "Max" to be completely transparent. This is a powerful tool for identifying and highlighting interesting structures in the volume. Of course, applications can implement whatever color map and/or opacity editors are appropriate for their industry.

Transparent outside min max: This operation inverts the transparency value either inside or outside the selected min max values.


Faux Shading

This "faux shading" technique can produce results somewhat similar to surface shading without the performance penalty for computing lighting

Strenght: Controls how much faux shading will darken the color values of the transfer function.

Length: Controls how many color values will be affected by faux shading.

Darken Threshold: Opacity threshold for darkening edges.

Data Range

If the Active box is checked, you can choose what range of data values should be mapped onto the colormap. The range is specified using the Min and Max sliders. If not checked (default), VolumeViz maps the full range of data values onto the full colormap. For example, with short data (16 bits), 65536 data values are mapped to 256 colors (the default indexed colormap is 8 bits).

Data Set

Module: This section is composed of two checkboxes that specify how the data should be loaded in memory. Two memory management modes are available: Paging and LDM (see the User's Guide and/or Reference Manual for a detailed explanations of these modes). If LDM is selected, then another option is available to specify whether to handle borders or not for data sets that haven't been previously converted. In this case, VolumeViz will convert the data "on the fly" and will overlap tile borders if the option has been checked. Note that ".ldm" files can only be loaded when LDM mode is selected.

Predefined Data: This pulldown allows selection of one of the predefined data sets provided with the demo program. The special entry "User filename" attempts to load the user filename specified in the edit field immediately below. Note that the "WahaPub.sgy" data file is not supplied with the demo program. (This data file may be obtained from the Bureau of Economic Geology, University of Texas at Austin.)

User Filename: The name of a user-defined volume data file. The demo program reads a limited set of data formats, but applications can implement readers for whatever formats are appropriate for their industry. The volume data object only requires that the data be loaded somewhere in memory or that the application register a reader object that will be called to load the data.
This demo program can read ".am" (Avizo), ".vol" (HP Voxelator), ".sgy" (SEGY 3D seismic, revision 1, any kind of integer data size), ".fld" (AVS), DICOM files (Digital Imaging and Communication in Medicine), ".vox", and ".ldm" file (VSG Large Data Management data format). Note that the file readers are part of the demo code and are not guaranteed to work for data files other than the ones supplied with the demo. To be able to read DICOM file you need to provide, in a .lst file, the list of image stack with their complete path. Optionnally you can, in the same file, specify the volume property to help the reader to get usefull information. Here is a little example of a .lst file : Parameters { Raw 0 Dims 942 513 1 Size 0.000000 0.000000 0.000000 941.000000 512.000000 1.000000 Channel ALL_CHANNELS } circles_colors001.dcm circles_colors002.dcm circles_colors003.dcm


Background

Color: Allows you to modify the background color of the main window if Background Color is off.

Background Color: If on, the main window will have a gradient background.

16-Bit Floating Point Rendering

Allows rendering in a 16-bit floating point buffer. This can reduce alpha accumulation errors when rendering a large volume that has low opacity values. (The default buffer is 8 bits deep.)

Use Extended Data

If using this option, each time VolumeViz loads a tile of data, it will store two copies in memory: one is Z aligned (default), the other is X aligned. This allows orthoslice roaming performance to be approximately the same along each axis.


VolumeRendering:

VolumeRendering Dialog


Visibility: The check box controls visibility of the volume, but not the bounding box, axes, and slices. The bounding box and axes are controlled by their own check boxes. Slices have check boxes in the Geometry Control dialog. You might want to turn off the volume in order to see slices more easily.

Decoration

Colormap: This check box controls visibility of the colormap in the Main Window .

Histogram: This check box controls visibility of the histogram in the Main Window .

BBox: This check box controls visibility of a bounding box that encloses the volume geometry. This is a feature of the demo program. Using Open Inventor, an application can easily add this kind of additional geometry to the scene.

Axes: This check box controls the visibility of axes that show the orientation of the volume (red for the X axis, green for the Y axis, blue for the Z axis). Again this is a feature of the demo program. The axes are also interesting because they show the ability to mix polygonal geometry and volume data in the same 3D space.

Texture

Paletted Texture: This check box only affects texture map rendering. Note: Paletted textures are not available on all graphics boards. When possible, create "color index" textures using one byte per voxel. This minimizes texture memory used, minimizes the texture loading time and allows dynamic modification of the color map. If not checked, or not possible, we create "RGBA" textures using four bytes per voxel. Note: If fragment programming is supported on the graphics board, a fragment program will be used for the color table mode instead of paletted texture.

Compressed Texture: Controls use of the OpenGL texture compression extension (if available). A significant advantage of compressed textures is that they conserve texture memory space. Currently, the extension works on RGBA textures only, not on paletted textures. The compression factor is about 5.

Shared Texture: Controls use of the OpenGL shared texture paletted extension (if available). On machines that support paletted textures, using a shared palette conserves texture memory because a single palette can be used for all textures.

Composition: This pulldown selects the image composition method. Alpha blending is the most common method. "Max" or Maximum Intensity Projection (MIP) is also useful. Note: When using texture map rendering, MIP is only approximately correct.

Here is a picture showing the use of MIP composition:

MIP Composition


Interpolation: This pulldown allows to choose between "Linear" (linear interpolation), "Nearest" (nearest neighbor) and "Multisample (12 samples)" (high quality interpolation for slices and volume skin) texture mapping modes. rendering.

Render Method: This pulldown selects a rendering method from the following list:

  • Auto: Automatically choose the best available rendering method in the same order as these items.
  • 3D Texturing: Use OpenGL 3D texture mapping (if available).
    If available, provides good performance and good image quality, especially when "View Aligned Slices" is selected. Image quality is enhanced compared to 2D texture mapping because the graphics hardware performs interpolation along all three axes. Boards known to support 3D texture mapping include Sun Expert3D, Intense3D Wildcat, and HP fx series.
  • 2D Texturing: Use OpenGL 2D texture mapping.
    Available on all machines, provides good performance and fair image quality.
Switching between 2D and 3D texture mapping will incur a delay while the textures are loaded into the graphics hardware.

Rendering style

The volume can be rendered in different styles: standard volume rendering, pre-integrated volume rendering, lighted volume rendering, lighted pre-integrated volume rendering, isosurfaces (only voxels of a given value are rendered), a skin (only outside faces of the volume cube are rendered), or an RGBA skin (RGBA textures are used rather than indexed textures).Note: Programmable shader support is required for the pre-integrated and isosurface rendering styles.

Geometry Control

View-Aligned Slices: This check box only affects 3D texture map rendering. By default, slices are aligned with the axis (X, Y, or Z) closest to the direction of view (like 2D texture map rendering). "View-aligned" means slices are drawn perpendicular to the direction of view. This is a little slower, but produces a better image.

Number of Slices: This slider controls the number of slices drawn for 3D and 2D-Multi texture map rendering. Zero means to automatically select the number of slices. Rendering fewer slices will generally improve performance (with reduced image quality). An application might want to reduce the number of slices drawn during interactive operations.

LowRes Move: Enabling this option decreases the resolution of the screen when the user is interacting with the volume. It decreases the resolution only for the volume and not for the surrounding objects.

Optimisation: By setting this to "All", all available volume rendering optimisations are enabled. The "Expert" mode allows a finer control by enabling optimisation independently. Some of these optimisations needs hardware support (GLSL shaders and framebuffer objects).

earlyZ: If enabled, stop computing when the pixel's cumulative opacity reaches 1. This can increase performance when an expensive shader is being used.

GPU vertices: Slice vertices used for volume rendering are generated by the GPU instead of the CPU. This can increase performance when a large number of slices is being used or when "Subtiles" is enabled.

SubTiles: LDM tiles will be subdivided for rendering. Fully transparent sub-tiles won't be rendered, thus increasing the speed of the rendering if an expensive shader is being used. You should enable "GPU vertices" to TRUE when using this option.

Edge Enhancement

Edge coloring: If enabled, changes the color based on the gradient direction (normal). Areas where the normal (computed from the gradient) is facing the camera will have an unmodified color, whereas areas where the normal is more perpendicular to the view direction will tend towards black.

Threshold: If this value is low, more edges (and possibly noise) will be detected.

Edge 2D: When enabled, a 2D edge detection algorithm is used to highlight edges in the rendered image of the volume.

Inner edges: Increase this value to decrease noise on silhouette edges

Outer edges: Increase this value to decrease noise on edges in the volume.

Boundary Opacity: Increases boundary opacity based on the gradient magnitude.

Boundary Opacity's threshold: If this value is low (near 0.), only regions with a high gradient will be enhanced.

Intensity: If greater than 1, this increases the boundary opacity globally. Otherwise it decreases it.

Volume Skin

Bump Mapping: If enabled, changes the color based on the gradient direction (normal).

Bump Scale: Controls the magnitude of the bump

Material and Lighting

Lighting: The check box controls a directional light, initially aimed at the volume from the +Z axis. This light rotates with the volume. Using texture map rendering, lighting is approximated. Note: Turning the light on and off or changing the light direction may require reloading textures, which is slow. Using shaders (lighted volume rendering in Rendering style dialog) the light can be dynamically modified.

Volume with lighting enabled:

Volume with lighting

Light Editor:

The "Light Editor" button brings up the standard Open Inventor directional light editor. The gray sphere shows how the light will shine on the volume. The yellow arrow shows the current direction of the light. You can "grab" this arrow with the mouse and drag it to change the light direction. When you are finished with the editor, just click the "X" button in the window banner to close it.

Light Editor

Material Editor: This button brings up the standard Open Inventor material editor. In this demo, the material editor controls the diffuse, specular, etc., properties of the volume. In the case of texture map rendering, it specifically controls the properties of the polygons that are textured.

Global Alpha: This slider controls a scale factor that is applied to all the Alpha values in the color map before color lookup occurs. When the slider is set to 1.0, voxels have exactly the alpha value specified by the color map. Moving the slider to the left makes the entire volume progressively more transparent. Unlike modifying the colormap, this is an interactive operation even for texture map rendering. When the check box to the left of the slider is "checked", the global alpha value is updated dynamically as the slider moves. Otherwise the value is only updated when you release the mouse button after moving the slider. You can also type a value in the edit box.

Picking (Probe): This check box toggles volume/slice picking mode and visibility of the pick profile window. To use picking, first make sure the Main Window has focus (click in it if necessary), then make sure the viewer is in selection mode (cursor is an arrow shape).

The Pick Profile window looks like this:

Pick Profile

Picking on an ortho slice or oblique slice selects the closest voxel to the selected point. It returns the value of the selected voxel, its I,J,K position in the volume, and its X,Y,Z position in the 3D scene (not shown here).

Picking on a volume selects the first opaque voxel along the pick ray. It returns the value of the selected voxel, its I,J,K position in the volume, and its X,Y,Z position in the 3D scene (not shown here). Optionally it can also return the "profile" along the pick ray, which is a list of the values of all the voxels intersected by the pick ray (shown in the figure above as a line graph).

Isosurfaces

The following items are only active when the rendering style is Isosurface.

Number of Isosurfaces to Create: This allows you to to specify how many isosurfaces should be created.

Select Isosurface to Control: This allows you to to specify which isosurface to control.

Isovalue: This slider allows you to to specify the isovalue for the selected isosurface.


Geometry Control:

Geometry Control Dialog


Ortho Slice

This demo program can display multiple "ortho" (axis-aligned) slices through the data volume.

Number of slices: This combo box allows you to specify how many slices to create. The slices checkbox controls visibility of all slices.

Slice to Control: This combo box is a way to select one of the slices created (first slice created is slice number one).

Visibility: This check box controls visibility of the selected ortho slice.

Clipping: This check box enables the clipping plane associated with the selected slice. The clipping plane has no effect if the slice is not visible.
Note: This clipping plane is a built-in feature of the ortho slice object.

Clipping Side: This check box controls which side of the clip plane is visible.

Dragger Visibility: This check box controls visibility of the "dragger" associated with the ortho slice. The dragger is a 3D user interface gadget that can be used to drag the slice through the data volume. To use the dragger, first make sure the Main Window has focus (click in it if necessary), then make sure the viewer is in selection mode (cursor is an arrow shape). Move the cursor onto the white cylinder, press the left mouse button, and drag to move the slice.

Note: Each slice has its own invisible dragger associated. You simply need to click on the slice in the main window to drag it.

Alpha Type: This check box controls how alpha values in the data volume are interpreted when rendering the slice. "Binary" means voxels with non-zero alpha values are completely opaque. "Opaque" means all voxels are opaque.

Dragger Orientation: This pulldown selects one of three ortho slices, aligned with the X, Y, or Z axis.

Interpolation: The check box toggles between "Linear" (linear interpolation) and "Nearest" (nearest neighbor) texture mapping modes.

Slice Number: This slider shows the slice number where the slice is currently positioned. It can also be used to drag the slice through the data volume. When the check box to the left of the slider is "checked", the slice is moved dynamically as the slider moves. Otherwise the slice is only moved when you release the mouse button after moving the slider. You may also type a slice number in the edit box.

RGBA: Switch to RGBA textures (rather than indexed textures).

Bump Mapping: Enable bump mapping on slices. A normal is computed for each voxel based on the 2D gradient of the voxel in x and y and the data value in z. One can see the light interaction by using the directional light editor. Use the Bump Scale box to control the magnitude of the bumps. Note: Requires programmable shader support.

Start Animation: If this button is pressed, the selected orthoslice will start roaming through the volume in the direction it is oriented. The animation speed can be set using the target frame rate slider.

Oblique Slice

This demo program can display a single "oblique" (arbitrary orientation) slice through the data volume. (A VolumeViz application can create any number of oblique slice objects.)

Visibility: This check box controls visibility of the oblique slice.

Clipping: This check box enables a clipping plane associated with the slice. The clipping plane has no effect if the slice is not visible.
Note: This clipping plane is defined by the demo program, using the Open Inventor SoClipPlane node.

Dragger Visibility: This check box controls visibility of the "dragger" associated with the slice. The dragger is a 3D user interface gadget that can be used to drag the slice through the data volume and change the orientation of the slice. To use the dragger, first make sure the Main Window has focus (click in it if necessary), then make sure the viewer is in selection mode (cursor is an arrow shape). Move the cursor onto the white cylinder, press the left mouse button and drag to move the slice. Move the cursor onto one of the gray lines, press the left mouse button, and drag to rotate the slice.
Note: This demo uses a "Jack" dragger for the slice, but an application can choose from other interaction tools.

Interpolation: This pulldown allows to choose between "Linear" (linear interpolation), "Nearest" (nearest neighbor), "Tri-Linear" and "Multisample" texture mapping modes.

Alpha Type: This check box controls how alpha values in the data volume are interpreted when rendering the slice. "Binary" means voxels with non-zero alpha values are completely opaque. "Opaque" means all voxels are opaque.

Alternate Representation: This button will save all slices (oblique and ortho) currently present in the scene as an alternate Open Inventor geometry in a .iv file (output is alternateRep.iv). If read back in without having VolumeViz initialized, an alternate representation of the slice will be created (an SoFaceSet node textured with an SoTexture2 node using data from the volume).

Slice Material

In addition to the colormap the slice is using, a material is also used to modify transparency and lighting. Pressing the Material Editor button brings up a dialog which allows you to modify the material parameters.

Volume Geometry

This demo program can display a single volume geometry (arbitrary surface using the volume data as a texture defined by one of the following nodes: SoVolumeFaceSet, SoVolumeIndexedFaceSet, SoVolumeTriangleStripSet, SoVolumeIndexedTriangleStripSet ) through the volume data.

Visibility: This check box controls visibility of the volume geometry.

Clip Geometry: Specifies whether to clip the geometry at the volume boundaries or not.

Interpolation: The check box toggles between "Linear" (linear interpolation) and "Nearest" (nearest neighbor) texture mapping modes.

Offset: Sets an offset value used for computing the texture coordinates. The texture coordinate for each vertex will be taken from a point offset units away from the vertex. The offset is measured in the direction of the vertex normal. By default the offset is equal to 0 (no offset). When using this feature, a vertex normal must exist for every vertex. If vertex normals are not supplied, Open Inventor will compute vertex normals in the usual way except that the crease angle will be fixed at PI in order to assure that a vertex normal is computed at every vertex.

Volume Scale Factor

The volume scale factor sliders allow you to adjust the shape of the volume by scaling it along the X, Y, and Z axes. Press the Reset button to reset the scale factors back to 1.0.


Region Of Interest:

Region of Interest Dialog


VolumeViz supports a "Region of Interest" (ROI) which modifies the visible portion of the data volume. By default it specifies a simple subvolume. However it can specify more complex shapes: The ROI has two main fields called subVolume and box. Those two fields are simple boxes of independent dimensions and locations. The user can define how these two boxes interact with each other to define which part of the volume is visible based on the flags field value (Inclusion, Exclusion, Cross,... see the Reference Manual for more information).

General

Enable: This check box controls whether the ROI is enabled. When the ROI is not enabled, the entire data volume (or subvolume) is visible and the ROI dragger is not visible.

ROIManip: This check box controls whether the ROIManip is enabled. The ROIManip defines a manipulator to transform an ROI. An SoTabBoxDragger allows the user to move and resize the ROI. If not checked, then only the ROI is used and no manipulator is visible.

Reset: Clicking this button will reset the ROI to the full size of the data volume.

Apply to geometry: If checked, the ROI will apply to volume and geometry. If not, the ROI will only be applied on the volume.

SoROIManip fields

Constrained: Specify whether the manipulator can move outside the volume boundaries.

Controlling: Specifies what 3D box the manipulator operates on (subVolume or box).

SoROI fields

Shape: This pulldown controls the "shape" of the ROI (Region of Interest).

Subvolume

These edit fields allow you to specify the subvolume box numerically instead of using the manipulator. This can be very useful when working with an extremely large volume.

Camera

Use these controls to control the camera and the ROI. You can use them, for example, to center the ROI in the view or align the camera along a specific axis and with a specific up axis. This can be particularly useful when working with a large volume or large slices.

Save settings

Use this file name box to save parameter settings for re-use the next time VolRend is started. Each time you browse, select the file, and click OK, the settings are saved. The default file name is oiv.cfg. For information about the parameters, see $OIVHOME/examples/source/VolumeViz/VolRend/ReadMe.txt.

By default the ROI is an "inclusion" box (subvolume) which specifies the region of the volume that should be rendered.

The ROI can also be an "exclusion" box which specifies a region of the volume that will not be rendered. This is very useful for cutting away part of the volume or the current subvolume (see "ROI Dragger" example image). There are many other options (see the SoROI node documentation).

Using the ROIManip: First make sure the Main Window has focus (click in it if necessary), then make sure the viewer is in selection mode (cursor is an arrow shape).
Resize the ROI: Move the cursor onto one of the green or red "tabs", press the left mouse button and drag. The ROI cannot be larger than the data volume.
Move the ROI: Move the cursor onto one of the "sides" of the dragger box, press the left mouse button and drag. The ROI cannot move outside the data volume. The ROI can move outside the current subvolume, but only voxels inside the Subvolume are potentially visible.

The Region-of-Interest (ROI) Dragger looks like this:

ROI Dragger


Volume Clipping:

Paging Control Dialog


This tab allows to clip a volume against an arbitrary closed 3D volume or against a surface defined by a uniform grid. This clipping is done on the GPU.

Volume Clipping

Enable: Enable or disable volume clipping.

Dragger Visibility: If disabled, hides the dragger used to manipulate the clipping object.

Model Visibility: If enabled, the clipping object is displayed.

Predefined Model: Use one of the predefined models to clip the volume

User Filename: Load an iv file to clip the volume. All 3D objects in this iv file must be closed.

Clipping passes: Number of passes used to do the clipping. Increasing this number increases the image quality but decreases performance.

Exclusive: If enabled, voxels inside the clipping object will be drawn, voxels outside will be clipped.

Uniform Grid Clipping

Enable: Enable or disable uniform grid clipping.

Number of Grids to Create: Select the number of grids to display

Dragger Visibility: If disabled, hides the dragger used to manipulate the grid.

Select Grid to Control: This combo box is a way to select one of the grid created (first grid created is grid number one).

Predefined Model: Use one of the predefined grids to clip the volume

User Filename: Specify an image file to use as a clipping grid.


Paging Control:

Paging Control Dialog


The VolumeViz paging mechanism will be used to load the data into memory if the Paging module has been checked before loading the data. When the paging mode is enabled, VolumeViz will automatically divide the whole volume data into blocks called pages, in order to optimize data transfer between disk, main memory, and texture memory.

Paging: If enabled, VolumeViz uses Paging memory mode to load data by blocks. If not, the whole data set will be loaded at once in memory (very inefficient for large data sets).

View Pages: Draws an outline of the pages.

Memory: Specifies how much main memory (RAM) is allowed on the system. If a page needs to be loaded and not enough memory is available to load it at full resolution, VolumeViz will automatically subsample the data.

Page Size: Size of a page (default is 128x128x128).


LDM Control:

LDM Control Dialog


The VolumeViz Large Data Management (LDM) mechanism will be used to load the data into memory if the LDM module has been checked before loading the data. The LDM module is a multi-resolution data manager that allows the loading of extremely large data sets (hundreds of gigabytes) with interactive navigation. Ideal for interactive exploration of volumes.

Visual Feedback

Draw Tiles: Display tile texturing or not.

Slice Tex: Display slice texturing or not.

Fake Data: Use fake data instead of the real data during loading into main memory. The fake data is programmatically generated and is designed to illustrate features of Large Data Management (the data will need to be reloaded to see the fake data).

Load Unload Tiles: Show tiles loaded (in red) and unloaded (in blue) in texture memory.

Texture Front Outline: Draw tile outlines for all primitives. The tile outline of tiles of full resolution are drawn with a brighter gray for the volume, and a brighter green for the slices.

Data Front Outline: Show tiles loaded in main memory. This implies showing the multiresolution topology. The tile outlines of tiles of full resolution are drawn with a brighter yellow.

Valuation Outline: For the default LDM implementation, displays an octree representation showing traversal of the octree. Red dots are tiles that have been valuated. Blue indicates the minimum and maximum resolution thresholds. Yellow shows the octree itself.

Options

View Culling: If checked, VolumeViz will not load tiles located outside of the view frustum.

View Point Refinement: If checked, VolumeViz will load tiles of higher resolution close to the view point.

Slice Equal Resolution: If checked, only tiles of the same resolution level will be used for the slice texturing.

Move Low Resolution: If checked, the slice will use a lower texturing resolution when it is dragged.

Ignore Fully Transparent Tiles: If checked, VolumeViz will not load fully transparent tiles (i.e., if all voxels within the tile have an alpha value of 0).

Proximity Visitor/Tile Visitor: The proximity visitor loads data on the geometry and surrounding the geometry, creating a hull of data around it. This is very useful when roaming a slice in a volume. It can be roamed at full resolution as high resolution data is already present when moving the slice. The tile visitor only loads data where there is geometry.

Number of IO: Number of loaders used.

Tile Size: If the data hasn't been preconverted (in which case the tile size is fixed), it will be converted on the fly. In this case, this dialog specifies the size of a tile.

Subtile Size: This dialog specifies the size of a subtile.

Loading Policy: In LDM mode, VolumeViz loads the data asynchronously. The loading policy allows to specify when the loading thread should load the data into main memory. NO_INTERACTION means the thread will only load when there is no user interaction. ALWAYS is at any time. NEVER means no more loading will occur.

Min Resolution Threshold: Specify to never unload from main memory tiles that are of resolution lower than this level.

Max Resolution Threshold: Specify to never load tiles that are of resolution higher than this level.

Fixed Resolution Mode: If this mode is enabled, VolumeViz will load at once (synchronously) all tiles of a specific resolution.

Requested Resolution: Resolution level for the fixed resolution mode.

Loading Callback: Enables the red/green circle on the upper right corner of the viewer window. When red, VolumeViz is loading data, when green VolumeViz has finished loading data from disk.

Main Memory Control Parameters

Amount in MB: Specifies how much main memory is allowed (in MB).

Number of Tiles in RAM: Specifies how much main memory is allowed (in number of tiles).

Notification Rate: VolumeViz will redraw after a certain number of tiles are loaded into memory. This slider allows you to specify this number of tiles.

Control Parameters for Volume Texturing

Amount in MB: Specifies how much texture memory is allowed in MB for the volume (3D textures).

Number of Textures: Specifies how much texture memory is allowed in number of tiles. If this amount exceed the capacity of texture memory of your graphics board, OpenGL will start swapping textures from main memory to texture memory. This will significantly decrease the performance.

Texture Load Rate: Specify the maximum number of textures to load into texture memory between two frames.

Control Parameters for Slice Texturing

Number of Textures for Slices: Specifies how much texture memory is allowed in MB for slices (2D textures).

Texture Load Rate for Slices: Specify the maximum number of textures to load into texture memory between two frames.

.

 

-- Thermo Fisher Scientific --