bezier volume - curvilinear volume renderer

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