source files: xvol.[ch]
(XVOL-INSERT-ISOSURFACE :THING <thing> :VOXELS <grl:voxels> [ :ISOLEVEL <float> ] [ :MAX-FACETS <fix> ] [ :MIN-I <fix> ] [ :MAX-I <fix> ] [ :MIN-J <fix> ] [ :MAX-J <fix> ] [ :MIN-K <fix> ] [ :MAX-K <fix> ] )
Extract an isosurface from a voxel dataset, canonically containing a 3-D MRI image.
The intensity threshold used for the isosurface is controlled by the :ISOLEVEL argument. (The default setting is 30.)
When :MAX-FACETS is provided, the function will ask for user confirmation before inserting more than that number of facets into `thing.' This allows the user to intervene in cases when a poorly-chosen isosurface threshold could otherwise lead to an unreasonably large number of facets.
:MIN/MAX-I/J/K specify the subvolume of the voxel array on which the isosurface should be computed. These values should be integers, ranging from 0 to the dimensions of the voxel array. (These were initially added for debugging purposes, but have been used on at least one occasion to create isosurface "cutaways", complete with lids.)
NOTE: One `feature' of this function is that it may create degenerate facets, in which two or even all three vertices are identical. If you plan to do any neighbor analysis of the resulting mesh, you'll probably want to sweep away such facets. (The function XSR-REMOVE-DEGENERATE-FACETS was designed for just this purpose.)