| OpenVDB
    9.0.1
    | 
Computes signed distance values from an initial iso-surface and optionally performs velocity extension at the same time. This is done by means of a novel sparse and parallel fast sweeping algorithm based on a first order Godunov's scheme. More...
#include <openvdb/tools/FastSweeping.h>
| Classes | |
| struct | DilateKernel | 
| Private class of FastSweeping to perform multi-threaded initialization.  More... | |
| struct | InitSdf | 
| struct | MinMaxKernel | 
| struct | SweepingKernel | 
| Private class of FastSweeping to perform concurrent fast sweeping in two directions.  More... | |
| Public Member Functions | |
| FastSweeping () | |
| Constructor.  More... | |
| ~FastSweeping () | |
| Destructor.  More... | |
| FastSweeping (const FastSweeping &)=delete | |
| Disallow copy construction.  More... | |
| FastSweeping & | operator= (const FastSweeping &)=delete | 
| Disallow copy assignment.  More... | |
| SdfGridT::Ptr | sdfGrid () | 
| Returns a shared pointer to the signed distance field computed by this class.  More... | |
| ExtGridT::Ptr | extGrid () | 
| Returns a shared pointer to the extension field computed by this class.  More... | |
| ExtGridT::Ptr | extGridInput () | 
| Returns a shared pointer to the extension grid input. This is non-NULL if this class is used to extend a field with a non-default sweep direction.  More... | |
| bool | initSdf (const SdfGridT &sdfGrid, SdfValueT isoValue, bool isInputSdf) | 
| Initializer for input grids that are either a signed distance field or a scalar fog volume.  More... | |
| template<typename ExtOpT > | |
| bool | initExt (const SdfGridT &sdfGrid, const ExtOpT &op, const ExtValueT &background, SdfValueT isoValue, bool isInputSdf, FastSweepingDomain mode=FastSweepingDomain::SWEEP_ALL, const typename ExtGridT::ConstPtr extGrid=nullptr) | 
| Initializer used whenever velocity extension is performed in addition to the computation of signed distance fields.  More... | |
| bool | initDilate (const SdfGridT &sdfGrid, int dilation, NearestNeighbors nn=NN_FACE, FastSweepingDomain mode=FastSweepingDomain::SWEEP_ALL) | 
| Initializer used when dilating an existing signed distance field.  More... | |
| template<typename MaskTreeT > | |
| bool | initMask (const SdfGridT &sdfGrid, const Grid< MaskTreeT > &mask, bool ignoreActiveTiles=false) | 
| Initializer used for the extension of an existing signed distance field into the active values of an input mask of arbitrary value type.  More... | |
| void | sweep (int nIter=1, bool finalize=true) | 
| Perform nIter iterations of the fast sweeping algorithm.  More... | |
| void | clear () | 
| Clears all the grids and counters so initialization can be called again.  More... | |
| size_t | sweepingVoxelCount () const | 
| Return the number of voxels that will be solved for.  More... | |
| size_t | boundaryVoxelCount () const | 
| Return the number of voxels that defined the boundary condition.  More... | |
| bool | isValid () const | 
| Return true if there are voxels and boundaries to solve for.  More... | |
| FastSweepingDomain | sweepDirection () const | 
| Return whether the sweep update is in all direction (SWEEP_ALL), greater than isovalue (SWEEP_GREATER_THAN_ISOVALUE), or less than isovalue (SWEEP_LESS_THAN_ISOVALUE).  More... | |
| bool | isInputSdf () | 
| Return whether the fast-sweeping input grid a signed distance function or not (fog).  More... | |
| template<typename OpT > | |
| bool | initExt (const SdfGridT &fogGrid, const OpT &op, const ExtValueT &background, SdfValueT isoValue, bool isInputSdf, FastSweepingDomain mode, const typename ExtGridT::ConstPtr extGrid) | 
Computes signed distance values from an initial iso-surface and optionally performs velocity extension at the same time. This is done by means of a novel sparse and parallel fast sweeping algorithm based on a first order Godunov's scheme.
Solves: 
| FastSweeping | ( | ) | 
Constructor.
| 
 | inline | 
Destructor.
| 
 | delete | 
Disallow copy construction.
| 
 | inline | 
Return the number of voxels that defined the boundary condition.
| void clear | ( | ) | 
Clears all the grids and counters so initialization can be called again.
| 
 | inline | 
Returns a shared pointer to the extension field computed by this class.
| 
 | inline | 
Returns a shared pointer to the extension grid input. This is non-NULL if this class is used to extend a field with a non-default sweep direction.
| bool initDilate | ( | const SdfGridT & | sdfGrid, | 
| int | dilation, | ||
| NearestNeighbors | nn = NN_FACE, | ||
| FastSweepingDomain | mode = FastSweepingDomain::SWEEP_ALL | ||
| ) | 
Initializer used when dilating an existing signed distance field.
| sdfGrid | Input signed distance field to to be dilated. | 
| dilation | Numer of voxels that the input SDF will be dilated. | 
| nn | Stencil-pattern used for dilation | 
| mode | Determines the direction of the dilation. SWEEP_ALL will dilate in both sides of the signed distance function, SWEEP_GREATER_THAN_ISOVALUE will dilate in the positive side of the iso-surface, SWEEP_LESS_THAN_ISOVALUE will dilate in the negative side of the iso-surface. | 
This, or any of ther other initialization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
| bool initExt | ( | const SdfGridT & | sdfGrid, | 
| const ExtOpT & | op, | ||
| const ExtValueT & | background, | ||
| SdfValueT | isoValue, | ||
| bool | isInputSdf, | ||
| FastSweepingDomain | mode = FastSweepingDomain::SWEEP_ALL, | ||
| const typename ExtGridT::ConstPtr | extGrid = nullptr | ||
| ) | 
Initializer used whenever velocity extension is performed in addition to the computation of signed distance fields.
| sdfGrid | Input scalar grid that represents an existing signed distance field or a fog volume (signified by isInputSdf). | 
| op | Functor with signature [](const Vec3R &xyz)->ExtValueT that defines the Dirichlet boundary condition, on the iso-surface, of the field to be extended. Strictly the return type of this functor is only required to be convertible to ExtValueT! | 
| background | Background value of return grid with the extension field. | 
| isoValue | Iso-value to be used for the boundary condition of the fast sweeping algorithm (typically 0 for sdfs and a positive value for fog volumes). | 
| isInputSdf | Used to determine if sdfGrid is a sigend distance field (true) or a scalar fog volume (false). | 
| mode | Determines the mode of updating the extension field. SWEEP_ALL will update all voxels of the extension field affected by the fast sweeping algorithm. SWEEP_GREATER_THAN_ISOVALUE will update all voxels corresponding to fog values that are greater than a given isovalue. SWEEP_LESS_THAN_ISOVALUE will update all voxels corresponding to fog values that are less than a given isovalue. If a mode other than SWEEP_ALL is chosen, a user needs to supply extGrid. | 
| extGrid | Optional parameter required to supply a default value for the extension field when SWEEP_GREATER_THAN_ISOVALUE or SWEEP_LESS_THAN_ISOVALUE mode is picked for mode. When SWEEP_GREATER_THAN_ISOVALUE is supplied as an argument for mode, the extension field voxel will default to the value of the extGrid in that position if it corresponds to a level-set value that is less than the isovalue. Otherwise, the extension field voxel value will be computed by the Fast Sweeping algorithm. The opposite convention is implemented when SWEEP_LESS_THAN_ISOVALUE is supplied as an argument for mode. | 
This, or any of ther other initialization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
| bool initExt | ( | const SdfGridT & | fogGrid, | 
| const OpT & | op, | ||
| const ExtValueT & | background, | ||
| SdfValueT | isoValue, | ||
| bool | isInputSdf, | ||
| FastSweepingDomain | mode, | ||
| const typename ExtGridT::ConstPtr | extGrid | ||
| ) | 
| bool initMask | ( | const SdfGridT & | sdfGrid, | 
| const Grid< MaskTreeT > & | mask, | ||
| bool | ignoreActiveTiles = false | ||
| ) | 
Initializer used for the extension of an existing signed distance field into the active values of an input mask of arbitrary value type.
| sdfGrid | Input signed distance field to be extended into the mask. | 
| mask | Mask used to identify the topology of the output SDF. Note this mask is assume to overlap with the sdfGrid. | 
| ignoreActiveTiles | If false, active tiles in the mask are treated as active voxels. Else they are ignored. | 
This, or any of ther other initialization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
| bool initSdf | ( | const SdfGridT & | sdfGrid, | 
| SdfValueT | isoValue, | ||
| bool | isInputSdf | ||
| ) | 
Initializer for input grids that are either a signed distance field or a scalar fog volume.
| sdfGrid | Input scalar grid that represents an existing signed distance field or a fog volume (signified by isInputSdf). | 
| isoValue | Iso-value to be used to define the Dirichlet boundary condition of the fast sweeping algorithm (typically 0 for sdfs and a positive value for fog volumes). | 
| isInputSdf | Used to determine if sdfGrid is a sigend distance field (true) or a scalar fog volume (false). | 
This, or any of ther other initialization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
| 
 | inline | 
Return whether the fast-sweeping input grid a signed distance function or not (fog).
| 
 | inline | 
Return true if there are voxels and boundaries to solve for.
| 
 | delete | 
Disallow copy assignment.
| 
 | inline | 
Returns a shared pointer to the signed distance field computed by this class.
| void sweep | ( | int | nIter = 1, | 
| bool | finalize = true | ||
| ) | 
Perform nIter iterations of the fast sweeping algorithm.
| nIter | Number of iterations of the fast sweeping algorithm. Each iteration performs 2^3 = 8 individual sweeps. | 
| finalize | If true the (possibly asymmetric) inside and outside values of the resulting signed distance field are properly set. Unless you're an expert this should remain true! | 
| RuntimeError | if sweepingVoxelCount() or boundaryVoxelCount() return zero. This might happen if none of the initialization methods above were called or if that initialization failed. | 
| 
 | inline | 
Return whether the sweep update is in all direction (SWEEP_ALL), greater than isovalue (SWEEP_GREATER_THAN_ISOVALUE), or less than isovalue (SWEEP_LESS_THAN_ISOVALUE).
| 
 | inline | 
Return the number of voxels that will be solved for.
 1.8.11
 1.8.11