OpenVDB 5.1.0

Classes | Public Types | Public Member Functions | List of all members
ParticlesToLevelSet< SdfGridT, AttributeT, InterrupterT > Class Template Reference

`#include <ParticlesToLevelSet.h>`

## Public Types
using | DisableT = typename std::is_void< AttributeT >::type
using | InterrupterType = InterrupterT
using | SdfGridType = SdfGridT
using | SdfType = typename SdfGridT::ValueType
using | AttType = typename std::conditional< DisableT::value, size_t, AttributeT >::type
using | AttGridType = typename SdfGridT::template ValueConverter< AttType >::Type

## Public Member Functions
| ParticlesToLevelSet (SdfGridT &grid, InterrupterT *interrupt=nullptr)
| Constructor using an exiting signed distance, i.e. narrow band level set, grid. More...
| ~ParticlesToLevelSet ()
| Destructor. More...
void | finalize (bool prune=false)
| This methods syncs up the level set and attribute grids and therefore needs to be called before any of these grids are used and after the last call to any of the rasterizer methods. More...
AttGridType::Ptr | attributeGrid ()
| Return a shared pointer to the grid containing the (optional) attribute. More...
Real | getVoxelSize () const
| Return the size of a voxel in world units. More...
Real | getHalfWidth () const
| Return the half-width of the narrow band in voxel units. More...
Real | getRmin () const
| Return the smallest radius allowed in voxel units. More...
Real | getRmax () const
| Return the largest radius allowed in voxel units. More...
bool | ignoredParticles () const
| Return true if any particles were ignored due to their size. More...
size_t | getMinCount () const
| Return number of small particles that were ignore due to Rmin. More...
size_t | getMaxCount () const
| Return number of large particles that were ignore due to Rmax. More...
void | setRmin (Real Rmin)
| set the smallest radius allowed in voxel units More...
void | setRmax (Real Rmax)
| set the largest radius allowed in voxel units More...
int | getGrainSize () const
| Returns the grain-size used for multi-threading. More...
void | setGrainSize (int grainSize)
| Set the grain-size used for multi-threading. More...
template<typename ParticleListT >
void | rasterizeSpheres (const ParticleListT &pa)
| Rasterize a sphere per particle derived from their position and radius. All spheres are CSG unioned. More...
template<typename ParticleListT >
void | rasterizeSpheres (const ParticleListT &pa, Real radius)
| Rasterize a sphere per particle derived from their position and constant radius. All spheres are CSG unioned. More...
template<typename ParticleListT >
void | rasterizeTrails (const ParticleListT &pa, Real delta=1.0)
| Rasterize a trail per particle derived from their position, radius and velocity. Each trail is generated as CSG unions of sphere instances with decreasing radius. More...

## Member Typedef Documentation

## ◆ AttGridType

using AttGridType = typename SdfGridT::template ValueConverter<AttType>::Type

## ◆ AttType

using AttType = typename std::conditional<DisableT::value, size_t, AttributeT>::type

## ◆ DisableT

using DisableT = typename std::is_void<AttributeT>::type

## ◆ InterrupterType

using InterrupterType = InterrupterT

## ◆ SdfGridType

using SdfGridType = SdfGridT

## ◆ SdfType

using SdfType = typename SdfGridT::ValueType

## Constructor & Destructor Documentation

## ◆ ParticlesToLevelSet()

ParticlesToLevelSet | ( | SdfGridT & | grid,
|  | InterrupterT * | interrupt = `nullptr`
| ) |  |
| inline explicit

Constructor using an exiting signed distance, i.e. narrow band level set, grid.

Parameters

  grid | Level set grid in which particles are rasterized
  interrupt | Callback to interrupt a long-running process

Note
  The input grid is assumed to be a valid level set and if it already contains voxels (with SDF values) particles are unioned onto the existing level set surface. However, if attribute transfer is enabled, i.e. AttributeT != void, attributes are only generated for voxels that overlap with particles, not the existing voxels in the input grid (for which no attributes exist!).

The width in voxel units of the generated narrow band level set is given by 2*background/dx, where background is the background value stored in the grid, and dx is the voxel size derived from the transform also stored in the grid. Also note that -background corresponds to the constant value inside the generated narrow band level sets. Finally the default NullInterrupter should compile out interruption checks during optimization, thus incurring no run-time overhead.

## ◆ ~ParticlesToLevelSet()

~ParticlesToLevelSet | ( |  | ) |
| inline

Destructor.

## Member Function Documentation

## ◆ attributeGrid()

AttGridType::Ptr attributeGrid | ( |  | ) |
| inline

Return a shared pointer to the grid containing the (optional) attribute.

Warning
  If attribute transfer was disabled, i.e. AttributeT = void, or finalize() was not called the pointer is nullptr!

## ◆ finalize()

void finalize | ( | bool | prune = `false` | ) |
| inline

This methods syncs up the level set and attribute grids and therefore needs to be called before any of these grids are used and after the last call to any of the rasterizer methods.

Note
  Avoid calling this method more than once and only after all the particles have been rasterized. It has no effect or overhead if attribute transfer is disabled, i.e. AttributeT = void and prune is false.

## ◆ getGrainSize()

int getGrainSize | ( |  | ) | const
| inline

Returns the grain-size used for multi-threading.

## ◆ getHalfWidth()

Real getHalfWidth | ( |  | ) | const
| inline

Return the half-width of the narrow band in voxel units.

## ◆ getMaxCount()

size_t getMaxCount | ( |  | ) | const
| inline

Return number of large particles that were ignore due to Rmax.

## ◆ getMinCount()

size_t getMinCount | ( |  | ) | const
| inline

Return number of small particles that were ignore due to Rmin.

## ◆ getRmax()

Real getRmax | ( |  | ) | const
| inline

Return the largest radius allowed in voxel units.

## ◆ getRmin()

Real getRmin | ( |  | ) | const
| inline

Return the smallest radius allowed in voxel units.

## ◆ getVoxelSize()

Real getVoxelSize | ( |  | ) | const
| inline

Return the size of a voxel in world units.

## ◆ ignoredParticles()

bool ignoredParticles | ( |  | ) | const
| inline

Return true if any particles were ignored due to their size.

## ◆ rasterizeSpheres() [1/2]

void rasterizeSpheres | ( | const ParticleListT & | pa | ) |
| inline

Rasterize a sphere per particle derived from their position and radius. All spheres are CSG unioned.

Parameters

  pa | Particles with position and radius.

## ◆ rasterizeSpheres() [2/2]

void rasterizeSpheres | ( | const ParticleListT & | pa,
|  | Real | radius
| ) |  |
| inline

Rasterize a sphere per particle derived from their position and constant radius. All spheres are CSG unioned.

Parameters

  pa | Particles with position.
  radius | Constant particle radius in world units.

## ◆ rasterizeTrails()

void rasterizeTrails | ( | const ParticleListT & | pa,
|  | Real | delta = `1.0`
| ) |  |
| inline

Rasterize a trail per particle derived from their position, radius and velocity. Each trail is generated as CSG unions of sphere instances with decreasing radius.

Parameters

  pa | particles with position, radius and velocity.
  delta | controls distance between sphere instances (default=1). Be careful not to use too small values since this can lead to excessive computation per trail (which the interrupter can't stop).

Note
  The direction of a trail is inverse to the direction of the velocity vector, and the length is given by |V|. The radius at the head of the trail is given by the radius of the particle and the radius at the tail of the trail is Rmin voxel units which has a default value of 1.5 corresponding to the Nyquist frequency!

## ◆ setGrainSize()

void setGrainSize | ( | int | grainSize | ) |
| inline

Set the grain-size used for multi-threading.

Note
  A grainsize of 0 or less disables multi-threading!

## ◆ setRmax()

void setRmax | ( | Real | Rmax | ) |
| inline

set the largest radius allowed in voxel units

## ◆ setRmin()

void setRmin | ( | Real | Rmin | ) |
| inline

set the smallest radius allowed in voxel units

The documentation for this class was generated from the following file:

- ParticlesToLevelSet.h