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

  
 
  

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

NAME
     vpSetClassifierTable - specify an opacity transfer function

SYNOPSIS
     #include <volpack.h>

     vpResult
     vpSetClassifierTable(vpc, param_num, param_field, table, table_size)
	 vpContext *vpc;
	 int param_num, param_field;
	 float *table;
	 int table_size;

ARGUMENTS
     vpc    VolPack context from vpCreateContext.

     param_num
	    Parameter  number  identifying one parameter of the opacity transfer
	    function.

     param_field
	    Field number identifying a voxel field that contains the parameter.

     table  Lookup table that defines the mapping from the voxel field value  to
	    the opacity.

     table_size
	    Size of table in bytes.

DESCRIPTION
     vpSetClassifierTable  is used to specify lookup tables that define an opac-
     ity transfer function.  The opacity transfer function must be of the form:

	 opacity = f0(param0) * f1(param1) * ... * fN(paramN)

     where each of the factors is a function of one voxel field (see  below  for
     implementing  more  general  classification  models).  vpSetClassifierTable
     must be called once for each factor to specify a lookup table that  defines
     the  factor.  After the function has been specified, opacities are computed
     by calling one of the classification functions: vpClassifyScalars,  vpClas-
     sifyVolume,  or  vpClassifyScanline.   To classify a voxel, these functions
     use the values in the fields of the  voxel  as  indexes  into  the  opacity
     transfer  function tables, retrieve one value from each table, and multiply
     the values together to compute the opacity  for  the  voxel.   The  opacity
     should  be  a  number in the range 0.0-1.0, so normally each table contains
     numbers that are also in this range.

     The parameters of the opacity transfer function are numbered from zero, and
     the total number of parameters must be specified using  vpSetVoxelSize  be-
     fore calling vpSetClassifierTable.  The number of parameters is independent
     of  the  number of voxel fields: some fields may not be used as parameters,
     and one field could be used multiple times (although  this  is  inefficient
     since  all of the tables indexed by the same parameter could be merged into
     one table).

     Each table should be a 1D array of numbers with one entry for each possible
     value of the corresponding voxel field.  The voxel field  must  contain  an
     unsigned integer quantity.  Normally each table would be declared:

	 float table[MAX_FIELD_VALUE + 1];

     where  MAX_FIELD_VALUE  is the maximum possible value in the voxel field as
     specified with vpSetVoxelField.  The table may also  be  dynamically  allo-
     cated.   Note  that  VolPack will never free the table, even if the VolPack
     context is destroyed with vpDestroyContext, so the application is responsi-
     ble for freeing the memory when appropriate.  The values in the  table  may
     be initialized or modified at any time before or after calling vpSetClassi-
     fierTable,  but before calling one of the classification routines.  See the
     function vpRamp for a convenient way to initialize tables	with  piece-wise
     linear ramps.

     Classification  functions that are not expressible in the form above can be
     handled as follows.  First, write your own routine that computes the  opac-
     ity for each voxel.  Next, quantize the opacities using somewhere between 8
     and  16 bits per voxel, and store the quantized values in one field of each
     voxel.  Finally, define an opacity transfer function table  that  maps  the
     quantized	opacities  into a floating point number in the range 0.0-1.0 and
     use the table to define a single-parameter  opacity  transfer  function  by
     calling vpSetClassifierTable.

     The minimum opacity threshold should be set at the same time as the opacity
     transfer function.  See the VP_MIN_VOXEL_OPACITY argument to vpSetd.

STATE VARIABLES
     The  current  classification  function parameters can be retrieved with the
     following state variable codes  (see  vpGeti(3)):	VP_CLASSIFY_FIELD_COUNT,
     VP_CLASSIFY_FIELDS,       VP_CLASSIFY_TABLES,	VP_CLASSIFY_TABLE_SIZES,
     VP_MIN_VOXEL_OPACITY

ERRORS
     The normal return value is VP_OK.	The following error return value is pos-
     sible:

     VPERROR_BAD_VALUE
	    Either param_num or field_num is out of range.

SEE ALSO
     VolPack(3),    vpCreateContext(3),     vpClassifyScanline(3),     vpClassi-
     fyScalars(3), vpClassifyVolume(3), vpRamp(3)

VolPack 						 vpSetClassifierTable(3)

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

home | help