new bubbleviz - generate spheres to represent values of 3D field

Name

     new bubbleviz - generate spheres to represent values of 3D field

Summary

     Name	   new bubbleviz

Type

  mapper

Inputs

   field scalar 
		   colormap

Outputs

   field 1D 3-coord 4-vector real

Parameters

   Name		   Type		  Default	 Min	   Max
		   Radius	   float	  1.0		 0.0	   100.0

Description

     The bubbleviz module generates spheres of various radii and colors	at
     the element locations of a	1D, 2D or 3D field. This is a "cuberille" style
     of	volume visualization, except that it uses spheres rather than
     cubes.
     This module can be	used for non-uniform input fields.
LBL Enhancements resulting from Complete Rewrite
     As supplied by Stardent, this module did not process 1D (scatter)
     fields.  This bug has been fixed.  Also, as supplied by Stardent,
     there was a bug where "balls" with associated scalar values which
     lied outside the range of the colormap were not included in the
     output list of balls (on the max value end of the colormap).  This
     bug has been fixed.
     Additionally, the range of the input field would "wrap" around
     at 256 in each of the dimensions.  The unsigned char responsible
     has been changed to an int so this problem went away as well.
     In its stock form, the bubbleviz module would generate an output
     field, the size of the data portion of the field being four times
     as large as that of the input field.  This can be problematic
     on extremely large datasets.  The algorithm has been changed so
     that the size of the output field is a function of the number
     of entries which have a non-zero opacity, as opacity relates to
     sphere size.  Thus, spheres of zero radius are not produced.
     This is a good method of data reduction in large data sets.
INPUTS
     Input Scalar Field	(required; scalar field any data)
	The input is a scalar field.  For irregular fields, any number
	of data dimensions are permitted.  Only 3D rectilinear and
	3D uniform fields are otherwise permitted.  Any of byte, float,
	int or double data is permitted.
     Color Map (required: colormap)
	Used to map from scalar values to colors and radius sizes of
	the output spheres (from scatter dots).  The hsv portions of
	the colormap produce the sphere color.  The opacity channel
	of the colormap corresponds to resultant sphere radius.
PARAMETERS
     Opacity Scale
	  A multiplier factor for the sphere radii. This is particularly
	  useful for irregular fields, for which the computational-to-
	  physical mapping often makes the default spheres too small.
OUTPUTS
     Data Field	(field 1D 3-coord 4-vector real)
	  The output is	a list of points in 3D space, with a 4-vector of
	  reals	at each	point:  each 4-vector specifies ARGB for the
	  sphere.  The A portion is the radius (ranges from 0 to 1);
	  the user has the option of attenuating the sphere radius with 
	  the "opacity scale" parameter above.

Example

     A typical network using this module looks like this:
	  GENERATE COLORMAP		  READ FIELD
		  |				  |
		  +-----------+   +---------------+
			      |   |
			  NEW BUBBLEVIZ
			      |
			  SCATTER DOTS
			      |
			  GEOMETRY VIEWER
     Note that the list	of points generated by the bubbleviz module is
     converted to a geometry by	the scatter dots module.
RELATED	MODULES
     Modules that could	provide	the Data Field input:
	  read volume
     Modules that could	be used	in place of bubbleviz:
	  colorizer
	  gradient shade
     Modules that can process bubbleviz	output:
	  scatter dots
HINTS
	The final sphere radius size (in the form of geometry produced
	by new_scatter_dots) is a product of the opacity function,
	the radius scale dial (in this module) and the radius dial 
	on new_scatter dots.
	To produce colored spheres of constant radii, set the radius
	scale dial to zero.  This will force all spheres, on output
	from this module, have a radius of value 0.  Then, set the radius
	dial in new_scatter_dots to the desired value.
	To produce colored spheres of varying radii, set the radius
	scale dial to some non-zero value.  Then, the resulting radius
	value (as computed in new_scatter_dots) will be a product
	of:
		opacity_function(new_bubbleviz) * radius_scale(new_bubbleviz)
			* radius(new_scatter_dots)
AVS Modules						       new_bubbleviz(6)
Lawrence Berkeley Laboratory				       27 Aug 1992