Loading...
Searching...
No Matches
VolumeToMesh Struct Reference

Mesh any scalar grid that has a continuous isosurface. More...

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

## Public Member Functions

| VolumeToMesh (double isovalue=0, double adaptivity=0, bool relaxDisorientedTriangles=true)
template<typename InputGridType >
void | operator() (const InputGridType &)
| Main call.
void | setRefGrid (const GridBase::ConstPtr &grid, double secAdaptivity=0)

When surfacing fractured SDF fragments, the original unfractured SDF grid can be used to eliminate seam lines and tag polygons that are coincident with the reference surface with the `POLYFLAG_EXTERIOR` flag and polygons that are in proximity to the seam lines with the `POLYFLAG_FRACTURE_SEAM` flag. (The performance cost for using this reference based scheme compared to the regular meshing scheme is approximately 15% for the first fragment and neglect-able for subsequent fragments.)

void | setSurfaceMask (const GridBase::ConstPtr &mask, bool invertMask=false)
void | setSpatialAdaptivity (const GridBase::ConstPtr &grid)
void | setAdaptivityMask (const TreeBase::ConstPtr &tree)
size_t | pointListSize () const
PointList & | pointList ()
const PointList & | pointList () const
size_t | polygonPoolListSize () const
PolygonPoolList & | polygonPoolList ()
const PolygonPoolList & | polygonPoolList () const
std::vector< uint8_t > & | pointFlags ()
const std::vector< uint8_t > & | pointFlags () const

## Detailed Description

Mesh any scalar grid that has a continuous isosurface.

## Constructor & Destructor Documentation

## VolumeToMesh()

VolumeToMesh | ( | double | isovalue = `0`,
|  | double | adaptivity = `0`,
|  | bool | relaxDisorientedTriangles = `true`
| ) |  |

inline

Parameters

  isovalue | Determines which isosurface to mesh.
  adaptivity | Adaptivity threshold [0 to 1]
  relaxDisorientedTriangles | Toggle relaxing disoriented triangles during adaptive meshing.

## Member Function Documentation

## operator()()

template<typename InputGridType >

void operator() | ( | const InputGridType & | inputGrid | ) |

inline

Main call.

Note
  Call with scalar typed grid.

## pointFlags() [1/2]

std::vector< uint8_t > & pointFlags | ( |  | ) |

inline

## pointFlags() [2/2]

const std::vector< uint8_t > & pointFlags | ( |  | ) | const

inline

## pointList() [1/2]

PointList & pointList | ( |  | ) |

inline

## pointList() [2/2]

const PointList & pointList | ( |  | ) | const

inline

## pointListSize()

size_t pointListSize | ( |  | ) | const

inline

## polygonPoolList() [1/2]

PolygonPoolList & polygonPoolList | ( |  | ) |

inline

## polygonPoolList() [2/2]

const PolygonPoolList & polygonPoolList | ( |  | ) | const

inline

## polygonPoolListSize()

size_t polygonPoolListSize | ( |  | ) | const

inline

## setAdaptivityMask()

void setAdaptivityMask | ( | const TreeBase::ConstPtr & | tree | ) |

inline

Parameters

  tree | A boolean tree whose active topology defines the adaptivity mask.

Note
  The tree configuration has to match `GridT's` tree configuration.

## setRefGrid()

void setRefGrid | ( | const GridBase::ConstPtr & | grid,
|  | double | secAdaptivity = `0`
| ) |  |

inline

When surfacing fractured SDF fragments, the original unfractured SDF grid can be used to eliminate seam lines and tag polygons that are coincident with the reference surface with the `POLYFLAG_EXTERIOR` flag and polygons that are in proximity to the seam lines with the `POLYFLAG_FRACTURE_SEAM` flag. (The performance cost for using this reference based scheme compared to the regular meshing scheme is approximately 15% for the first fragment and neglect-able for subsequent fragments.)

Note
  Attributes from the original asset such as uv coordinates, normals etc. are typically transferred to polygons that are marked with the `POLYFLAG_EXTERIOR` flag. Polygons that are not marked with this flag are interior to reference surface and might need projected UV coordinates or a different material. Polygons marked as `POLYFLAG_FRACTURE_SEAM` can be used to drive secondary elements such as debris and dust in a FX pipeline.

Parameters

  grid | reference surface grid of `GridT` type.
  secAdaptivity | Secondary adaptivity threshold [0 to 1]. Used in regions that do not exist in the reference grid. (Parts of the fragment surface that are not coincident with the reference surface.)

## setSpatialAdaptivity()

void setSpatialAdaptivity | ( | const GridBase::ConstPtr & | grid | ) |

inline

Parameters

  grid | A scalar grid used as a spatial multiplier for the adaptivity threshold.

Note
  The grid's tree configuration has to match `GridT's` tree configuration.

## setSurfaceMask()

void setSurfaceMask | ( | const GridBase::ConstPtr & | mask,
|  | bool | invertMask = `false`
| ) |  |

inline

Parameters

  mask | A boolean grid whose active topology defines the region to mesh.
  invertMask | Toggle to mesh the complement of the mask.

Note
  The mask's tree configuration has to match `GridT's` tree configuration.