IVRVIEW

NAME
SYNOPSIS
DESCRIPTION
USAGE
FILE MENU
VIEWING WINDOW
INFO SECTION
SETTINGS
RESTRICTIONS
SEE ALSO

NAME

IvrView - interactively apply different transfer functions to volume rendered images

SYNOPSIS

IvrView (no command line options)

DESCRIPTION

When working with Direct Volume Rendering (DVR), one of the more substantial problems is to find a useful and aesthetically pleasing transfer function to apply to a volume. Unwise choices in opacity can lead to invisible or obscured features, and misuse of color can lead to some pretty garish images. Compounding the problem is the problem that Direct Volume Rendering can take a substantial amount of time for large datasets, and one may need to wait several minutes or more before seeing the result of applying a transfer function. This substantially cuts down on the number of iterations one is willing to make to find a good transfer function.
The IVR system (IVR file format + IvrView) drastically increases the editability of transfer functions by providing a scheme in which the most time-consuming part of volume rendering (transformation into screen-space plus interpolation) is performed only once and the results stored in a (rather large) file. Once that step is complete, the file can be loaded into IvrView, and different transfer functions can be applied in a matter of a few seconds. Combined with a transfer function editor such as cmed, interactive editing of transfer functions is thus possible.

USAGE

At present, there are no command line options to IvrView. All interaction is done via the GUI, as described in the next sections.

FILE MENU

Open IVR... (Ctrl-o)
Opens a dialog box allowing you to choose a .ivr file. Note that these files are large, and may take a while to load, during which period the dialog box will remain open but unresponsive.
Open Colormap...
Opens a dialog box allowing you to choose a colormap file to use as a transfer function. Currently, the only supported format is a text file of the form:
N
R G B A
R G B A
...
Where N is an integer describing the number of entries to follow, and each of the R, G, B and A are floating point numbers in the range of [0,1]. (values greater than 1 may be used to 'overheat' certain colors, or to make certain features more opaque)
Reload colormap (Ctrl-r)
Reloads the current colormap file and re-applies it to the volume. Useful for when you are actively editing the colormap in an external colormap editor and want to view the changes.
Save colormap
(Unimplemented)

VIEWING WINDOW

The area just below the menu bar is where the rendered image will be displayed. Currently, this is fixed at a size of 640x480 pixels.
When an ivr file is loaded, one can peek at the RGB value of any pixel by clicking on it. The pixel location and the RGB value (expressed as floating point numbers in the range [0,1] are printed to the console.

INFO SECTION

Directly below the drawing window are several text-boxes containing information about the currently loaded file, including the scalar range of the data in the volume, the "volume depth", which is the length of the longest ray segment intersecting the data, and the locations of both the volume and colormap files

SETTINGS

Here, one can make a number of changes to affect the rendered image. After a change to any one of the settings, the settings may be applied by hitting the Render button, or equivalently, hitting the return key on the keyboard. Each setting will be described below:
Clip
Set a clipping range for rendering - only samples that fall within this range will contibute to the image. The distances are measured from the start of each ray, which in most cases (especially when the viewpoint was chosen to be inside the volume) is the eye-point. Not the most important setting.
Upon loading a new IVR file, this range is set to encompass the entire dataset.
Colormap Range
Together, the colormap range and the colormap itself define the transfer function to be used. The transfer function affinely transforms the colormap range to the range [0,N-1], where N is the number of color entries in the color map. Values outside the scalar subrange are clamped to 0 or N-1.
Upon loading a new IVR file, the colormap range is set to the actual scalar range of the data in the file. For single frames in an animation, however, you probably want to pick a single colormap range for the whole animation.
Color Scale
A brightness factor - each red, green, and blue component of the final image will be multiplied by the color scale.
Compositor
You can change the compositor being used, which determines how the alpha channel of the colormap is interpreted.
For the compositor descriptions below, we use the following definitions
sample[n]
The value of the n-th sample along the ray in back-to-front order
width[n]
The width of the n-th sample interval along the ray.
F[v]
The transfer function, applied to the value v. The result is an RGBA tuple
color[n]
The result of the preceding n compositing operations.
c.rgb c.a
For an RGBA color c, these return just the RGB components or the alpha components individually.
c.rgb*a
Shorthand for: c.rgb*c.a
Additive
In the additive compositor, no sample is considered opaque - instead, the contributions of each sample along the ray are summed together (weighted by the width of the sample interval)
color[0] = {r=0,g=0,b=0}
color[n] = color[n-1] + (F(sample[n]).rgb * width[n])
Bock
The algorithm used by Dave Bock's original AMR renderer:
color[0]=0
temp.rgb = color[n-1].rgb*a + (F(sample[n]).rgb*a * (1-color[n-1].a))
color[n].rgb = color[n-1].rgb + temp * width[n]
Over
This implements the standard over-operator for compositing, which is probably the one you want to use, as it allows for both opacity and emissivity.
opacity = F(sample[n]).a * width[n]
color[n].rgb = (F(sample[n]).rgb * opacity) + color[n-1]*(1-opacity)
Ideal
The ideal is meant to do a full integration of opacity and emissivity, as opposed to the coarse approximation performed by the over operator. It is not quite functional yet.

RESTRICTIONS

There are some restrictions to using IvrView:
The pre-transformed volume (stored in .ivr format) represents only a single point of view, so you can't navigate around the data being rendered. There are hardware-accelerated direct volume renderers which do allow such navigation, however they tend to be lower quality, and not as accurate for previewing. The images produced from IvrView are very close to the output from a high-quality software render.
Another restriction is that the pre-transformed .ivr files must be especially produced by a volume renderer. While the IVR format is quite simple (see ivr(5)), the only renderer which outputs in that format is the amore AMR renderer.

SEE ALSO

amore(1) ivr(5)