OpenVDB 11.0.0

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
LevelSetMeasure< GridT, InterruptT > Class Template Reference

Multi-threaded computation of surface area, volume and average mean-curvature for narrow band level sets. More...

`#include <openvdb/tools/LevelSetMeasure.h>`

## Public Types
using | GridType = GridT
using | TreeType = typename GridType::TreeType
using | ValueType = typename TreeType::ValueType
using | ManagerType = typename tree::LeafManager< const TreeType >

## Public Member Functions
| LevelSetMeasure (const GridType &grid, InterruptT *interrupt=nullptr)
| Main constructor from a grid.
void | init (const GridType &grid)
| Re-initialize using the specified grid.
virtual | ~LevelSetMeasure ()
| Destructor.
int | getGrainSize () const
void | setGrainSize (int grainsize)
| Set the grain-size used for multi-threading.
Real | area (bool useWorldUnits=true)
| Compute the surface area of the level set.
Real | volume (bool useWorldUnits=true)
| Compute the volume of the level set surface.
Real | totMeanCurvature (bool useWorldUnits=true)
| Compute the total mean curvature of the level set surface.
Real | totGaussianCurvature (bool useWorldUnits=true)
| Compute the total gaussian curvature of the level set surface.
Real | avgMeanCurvature (bool useWorldUnits=true)
| Compute the average mean curvature of the level set surface.
Real | avgGaussianCurvature (bool useWorldUnits=true)
| Compute the average gaussian curvature of the level set surface.
int | eulerCharacteristic ()
| Compute the Euler characteristic of the level set surface.
int | genus ()
| Compute the genus of the level set surface.

## Detailed Description

template<typename GridT, typename InterruptT = util::NullInterrupter>
class openvdb::v11_0::tools::LevelSetMeasure< GridT, InterruptT >

Multi-threaded computation of surface area, volume and average mean-curvature for narrow band level sets.

To reduce the risk of round-off errors (primarily due to catastrophic cancellation) and guarantee determinism during multi-threading this class is implemented using parallel_for, and delayed reduction of a sorted list.

## Member Typedef Documentation

## ◆ GridType

template<typename GridT , typename InterruptT = util::NullInterrupter>

using GridType = GridT

## ◆ ManagerType

template<typename GridT , typename InterruptT = util::NullInterrupter>

using ManagerType = typename tree::LeafManager<const TreeType>

## ◆ TreeType

template<typename GridT , typename InterruptT = util::NullInterrupter>

using TreeType = typename GridType::TreeType

## ◆ ValueType

template<typename GridT , typename InterruptT = util::NullInterrupter>

using ValueType = typename TreeType::ValueType

## Constructor & Destructor Documentation

## ◆ LevelSetMeasure()

template<typename GridT , typename InterruptT >

LevelSetMeasure | ( | const GridType & | grid,
|  | InterruptT * | interrupt = `nullptr`
| ) |  |
| inline

Main constructor from a grid.

Parameters

  grid | The level set to be measured.
  interrupt | Optional interrupter.

Exceptions

  RuntimeError | if the grid is not a level set or if it's empty.

## ◆ ~LevelSetMeasure()

template<typename GridT , typename InterruptT = util::NullInterrupter>

virtual ~LevelSetMeasure | ( |  | ) |
| inline virtual

Destructor.

## Member Function Documentation

## ◆ area()

template<typename GridT , typename InterruptT >

Real area | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the surface area of the level set.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ avgGaussianCurvature()

template<typename GridT , typename InterruptT = util::NullInterrupter>

Real avgGaussianCurvature | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the average gaussian curvature of the level set surface.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ avgMeanCurvature()

template<typename GridT , typename InterruptT = util::NullInterrupter>

Real avgMeanCurvature | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the average mean curvature of the level set surface.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ eulerCharacteristic()

template<typename GridT , typename InterruptT >

int eulerCharacteristic | ( |  | ) |
| inline

Compute the Euler characteristic of the level set surface.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ genus()

template<typename GridT , typename InterruptT = util::NullInterrupter>

int genus | ( |  | ) |
| inline

Compute the genus of the level set surface.

Warning
  The genus is only well defined for a single connected surface.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ getGrainSize()

template<typename GridT , typename InterruptT = util::NullInterrupter>

int getGrainSize | ( |  | ) | const
| inline

Returns
  the grain-size used for multi-threading

## ◆ init()

template<typename GridT , typename InterruptT >

void init | ( | const GridType & | grid | ) |
| inline

Re-initialize using the specified grid.

Parameters

  grid | The level set to be measured.

Exceptions

  RuntimeError | if the grid is not a level set or if it's empty.

## ◆ setGrainSize()

template<typename GridT , typename InterruptT = util::NullInterrupter>

void setGrainSize | ( | int | grainsize | ) |
| inline

Set the grain-size used for multi-threading.

Note
  A grain size of 0 or less disables multi-threading!

## ◆ totGaussianCurvature()

template<typename GridT , typename InterruptT >

Real totGaussianCurvature | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the total gaussian curvature of the level set surface.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ totMeanCurvature()

template<typename GridT , typename InterruptT >

Real totMeanCurvature | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the total mean curvature of the level set surface.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.

## ◆ volume()

template<typename GridT , typename InterruptT >

Real volume | ( | bool | useWorldUnits = `true` | ) |
| inline

Compute the volume of the level set surface.

Parameters

  useWorldUnits | Specifies if the result is in world or voxel units.

Note
  Performs internal caching so only the initial call incurs actual computation.