vpOctreeMask - compute a mask representing one level of a min-max octree
vpOctreeMask(vpc, array, array_size,
- vpContext *vpc;
- unsigned char *array;
- int array_size;
- int max_level;
- VolPack context from vpCreateContext.
- A 3D array for storing the mask.
- Size of array in bytes.
- Maximum octree level to descend to.
is used for performance debugging when rendering volumes
with a min-max octree. During rendering the min-max octree is used to help
determine which voxels are transparent. The time required to make this
determination can be minimized by an appropriate choice for the range
parameters for vpMinMaxOctreeThreshold
and the node size parameters for
provides information that can
help to determine whether a set of parameters works effectively or not.
The output of the routine is stored in a 3D array of bytes that has the same
dimensions as the volume (although each element is only one byte, regardless
of the size of a voxel). For each voxel in the volume the corresponding byte
in the output array is set by vpOctreeMask
to one of three values: 0 if
the voxel is definitely transparent, 255 if the voxel may be non-transparent,
or 128 if the voxel may be non-transparent and there is more detailed
information available at unvisited levels of the octree. The max_level
argument specifies the deepest level of the octree to be visited (the root
level is level 0).
A suggested way to use this routine is to compute an octree using a particular
set of parameters and then call vpOctreeMask
with several different
values for max_level.
For each resulting mask array, look at slices (or
create a volume rendering!) and see how accurately the mask captures the
general shape of the data in the original volume. The best set of parameters
results in a mask that captures the general shape without an excessively small
value for the minimum octree node size (which would result in a very large
data structure and a lot of traversal overhead).
The normal return value is VP_OK. The following error return values are
- There is no octree or the output array has the wrong size.
- The voxel size or the voxel fields have not been specified or have been
- The opacity transfer function tables have invalid sizes or are associated
with invalid voxel fields or have been incorrectly specified.
VolPack(3), vpCreateContext(3), vpCreateMinMaxOctree(3)