OpenVDB  12.0.0
Classes | Public Types | Public Member Functions | List of all members
LevelSetTracker< GridT, InterruptT > Class Template Reference

Performs multi-threaded interface tracking of narrow band level sets. More...

#include <openvdb/tools/LevelSetTracker.h>

Inherited by LevelSetFilter< GridT, MaskT, InterruptT >.

Classes

struct  State
 Lightweight struct that stores the state of the LevelSetTracker. More...
 

Public Types

using TrimMode = lstrack::TrimMode
 
using GridType = GridT
 
using TreeType = typename GridT::TreeType
 
using LeafType = typename TreeType::LeafNodeType
 
using ValueType = typename TreeType::ValueType
 
using LeafManagerType = typename tree::LeafManager< TreeType >
 
using LeafRange = typename LeafManagerType::LeafRange
 
using BufferType = typename LeafManagerType::BufferType
 
using MaskTreeType = typename TreeType::template ValueConverter< ValueMask >::Type
 

Public Member Functions

 LevelSetTracker (GridT &grid, InterruptT *interrupt=nullptr)
 Main constructor. More...
 
virtual ~LevelSetTracker ()
 
template<typename MaskType >
void normalize (const MaskType *mask)
 Iterative normalization, i.e. solving the Eikonal equation. More...
 
void normalize ()
 Iterative normalization, i.e. solving the Eikonal equation. More...
 
void track ()
 Track the level set interface, i.e. rebuild and normalize the narrow band of the level set. More...
 
void prune ()
 Set voxels that are outside the narrow band to the background value (if trimming is enabled) and prune the grid. More...
 
void dilate (int iterations=1)
 Fast but approximate dilation of the narrow band - one layer at a time. Normally we recommend using the resize method below which internally calls dilate (or erode) with the correct number of iterations to achieve the desired half voxel width of the narrow band (3 is recommended for most level set applications). More...
 
void erode (int iterations=1)
 Erodes the width of the narrow-band and update the background values. More...
 
bool resize (Index halfWidth=static_cast< Index >(LEVEL_SET_HALF_WIDTH))
 Resize the width of the narrow band, i.e. perform dilation and renormalization or erosion as required. More...
 
ValueType getHalfWidth () const
 Return the half width of the narrow band in floating-point voxel units. More...
 
State getState () const
 Return the state of the tracker (see struct defined above) More...
 
void setState (const State &s)
 Set the state of the tracker (see struct defined above) More...
 
math::BiasedGradientScheme getSpatialScheme () const
 
void setSpatialScheme (math::BiasedGradientScheme s)
 Set the spatial finite difference scheme. More...
 
math::TemporalIntegrationScheme getTemporalScheme () const
 
void setTemporalScheme (math::TemporalIntegrationScheme s)
 Set the spatial finite difference scheme. More...
 
int getNormCount () const
 
void setNormCount (int n)
 Set the number of normalizations performed per track or normalize call. More...
 
int getGrainSize () const
 
void setGrainSize (int grainsize)
 Set the grain-size used for multi-threading. More...
 
TrimMode trimming () const
 Return the trimming mode for voxels outside the narrow band. More...
 
void setTrimming (TrimMode mode)
 Specify whether to trim voxels outside the narrow band prior to pruning. More...
 
ValueType voxelSize () const
 
void startInterrupter (const char *msg)
 
void endInterrupter ()
 
bool checkInterrupter ()
 
const GridTypegrid () const
 
LeafManagerTypeleafs ()
 
const LeafManagerTypeleafs () const
 
template<typename MaskT >
void normalize (const MaskT *mask)
 

Detailed Description

template<typename GridT, typename InterruptT = util::NullInterrupter>
class openvdb::v12_0::tools::LevelSetTracker< GridT, InterruptT >

Performs multi-threaded interface tracking of narrow band level sets.

Member Typedef Documentation

using BufferType = typename LeafManagerType::BufferType
using GridType = GridT
using LeafRange = typename LeafManagerType::LeafRange
using LeafType = typename TreeType::LeafNodeType
using MaskTreeType = typename TreeType::template ValueConverter<ValueMask>::Type
using TreeType = typename GridT::TreeType
using ValueType = typename TreeType::ValueType

Constructor & Destructor Documentation

LevelSetTracker ( GridT &  grid,
InterruptT *  interrupt = nullptr 
)

Main constructor.

Exceptions
RuntimeErrorif the grid is not a level set
virtual ~LevelSetTracker ( )
inlinevirtual

Member Function Documentation

bool checkInterrupter ( )
inline
Returns
false if the process was interrupted
void dilate ( int  iterations = 1)

Fast but approximate dilation of the narrow band - one layer at a time. Normally we recommend using the resize method below which internally calls dilate (or erode) with the correct number of iterations to achieve the desired half voxel width of the narrow band (3 is recommended for most level set applications).

Note
Since many level set applications perform interface-tracking, which in turn rebuilds the narrow-band accurately, this dilate method can often be used with a single iterations of low-order re-normalization. This effectively allows very narrow bands to be created from points or polygons (e.g. with a half voxel width of 1), followed by a fast but approximate dilation (typically with a half voxel width of 3). This can be significantly faster than generating the final width of the narrow band from points or polygons.
void endInterrupter ( )
inline
void erode ( int  iterations = 1)

Erodes the width of the narrow-band and update the background values.

Exceptions
ValueErrorif iterations is larger than the current half-width.
int getGrainSize ( ) const
inline
Returns
the grain-size used for multi-threading
ValueType getHalfWidth ( ) const
inline

Return the half width of the narrow band in floating-point voxel units.

int getNormCount ( ) const
inline
Returns
The number of normalizations performed per track or normalize call.
math::BiasedGradientScheme getSpatialScheme ( ) const
inline
Returns
the spatial finite difference scheme
State getState ( ) const
inline

Return the state of the tracker (see struct defined above)

math::TemporalIntegrationScheme getTemporalScheme ( ) const
inline
Returns
the temporal integration scheme
const GridType& grid ( ) const
inline
LeafManagerType& leafs ( )
inline
const LeafManagerType& leafs ( ) const
inline
void normalize ( const MaskType *  mask)

Iterative normalization, i.e. solving the Eikonal equation.

Note
The mask it optional and by default it is ignored.
void normalize ( )
inline

Iterative normalization, i.e. solving the Eikonal equation.

void normalize ( const MaskT *  mask)
void prune ( )

Set voxels that are outside the narrow band to the background value (if trimming is enabled) and prune the grid.

Pruning is done automatically as a step in tracking.

See also
setTrimming, trimming
bool resize ( Index  halfWidth = static_cast<Index>(LEVEL_SET_HALF_WIDTH))

Resize the width of the narrow band, i.e. perform dilation and renormalization or erosion as required.

void setGrainSize ( int  grainsize)
inline

Set the grain-size used for multi-threading.

Note
A grainsize of 0 or less disables multi-threading!
void setNormCount ( int  n)
inline

Set the number of normalizations performed per track or normalize call.

void setSpatialScheme ( math::BiasedGradientScheme  s)
inline

Set the spatial finite difference scheme.

void setState ( const State s)
inline

Set the state of the tracker (see struct defined above)

void setTemporalScheme ( math::TemporalIntegrationScheme  s)
inline

Set the spatial finite difference scheme.

void setTrimming ( TrimMode  mode)
inline

Specify whether to trim voxels outside the narrow band prior to pruning.

See also
trimming, prune
void startInterrupter ( const char *  msg)
inline
void track ( )

Track the level set interface, i.e. rebuild and normalize the narrow band of the level set.

TrimMode trimming ( ) const
inline

Return the trimming mode for voxels outside the narrow band.

Trimming is enabled by default and is applied automatically prior to pruning.

See also
setTrimming, prune
ValueType voxelSize ( ) const
inline