Provided by: libvolpack1-dev_1.0b3-9_amd64 bug

NAME

       vpCreateMinMaxOctree,  vpMinMaxOctreeThreshold,  vpDestroyMinMaxOctree  - create/destroy a
       min-max octree for optimized rendering

SYNOPSIS

       #include <volpack.h>

       vpResult
       vpCreateMinMaxOctree(vpc, root_node_size, base_node_size)
           vpContext *vpc;
           int root_node_size, base_node_size;

       vpResult
       vpMinMaxOctreeThreshold(vpc, param_num, range)
           vpContext *vpc;
           int param_num, range;

       vpResult
       vpDestroyMinMaxOctree(vpc)
           vpContext *vpc;

ARGUMENTS

       vpc    VolPack context from vpCreateContext.

       root_node_size
              Number of voxels per side in the top level (largest  nodes)  of  the  octree.   Not
              currently used.

       base_node_size
              Number of voxels per side in the bottom level (smallest nodes) of the octree.  Must
              be a power of 2.

       param_num
              Identifying number of one parameter of the opacity transfer function.

       range  Range threshold for one parameter of the opacity transfer function.  If  an  octree
              node spans a larger range then it is subdivided.

DESCRIPTION

       These routines are used to create and destroy a min-max octree, an internal data structure
       that is used to accelerate classifying and rendering volume data in a 3D voxel array.  The
       octree  is a hierarchical data structure that contains minimum and maximum values for each
       voxel field.  It does not duplicate the data in the voxel array.  The octree is  not  used
       with preclassified volumes (see vpClassifyVolume(3)).

       Before creating an octree, declare a 3D voxel array using vpSetVolumeSize, vpSetVoxelSize,
       vpSetVoxelField and vpSetRawVoxels, and initialize parameters  for  the  opacity  transfer
       function  by  calling  vpSetClassifierTable.  Then initialize the voxel data in the array.
       The lookup tables for the opacity transfer function do not need to be initialized.

       Now call vpMinMaxOctreeThreshold once for each parameter to the opacity transfer function.
       The  parameter  number  is  the  same  number  as  the  parameter number you would pass to
       vpClassifierTable.  The range argument  specifies  a  "small"  range  of  values  for  the
       corresponding  parameter.   The  opacity of a voxel should not vary much for voxels within
       this range of parameter space.  Choosing a value which is  too  small  or  too  large  may
       result  in  a reduced performance benefit during rendering.  The function vpOctreeMask can
       be used to visualize the effectiveness of various parameter ranges.  Note  that  you  must
       choose the voxel field associated with each opacity transfer function parameter in advance
       of creating the octree (by calling vpSetClassiferTable), but the opacity transfer function
       itself  does  not  need to be known since the lookup tables do not need to be initialized.
       In the current implementation all of the parameters must be one or two-byte voxel  fields;
       four-byte fields are not allowed.

       Finally,  call vpCreateMinMaxOctree to actually compute the octree.  The arguments specify
       the largest and smallest node size.  These values can be used to trade off storage size of
       the octree for increased resolution.  The octree is stored in the rendering context and is
       used automatically in subsequent calls to vpClassifyVolume  and  vpRenderRawVolume.   Only
       one  octree  may  be  stored  in  a  context  at a time.  If an octree already exists when
       vpCreateMinMaxOctree is called then the old octree is destroyed.

       If the data in the voxel  array  changes  then  the  min-max  octree  must  be  explicitly
       recomputed  by calling vpCreateMinMaxOctree again before the next call to vpClassifyVolume
       or vpRenderRawVolume.

       vpDestroyMinMaxOctree destroys  the  current  min-max  octree  and  frees  the  associated
       storage.

STATE VARIABLES

       The  current  octree  parameters  can be retrieved with the following state variable codes
       (see  vpGeti(3)):  VP_CLASSIFY_FIELD_COUNT,  VP_CLASSIFY_FIELDS,   VP_MMOCTREE_THRESHOLDS,
       VP_MMOCTREE_SIZE.

ERRORS

       The  normal  return  value  for all three functions is VP_OK.  vpMinMaxOctreeThreshold can
       return the following error value:

       VPERROR_BAD_VALUE
              The parameter number is invalid.

       vpCreateMinMaxOctree can return the following error values:

       VPERROR_BAD_VALUE
              The node size arguments are not a power of two.

       VPERROR_BAD_VOXEL
              The voxel size or the voxel fields have not been specified or have been incorrectly
              specified,  or  the  number of parameters to the opacity transfer function has been
              incorrectly specified.

       VPERROR_BAD_VOLUME
              The volume array or volume dimensions have not been specified, or the size  of  the
              volume array does not match the volume dimensions.

       VPERROR_BAD_CLASSIFIER
              The  fields specified as parameters to the opacity transfer function are invalid or
              do not have valid sizes.

       VPERROR_LIMIT_EXCEEDED
              The volume is too large, so the maximum size  of  the  octree  has  been  exceeded.
              Change  the  constant  VP_MAX_OCTREE_LEVELS  in volpack.h and recompile the VolPack
              library.

SEE ALSO

       VolPack(3), vpCreateContext(3), vpClassifyVolume(3), vpOctreeMask(3), vpRenderRawVolume(3)