Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
vpCreateMinMaxOctree(3)     Library Functions Manual	 vpCreateMinMaxOctree(3)

NAME
     vpCreateMinMaxOctree, vpMinMaxOctreeThreshold, vpDestroyMinMaxOctree - cre-
     ate/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 func-
	    tion.

     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  du-
     plicate  the data in the voxel array.  The octree is not used with preclas-
     sified volumes (see vpClassifyVolume(3)).

     Before creating an octree, declare a 3D voxel array using	vpSetVolumeSize,
     vpSetVoxelSize,  vpSetVoxelField and vpSetRawVoxels, and initialize parame-
     ters 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 parame-
     ter number you would pass to vpClassifierTable.  The range argument  speci-
     fies  a "small" range of values for the corresponding parameter.  The opac-
     ity of a voxel should not vary much for voxels within this range of parame-
     ter 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 ar-
     guments  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 sub-
     sequent 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  ex-
     plicitly  recomputed  by calling vpCreateMinMaxOctree again before the next
     call to vpClassifyVolume or vpRenderRawVolume.

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

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

ERRORS
     The normal return value for all  three  functions	is  VP_OK.   vpMinMaxOc-
     treeThreshold 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 opac-
	    ity 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)

VolPack 						 vpCreateMinMaxOctree(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=volpack-MinMaxOctree&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help