Computes signed distance values from an initial iso-surface and optionally performs velocty extension at the same time. This is done by means of a novel sparse and parallel fast sweeping algorithm based on a first order Goudonov's scheme.
More...
#include <FastSweeping.h>
|
| | 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...
|
| |
| 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) |
| | 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) |
| | Initializer used when dilating an exsiting signed distance field. More...
|
| |
| template<typename MaskTreeT > |
| bool | initMask (const SdfGridT &sdfGrid, const Grid< MaskTreeT > &mask, bool ignoreActiveTiles=false) |
| | Initializer used for the extamnsion of an exsiting 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 initializtion 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...
|
| |
| template<typename OpT > |
| bool | initExt (const SdfGridT &fogGrid, const OpT &op, const ExtValueT &background, SdfValueT isoValue, bool isInputSdf) |
| |
template<typename SdfGridT, typename ExtValueT = typename SdfGridT::ValueType>
class openvdb::v7_1::tools::FastSweeping< SdfGridT, ExtValueT >
Computes signed distance values from an initial iso-surface and optionally performs velocty extension at the same time. This is done by means of a novel sparse and parallel fast sweeping algorithm based on a first order Goudonov's scheme.
Solves: 
- Warning
- Note, it is important to call one of the initialization methods before called the sweep function. Failure to do so will throw a RuntimeError. Consider instead call one of the many higher-level free-standing functions defined above!
◆ FastSweeping() [1/2]
◆ ~FastSweeping()
◆ FastSweeping() [2/2]
Disallow copy construction.
◆ boundaryVoxelCount()
| size_t boundaryVoxelCount |
( |
| ) |
const |
|
inline |
Return the number of voxels that defined the boundary condition.
◆ clear()
Clears all the grids and counters so initializtion can be called again.
◆ extGrid()
| ExtGridT::Ptr extGrid |
( |
| ) |
|
|
inline |
Returns a shared pointer to the extension field computed by this class.
- Warning
- This shared pointer might point to NULL if the grid has not been initialize (by one of the init methods) or computed (by the sweep method).
◆ initDilate()
Initializer used when dilating an exsiting signed distance field.
- Returns
- True if the initialization succeeded.
- Parameters
-
| 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 |
This, or any of ther other initilization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
- Warning
- Note, if this method fails, i.e. returns false, a subsequent call to sweep will trow a RuntimeError. Instead call clear and try again.
◆ initExt() [1/2]
| bool initExt |
( |
const SdfGridT & |
fogGrid, |
|
|
const OpT & |
op, |
|
|
const ExtValueT & |
background, |
|
|
SdfValueT |
isoValue, |
|
|
bool |
isInputSdf |
|
) |
| |
◆ initExt() [2/2]
| bool initExt |
( |
const SdfGridT & |
sdfGrid, |
|
|
const ExtOpT & |
op, |
|
|
const ExtValueT & |
background, |
|
|
SdfValueT |
isoValue, |
|
|
bool |
isInputSdf |
|
) |
| |
Initializer used whenever velocity extension is performed in addition to the computation of signed distance fields.
- Returns
- True if the initialization succeeded.
- Parameters
-
| 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). |
This, or any of ther other initilization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
- Warning
- Note, if this method fails, i.e. returns false, a subsequent call to sweep will trow a RuntimeError. Instead call clear and try again.
◆ initMask()
| bool initMask |
( |
const SdfGridT & |
sdfGrid, |
|
|
const Grid< MaskTreeT > & |
mask, |
|
|
bool |
ignoreActiveTiles = false |
|
) |
| |
Initializer used for the extamnsion of an exsiting signed distance field into the active values of an input mask of arbitrary value type.
- Returns
- True if the initialization succeeded.
- Parameters
-
| sdfGrid | Input signed distance field to be extended into the mask. |
| mask | Mask used to idetify 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 initilization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
- Warning
- Note, if this method fails, i.e. returns false, a subsequent call to sweep will trow a RuntimeError. Instead call clear and try again.
◆ initSdf()
| 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.
- Returns
- True if the initialization succeeded.
- Parameters
-
| 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 initilization methods, should be called before any call to sweep(). Failure to do so will throw a RuntimeError.
- Warning
- Note, if this method fails, i.e. returns false, a subsequent call to sweep will trow a RuntimeError. Instead call clear and try again.
◆ isValid()
Return true if there are voxels and boundaries to solve for.
◆ operator=()
Disallow copy assignment.
◆ sdfGrid()
| SdfGridT::Ptr sdfGrid |
( |
| ) |
|
|
inline |
Returns a shared pointer to the signed distance field computed by this class.
- Warning
- This shared pointer might point to NULL if the grid has not been initialize (by one of the init methods) or computed (by the sweep method).
◆ sweep()
| void sweep |
( |
int |
nIter = 1, |
|
|
bool |
finalize = true |
|
) |
| |
Perform nIter iterations of the fast sweeping algorithm.
- Parameters
-
| 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! |
- Exceptions
-
◆ sweepingVoxelCount()
| size_t sweepingVoxelCount |
( |
| ) |
const |
|
inline |
Return the number of voxels that will be solved for.
The documentation for this class was generated from the following file: