Private class of FastSweeping to perform concurrent fast sweeping in two directions. More...
#include <openvdb/tools/FastSweeping.h>
| Classes | |
| struct | NN | 
| Public Member Functions | |
| SweepingKernel (FastSweeping &parent) | |
| SweepingKernel (const SweepingKernel &)=delete | |
| SweepingKernel & | operator= (const SweepingKernel &)=delete | 
| template<typename HashOp> | |
| void | computeVoxelSlices (HashOp hash) | 
| Main method that performs concurrent bi-directional sweeps. | |
| template<typename ExtT = ExtValueT, typename SdfT = SdfValueT, typename std::enable_if< std::is_same< ExtT, int >::value, int >::type = 0> | |
| ExtT | twoNghbr (const NN &d1, const NN &d2, const SdfT &, const ExtT &v1, const ExtT &v2) const | 
| template<typename ExtT = ExtValueT, typename SdfT = SdfValueT, typename std::enable_if<!std::is_same< ExtT, int >::value, int >::type = 0> | |
| ExtT | twoNghbr (const NN &d1, const NN &d2, const SdfT &w, const ExtT &v1, const ExtT &v2) const | 
| template<typename ExtT = ExtValueT, typename SdfT = SdfValueT, typename std::enable_if< std::is_same< ExtT, int >::value, int >::type = 0> | |
| ExtT | threeNghbr (const NN &d1, const NN &d2, const NN &d3, const SdfT &, const ExtT &v1, const ExtT &v2, const ExtT &v3) const | 
| template<typename ExtT = ExtValueT, typename SdfT = SdfValueT, typename std::enable_if<!std::is_same< ExtT, int >::value, int >::type = 0> | |
| ExtT | threeNghbr (const NN &d1, const NN &d2, const NN &d3, const SdfT &w, const ExtT &v1, const ExtT &v2, const ExtT &v3) const | 
| void | sweep () | 
| bool | initExt (const SdfGridT &fogGrid, const OpT &op, const ExtValueT &background, SdfValueT isoValue, bool isInputSdf, FastSweepingDomain mode, const typename ExtGridT::ConstPtr extGrid) | 
| FastSweeping () | |
| Constructor. | |
| FastSweeping (const FastSweeping &)=delete | |
| Disallow copy construction. | |
| ~FastSweeping () | |
| Destructor. | |
| FastSweeping & | operator= (const FastSweeping &)=delete | 
| Disallow copy assignment. | |
| SdfGridT::Ptr | sdfGrid () | 
| Returns a shared pointer to the signed distance field computed by this class. | |
| ExtGridT::Ptr | extGrid () | 
| Returns a shared pointer to the extension field computed by this class. | |
| 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. | |
| 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. | |
| 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. | |
| bool | initExt (const SdfGridT &fogGrid, const OpT &op, const ExtValueT &background, SdfValueT isoValue, bool isInputSdf, FastSweepingDomain mode, const typename ExtGridT::ConstPtr extGrid) | 
| 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. | |
| 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. | |
| void | sweep (int nIter=1, bool finalize=true) | 
| Perform nIter iterations of the fast sweeping algorithm. | |
| void | clear () | 
| Clears all the grids and counters so initialization can be called again. | |
| size_t | sweepingVoxelCount () const | 
| Return the number of voxels that will be solved for. | |
| size_t | boundaryVoxelCount () const | 
| Return the number of voxels that defined the boundary condition. | |
| bool | isValid () const | 
| Return true if there are voxels and boundaries to solve for. | |
| 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). | |
| bool | isInputSdf () | 
| Return whether the fast-sweeping input grid a signed distance function or not (fog). | |
Private class of FastSweeping to perform concurrent fast sweeping in two directions.
| 
 | inline | 
| 
 | delete | 
| 
 | inline | 
Destructor.
| 
 | 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 | 
Main method that performs concurrent bi-directional sweeps.
| 
 | 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.
| FastSweeping | ( | ) | 
Constructor.
| 
 | delete | 
Disallow copy construction.
| 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 & | fogGrid, | 
| const OpT & | op, | ||
| const ExtValueT & | background, | ||
| SdfValueT | isoValue, | ||
| bool | isInputSdf, | ||
| FastSweepingDomain | mode, | ||
| const typename ExtGridT::ConstPtr | extGrid ) | 
| bool initExt | ( | const SdfGridT & | fogGrid, | 
| const OpT & | op, | ||
| const ExtValueT & | background, | ||
| SdfValueT | isoValue, | ||
| bool | isInputSdf, | ||
| FastSweepingDomain | mode, | ||
| const typename ExtGridT::ConstPtr | extGrid ) | 
| 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 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.
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.
| 
 | delete | 
| 
 | inline | 
Returns a shared pointer to the signed distance field computed by this class.
| 
 | inline | 
| 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.
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline |