NAME¶
vpClassifyScalars - create a preclassified volume from scalar data
SYNOPSIS¶
#include <volpack.h>
vpResult
vpClassifyScalars(vpc,
scalar_data, length, scalar_field, gradient_field,
norm_field)
-
- vpContext *vpc;
-
- unsigned char *scalars;
-
- int size;
-
- int scalar_field, gradient_field, norm_field;
ARGUMENTS¶
- vpc
- VolPack context from vpCreateContext.
- scalar_data
- A 3D array containing one 8-bit scalar value for each voxel
in the volume.
- length
- Size of scalar_data in bytes.
- scalar_field
- Field number identifying a voxel field for storing the
scalar value.
- gradient_field
- Field number identifying a voxel field for storing the
gradient magnitude of the scalar value.
- norm_field
- Field number identifying a voxel field for storing the
surface normal vector for the voxel.
DESCRIPTION¶
vpClassifyScalars combines the functionality of
vpVolumeNormals
and
vpClassifyVolume to produce a preclassified volume directly from a
3D array of scalar values without creating a 3D voxel array. This routine is
useful for preparing large data sets for rendering with a fixed classification
function, especially if the 3D voxel array would be too large to fit in main
memory. The primary limitation is that the only fields each voxel may contain
are the fields produced by
vpVolumeNormals: an 8-bit scalar value, and
8-bit gradient and/or a 16-bit surface normal vector. See also
vpClassifyScanline for processing one scanline of a scalar array at a
time.
To use the function, first define the volume size, voxel size, and voxel fields
as you would before calling
vpVolumeNormals. However, there is no need
to call
vpSetRawVoxels. Also define the opacity transfer function (see
vpSetClassifierTable(3)). Then call
vpClassifyScalars with the same
arguments you would use for
vpVolumeNormals; see vpVolumeNormals(3) for
more details. The result is a preclassified volume, as described in
vpClassifyVolume(3). If a voxel array has been declared it is not used or
modified.
Any existing preclassified volume data is destroyed.
STATE VARIABLES¶
Information about the current preclassified volume can be retrieved with the
following state variable codes (see vpGeti(3)): VP_VIEW_X_SIZE,
VP_VIEW_Y_SIZE, VP_VIEW_Z_SIZE, VP_VIEW_X_AXIS, VP_VIEW_Y_AXIS,
VP_VIEW_Z_AXIS.
ERRORS¶
The normal return value is VP_OK. The following error return values are
possible:
- VPERROR_BAD_VOXEL
- The voxel size or the voxel fields have not been specified
or have been incorrectly specified.
- VPERROR_BAD_CLASSIFIER
- The opacity transfer function tables have invalid sizes or
are associated with invalid voxel fields or have been incorrectly
specified.
SEE ALSO¶
VolPack(3), vpCreateContext(3), vpVolumeNormals(3), vpSetClassifierTable(3),
vpClassifyVolume(3), vpClassifyScanline(3)