HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT > Class Template Reference

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

#include <LevelSetTracker.h>

+ Inheritance diagram for openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >:

Classes

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

Public Types

typedef GridT GridType
 
typedef GridT::TreeType TreeType
 
typedef TreeType::LeafNodeType LeafType
 
typedef TreeType::ValueType ValueType
 
typedef tree::LeafManager
< TreeType
LeafManagerType
 
typedef LeafManagerType::LeafRange LeafRange
 
typedef LeafManagerType::BufferType BufferType
 
typedef TreeType::template
ValueConverter< ValueMask >
::Type 
MaskTreeType
 

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 ()
 Remove voxels that are outside the narrow band. (substep of track) 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 recomended 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 scheme)
 Set the spatial finite difference scheme. More...
 
math::TemporalIntegrationScheme getTemporalScheme () const
 
void setTemporalScheme (math::TemporalIntegrationScheme scheme)
 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...
 
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::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >

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

Definition at line 67 of file LevelSetTracker.h.

Member Typedef Documentation

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef LeafManagerType::BufferType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::BufferType

Definition at line 76 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef GridT openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::GridType

Definition at line 70 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef tree::LeafManager<TreeType> openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::LeafManagerType

Definition at line 74 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef LeafManagerType::LeafRange openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::LeafRange

Definition at line 75 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef TreeType::LeafNodeType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::LeafType

Definition at line 72 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef TreeType::template ValueConverter<ValueMask>::Type openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::MaskTreeType

Definition at line 77 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef GridT::TreeType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::TreeType

Definition at line 71 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
typedef TreeType::ValueType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::ValueType

Definition at line 73 of file LevelSetTracker.h.

Constructor & Destructor Documentation

template<typename GridT , typename InterruptT >
openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::LevelSetTracker ( GridT &  grid,
InterruptT *  interrupt = nullptr 
)

Main constructor.

Exceptions
RuntimeErrorif the grid is not a level set

Definition at line 255 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
virtual openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::~LevelSetTracker ( )
inlinevirtual

Definition at line 97 of file LevelSetTracker.h.

Member Function Documentation

template<typename GridT , typename InterruptT >
bool openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::checkInterrupter ( )
inline
Returns
false if the process was interrupted

Definition at line 375 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::dilate ( int  iterations = 1)
inline

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 recomended 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.

Definition at line 311 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::endInterrupter ( )
inline

Definition at line 367 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::erode ( int  iterations = 1)
inline

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

Exceptions
ValueErrorif iterations is larger than the current half-width.

Definition at line 333 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
int openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getGrainSize ( ) const
inline
Returns
the grain-size used for multi-threading

Definition at line 169 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
ValueType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getHalfWidth ( ) const
inline

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

Definition at line 140 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
int openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getNormCount ( ) const
inline
Returns
The number of normalizations performed per track or normalize call.

Definition at line 162 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
math::BiasedGradientScheme openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getSpatialScheme ( ) const
inline
Returns
the spatial finite difference scheme

Definition at line 149 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
State openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getState ( ) const
inline

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

Definition at line 143 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
math::TemporalIntegrationScheme openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::getTemporalScheme ( ) const
inline
Returns
the temporal integration scheme

Definition at line 155 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
const GridType& openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::grid ( ) const
inline

Definition at line 184 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
LeafManagerType& openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::leafs ( )
inline

Definition at line 186 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
const LeafManagerType& openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::leafs ( ) const
inline

Definition at line 188 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
template<typename MaskType >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::normalize ( const MaskType *  mask)

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

Note
The mask it optional and by default it is ignored.
template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::normalize ( )
inline

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

Definition at line 105 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
template<typename MaskT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::normalize ( const MaskT *  mask)
inline

Definition at line 388 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::prune ( )
inline

Remove voxels that are outside the narrow band. (substep of track)

Definition at line 277 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
bool openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::resize ( Index  halfWidth = static_cast<Index>(LEVEL_SET_HALF_WIDTH))
inline

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

Definition at line 344 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::setGrainSize ( int  grainsize)
inline

Set the grain-size used for multi-threading.

Note
A grainsize of 0 or less disables multi-threading!

Definition at line 173 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::setNormCount ( int  n)
inline

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

Definition at line 166 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::setSpatialScheme ( math::BiasedGradientScheme  scheme)
inline

Set the spatial finite difference scheme.

Definition at line 152 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::setState ( const State s)
inline

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

Definition at line 146 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::setTemporalScheme ( math::TemporalIntegrationScheme  scheme)
inline

Set the spatial finite difference scheme.

Definition at line 158 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::startInterrupter ( const char *  msg)
inline

Definition at line 359 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::track ( )
inline

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

Definition at line 296 of file LevelSetTracker.h.

template<typename GridT , typename InterruptT = util::NullInterrupter>
ValueType openvdb::OPENVDB_VERSION_NAME::tools::LevelSetTracker< GridT, InterruptT >::voxelSize ( ) const
inline

Definition at line 175 of file LevelSetTracker.h.


The documentation for this class was generated from the following file: