ImageGear for C and C++ on Windows v19.10 - Updated
AT_VECT_3DIV_OPTIONS
API Reference Guide > Vector Component API Reference > Vector Component Structures Reference > AT_VECT_3DIV_OPTIONS

This structure serves as a parameter for function IG_vect_3DIV_isosurface(), and contains the values for all the options for isosurface algorithm.

Declaration:

 
Copy Code
typedef struct tagAT_VECT_3DIV_OPTIONS
{
        AT_DOUBLE dIsoValue;
        AT_INT iLowExcluRange;
        AT_INT iHighExcluRange;
        AT_BOOL bDoNorms;
        AT_BOOL bFlipNorms;
        AT_BOOL bAddCoverSlices;
        AT_BOOL bLimitDepth;
        AT_INT iSurfaceDepth;
        AT_BOOL bDecimateY;
        AT_INT iYDecimFactor;
        AT_BOOL bDecimateZ;
        AT_INT iZDecimFactor;
} AT_VECT_3DIV_OPTIONS;

Members:

Name Type Description
dIsoValue AT_DOUBLE Intensity value of pixels on the isosurface.
iLowExcluRange AT_INT Lower limit of exclusion region.
iHighExcluRange AT_INT Upper limit of exclusion region.
bDoNorms AT_BOOL Flag to indicate whether to calculate the normals along with vertices.
bFlipNorms AT_BOOL Flag to indicate whether to flip the normals after calculation.
bAddCoverSlices AT_BOOL Flag to indicate whether to add cover-up slices at the ends.
bLimitDepth AT_BOOL Flag to indicate whether to limit the surface depth.
iSurfaceDepth AT_INT Depth of the surface. In effect only if bLimitDepth is TRUE.
bDecimateY AT_BOOL Flag to indicate whether to decimate Y direction when considering surface depth. In effect only if bLimitDepth is TRUE.
iYDecimFactor AT_INT Decimation factor in Y direction. In effect only if both bLimitDepth and bDecimateY are TRUE.
bDecimateZ AT_BOOL Flag to indicate whether to decimate Z direction when considering the surface depth. In effect only if bLimitDepth is TRUE.
iZDecimFactor AT_INT Decimation factor in Z direction, in effect only if both bLimitDepth and bDecimateZ are TRUE.

Remarks:

The parameter bAddCoverSlices indicates whether "cover-up" slices should be added at both ends. If TRUE, the first and last slices will be placed at both ends, with pixels outside of the 3D object set to transparent.

When the isosurface is generated, a lot of triangles are also generated inside the 3D object, although sometimes we are only interested in the outside surface. The flag bLimitDepth allows the surface to be limited to only a certain depth, thus any triangles further inside will be discarded. This greatly improves the rendering performance, for example, when rotating the 3D object. On the flip side, if surface depth limit is set too low, it is possible that "artificial holes" will be created on the surface because of excessive discarding of triangles.

Parameters bDecimateY, iYDecimFactor, bDecimateZ and iZDecimFactor further refine the process of limiting surface depth. The higher the decimation factors, the better the surface looks, but that also means the greater number of triangles. So a balance point is required. For a brain example we looked at, values [10, 5, 5] for [iSurfaceDepth, iYDecimFactor, iZDecimFactor] reduced the number of triangles by about a half while still producing a reasonable 3D surface.

Parameters iLowExcluRange and iHighExcluRange are designed to exclude certain pixels whose intensities fall within the specified range. If this feature is not desired, the user can simply set both of those two parameters to 0.