DOWNLOAD




























art as featured in


siggraph 2004
art gallery


caltech's
espiritu 2004
art exhibit

VoV v.0.3
by santiago v lombeyda
cacr - caltech © 2004

REQUIREMENTS
- VP1000/VP500* volume rendering card
- GL compatible graphics card
- Windows/Unix* system with:
  + GL
  + GTK/GTK-GL
  + Pango, etc...
  > downloads
(* untested)



VoV, Volume Visualizer v.0.3 is an easy, quick, interface for the VolumePro 1000 volume rendering card, by TeraRecon. It uses GTK and OpenGL for the interface. It has been originally compiled and tested under Windows 2000. VoV also offers a windowless mode, which allows for easy batch processing from a command line, or under a cluster through the issue of remote commands (using rsh or ssh).
VoV was developed as part of the TeraVoxel research grant. This software is distributed as is, under your own risk. This software is distributed under the GNU Public License.

DOWNLOAD: source [TAR.GZ: 74KB]
DOWNLOAD:
win2k binary [ZIP: 91KB]
(
dll key // sample data, bulb.vox, courtesy or terarecon // requires GTK and PANGO dlls).



INDEX
  .) opening data
  :) main window
 .:) colormap window
 .:) properties window
 ::) saving environment
.::) windowless mode
:::) future work


  .) opening data
VoV supports three basic data formats: VOX, raw data, DAT.

The VOX format is the standard vox1000 as supported by the VolumePro. (See voxel file formal specs.

The RAW format, is concidered to be a binary file, with 1 or 2 bytes per data value, out of which 8, lower 12 or high 12 bits are used.

The DAT format, is simple a short text file which contains the basic info of what an external binary file contains. Its basic format is:
[VoV.DAT.Volume]
[DATAFILE] <filename>
[DATATYPE] BYTE|SHORT|12SHORT|SHORT12|FLOAT|DOUBLE
[SIZE] <colums> <rows> <slices>
[DIMENSIONS] <min x coord> <max x coord> <min y coord> <max y coord> <min z coord> <max z coord> (in units > 1.0)

example:
[VoV.DAT.Volume]
[DATAFILE] e:\Volumes\MouseMRI.raw
[DATATYPE] BYTE
[SIZE] 256 128 72
[DIMENSIONS]
-10.0 20.0
-10.0 10.0
0.0 10.0



screenshot 0: main VoV window
  :) main window
Direct interaction with the volume is done through the main window. Clicking on the volume directly allows you for direct manipulation.

Pressing and dragging with the left mouse button allows you to spin the model accross an axis of rotation orthagonal to your movement. If the mouse had a conciderable speed when you release the mouse button, the model will continue to spin as fast as the rendering can refresh the model and according to the release speed.

Pressing and dragging with the middle mouse button allows to pan the window up/down, left to right.

Pressing and dragging with the right mouse button allows to zoom in. Notice that because the rendering is only done in orthogonal projection, it is a direct zoom rather than a perspective approach towards the model.


screenshot 1: colormap window
 .:) colormap window
Interaction with the colormap is also quite straight forward. To open the colormap window, go to the Main window's View menu and choose Colormap.

The colormap main display area, allows you to directly set the values accros the red, green, blue, or alpha channel by simply clicking on the colormap display. The lowest point of screen represents a zero value, while the highest represents the highest. In case of the alpha channel, lowest means completely transparent, while highest means completely opaque.

To choose which channel to affect, simply click on the respective channel selector button at the leftmost of the window.

The Magnification lense button on the right of the window, let you zoom in (accross the values range only, i.e. x axis). The vertical scroll bar on the rightmost offers you a quick zoom tool, from 100% to 1000%.

When the colormap does not fit entirely on the window, then the horizontal scrollbar allows you to pan accross the colormap.

The arrow buttons let you cycle the current selected channel(s) accross ranges, or simply increase or decrease globally the values of the selected channel(s) up and down.

Finally, the open and save buttons on the upper right allow you to open saved colormaps, or save your current colormap.



screenshot 2: properties window
 .:) properties window
The properties window allows you to control the way the volume reacts to lights. The basic settings include the control of the volumes emissive value (color emmanates from volume, thus light independent), diffuse value (color reacts to light regardless of position), specular value (color reacts using normal depending on light position, i.e. shinniness), specular exponent (what range of angles respond to lights for the specular color).

Also, as a basic property, we allow the user to change the sampling factor of the volume. The larger the sampling factor, the more detailed the final rendering may be, but the slower it becomes.


screenshot 3: lights window

Meanwhile the lights tab of the properties window allows you to manage each of 5 available lights. For each light, which you control with the drop down menu in the middle of the window, you can select the hue and saturation (color and its intensity), as well as how strongly it affects the specular component of the object (versus being a pure diffuse/ambient light).

You select which light you want to be one (out of the five available) by selecting the checkboxes above the light dropdown menu.

You can select the orientation of the light, by directly interacting with the ball and sample light window. At its bottom is the intensity of all the lights.
 ::) saving environment
All this effort of setting your lights, light properties, and colormap just the way you need it, yould we worthless if you could not save them. From the main window, you can select to save each of this. The save Camera, stores the orientation and zoom level of the screen into a simple text file. The save colormap option saves all the current rgba colormap values. Finally the save environemnt option saves the light orientations, properties, on/off state, as well as the basic environment light properties and sampling factor. Notice all these files are simple text files, so you can actually look at them, and tweak them manually if you'd like.

An example of a sample environment properties saved file:
[VoV.Environment]

[BGCOLOR]
1.000000 1.000000 1.000000 1.000000
[LIGHT0]
-0.426032 -0.056222 0.902959 0.000000
[LIGHT0ONOFF]
1
[LIGHT0INTENSITY]
1.000000
[LIGHT1]
-0.049331 -0.354767 -0.933652 0.000000
[LIGHT1ONOFF]
1
[LIGHT1INTENSITY]
1.000000
.....
[SAMPLINGFACTOR]
1.000000
[AMBIENT]
0.000000
[DIFFUSE]
0.717791
[EMISSIVE]
0.239264
[SPECULAR]
1.000000
[SPECULAREXPONENT]
12.883435
Similarly, the current camera location and zoom level can be saved from them the main File menu. The camera is written as a 4x4 matrix which corresponts to a simple orthographic projection.
.::) windowless mode
Finally, the big advantage of VoV is its ability to do batch jobs. You can do this by creating simple scripts that tell VoV what volume to use, what environment properties you want (from saved colormaps, properties, and camera you have done), and then just telling it what image name you want to store the result as. It is that simple. The format for doing this is simply:
VoV.exe -h | -help
        [-camera ] [-environment ]
        [-renderoffline ] [-imageformat RGB|RGBA|TGA|TGA-A]
        [-width] [-height [-nostretchtonewsize]] [-vox | -dat | -raw] [filename]
Here is a sample csh script (using cigwin tcsh shell under windows 2000):
#!/bin/csh

foreach volume (E://Data/Volume.???.vox)
  # set j to name of image, by simply
  #    changing to drive E,
  #    directory Images,
  #     and TGA extension instead of VOX
  set image = `echo $volume | sed -e 's/^E/F/' | \
                              sed -e 's/Data/Images/' | \
                              sed -e 's/vox$/tga/'`
  VoV -vox $volume -imageformat TGA -renderoffline $image \
       -environment myVoVFiles/envi.01.txt -camera myVoVFiles/cam.01.txt \
       -colormap myVoVFiles/redToBlue.colmap.txt -width 640 -height 480
end
 ?) known bugs
BUG: The open and save colormap from the file menu do not respond.
fix: open and save colormaps using the buttons on the colormap window

BUG: The view material proporties will not open
problem: after opening and closing it once, it will not open anymore as it belives it is completely destroyed

BUG: The 12SHORT datatype option on the DAT file format gives me odd results.
fix: use simply SHORT. 12SHORT works ok (as [12b]SHORT) from the Read RAW file file menu as well.

BUG: The Read Image Sequence will not work
problem: we disabled our own tiff reader to use a standard library. the hookup has not been done yet.
fix: use gimp or photoshop to filter all your images into raw files. then cat them together into one single volume and open them with Open RAW File from the file menu.

 :::) future work
Current work on VoV includes the ability to dump high resolution images (larger than current VP1000 image buffer, done by multiple rendering, and then image tiling); ability to dump batch scripts directly from interface; ability to control use of multiple cards from the interface (as parallel renderers or alternate render buffers); dumping of interation movies; ability to save camera movement/animation; use of probes/crops; and much more!

- the VoV team


for more information, or questions please contact santiago v lombeyda
cacr/teravoxel - caltech © 2004



[ tvxl | results | terarecon ]