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::v8_0::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: