24 April 1992 A word of warning -- this module does not work on our Titan. I'm presently trying to determine why. wes ***************************************** ******* MODULE UPDATE - 05/19/92 ****** ***************************************** AVS Modules bezier volume Lawrence Berkeley Laboratory 10 Jan 1992 NAME bezier volume - curvilinear volume renderer SUMMARY Name bezier volume Type mapper Inputs Volume Data; field irregular 3D 3-coordinate scalar (REQUIRED) Colormap (REQUIRED) Outputs Image Data; field uniform 2D 4-vector float Parameters Name Type Default Min Max Image Size integer 128 32 1024 Rendering Style choice "dots" "dots","volume" Interpolation choice "tricubic" "trilinear","tricubic" Hull Control choice "volume only" "volume only", "hull only", "volume & hull" Voxel Sort Switch boolean false true,false Voxel Input Type choice "curvilinear" "curvilinear", "tricubic" Rendering Throttle float 0.1 0.0 4.0 Opacity Transfer Function choice "none" "none","linear","log" OpacityScalar float 1 0 10.0 DESCRIPTION The bez_vol module is an object order volume renderer designed to work with volumes embedded in warped grids. This module assumes that voxels are topologically equivalent to hexahedra, the faces of which are not necessarily planar. This solid is manipulated and rendered using tricubic Bezier basis and rendered using a forward difference evaluation of the cubic triparametric Bezier representation of a solid. INPUTS Volume Data ; field 3D irregular 3-coordinate scalar float (REQUIRED) This is the input volume. Each grid point consists of an x,y,z coordinate and some scalar value. Colormap; AVS colormap (REQUIRED) The colormap is used to determine the color at each corner of each "voxel" using a linear "transfer" function. PARAMETERS Image Size (integer) This typein controls the size of the resulting image. The image is always square (could be easily changed in the code to allow for rectangular images). Rendering Style (choice) The user may select a rendering style of either "dots" or "volume." If "dots" is selected, the "corners" of each voxel are composited into the image buffer, with no subdivision being performed. This results in a crude, yet quick approximation to volume rendering. Selecting "volume" will result in full voxel rendering being performed. Hull Control (choice) The user can choose to have only the volume data displayed, only the bounding hull, or both. The hull of the volume is simply the faces which bound the data. The hull renderer is crude, and looks terrible at low resolution. Interpolation Method (choice) The user may select either "trilinear" or "tricubic" basis functions for subdivision. Tricubic gives better results, but is on the order of 150% more expensive than trilinear. Voxel Sort Flag (boolean) If this flag is turned on, the voxels will be sorted front-to back prior to rendering. The resulting image is sensitive to the compositing order, so the results are questionable if the voxels are not sorted first. The only advantage to be gained from not sorting the voxels lies in decreased runtime of the module. Voxel Input Type (choice) This parameter affects the interpetation of the input field. If "curvlinear" is selected (the default), each input voxel (the region bounded by 8 grid points) will have the additional control points required for the bezier basis computed at run time. If "tricubic voxels" is selected, each second and third grid point define the interior control points of each tricubic voxel. This mode was used in debugging the module. Most input grids should be processed with the parameter set to "curvlinear". Rendering Throttle (float) This parameter will directly affect the runtime and resulting image quality. Increasing the value of this parameter will increase both runtime and image quality. Opacity Transfer Function (choice) Opacity is defined in the input colormap. However, large volumes will tend to be too "opaque" when this value is set to none. In this case, the user should select either "linear" or "log" to apply a nonlinear opacity transfer function to the volume. "log" tends to give better results, but both "linear" and "log" are affected by the opacityscalar parameter. OpacityScalar (float) This scalar affects the non-linear opacity transfer function applied to the user-defined opacity. Decreasing this value will make the volume overall more "transparent", increasing this value will tend to make the overall volume appear more "opaque." OUTPUTS Image Data (field uniform 2D 4-vector float) The module produces a floating point image as a result. All components of each pixel are in the range 0..1. Some kind of post-processing is generally required in order to display the data (like field to byte, or the more appropriate "float image to byte" module written especially for this purpose). EXAMPLE A typical network using this module looks like this: READ FIELD (read in the bluntfin dataset, for example) | XFORM POINTS (for rotations, etc.) | GENERATE COLORMAP | | +--------+ +-----------+ BEZ VOL | FLOAT IMAGE TO BYTE | DISPLAY IMAGE RELATED MODULES new_abuffer - ray tracing volume renderer of uniform fields SEE ALSO float image to byte (for converting the output of this module to something AVS can display). If one uses "field to byte", the resulting image will not be correct when "byte normalize" is selected, since that transformation is applied seperately to each of the r,b,g,a channels. LIMITATIONS/KNOWN BUGS 1. This module is very expensive to run. A run using the blunt-fin dataset, rendered at an image size of 128 pixels square, using tricubic interpolation requires about 900 cpu seconds on a sun sparcstation 2. Lawrence Berkeley Laboratory bez volume Wes Bethel ewbethel@lbl.gov 10 Jan 1992