HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::tools Namespace Reference

Namespaces

 activation
 
 clip_internal
 
 composite
 
 diagnostics_internal
 
 ds
 
 filter_internal
 
 gridop
 
 internal
 
 level_set_fracture_internal
 
 level_set_util_internal
 
 local_util
 
 lstrack
 
 mask_internal
 
 mesh_to_volume_internal
 
 p2ls_internal
 
 particle_atlas_internal
 
 point_index_grid_internal
 
 point_partitioner_internal
 
 poisson
 
 potential_flow_internal
 
 Scheme
 
 stats_internal
 
 ttls_internal
 
 v2s_internal
 
 valxform
 
 volume_to_mesh_internal
 

Classes

class  ChangeBackgroundOp
 
class  ChangeLevelSetBackgroundOp
 
struct  CompReplaceOp
 
class  CsgVisitorBase
 
struct  CsgUnionVisitor
 
struct  CsgIntersectVisitor
 
struct  CsgDiffVisitor
 
class  DenseBase
 Base class for Dense which is defined below. More...
 
class  DenseBase< ValueT, LayoutZYX >
 Partial template specialization of DenseBase. More...
 
class  DenseBase< ValueT, LayoutXYZ >
 Partial template specialization of DenseBase. More...
 
class  Dense
 Dense is a simple dense grid API used by the CopyToDense and CopyFromDense classes defined below. More...
 
class  CopyToDense
 Copy an OpenVDB tree into an existing dense grid. More...
 
class  CopyFromDense
 Copy the values from a dense grid into an OpenVDB tree. More...
 
struct  DSConverter
 
class  SparseExtractor
 Functor-based class used to extract data that satisfies some criteria defined by the embedded OpType functor. The extractSparseTree function wraps this class. More...
 
class  SparseMaskedExtractor
 Functor-based class used to extract data from a dense grid, at the index-space intersection with a supplied mask in the form of a sparse tree. The extractSparseTreeWithMask function wraps this class. More...
 
struct  ExtractAll
 a simple utility class used by extractSparseTreeWithMask More...
 
class  DenseTransformer
 Class that applies a functor to the index space intersection of a prescribed bounding box and the dense grid. NB: This class only supports DenseGrids with ZYX memory layout. More...
 
struct  ContiguousOp
 a wrapper struct used to avoid unnecessary computation of memory access from Coord when all offsets are guaranteed to be within the dense grid. More...
 
class  SparseToDenseCompositor
 
struct  CheckNan
 Checks NaN values. More...
 
struct  CheckInf
 Checks for infinite values, e.g. 1/0 or -1/0. More...
 
struct  CheckFinite
 Checks for both NaN and inf values, i.e. any value that is not finite. More...
 
struct  CheckMagnitude
 Check that the magnitude of a value, a, is close to a fixed magnitude, b, given a fixed tolerance c. That is | |a| - |b| | <= c. More...
 
struct  CheckRange
 Checks a value against a range. More...
 
struct  CheckMin
 Checks a value against a minimum. More...
 
struct  CheckMax
 Checks a value against a maximum. More...
 
struct  CheckNormGrad
 Checks the norm of the gradient against a range, i.e., |∇Φ| ∈ [min, max]. More...
 
struct  CheckEikonal
 Checks the norm of the gradient at zero-crossing voxels against a range. More...
 
struct  CheckDivergence
 Checks the divergence against a range. More...
 
class  Diagnose
 Performs multithreaded diagnostics of a grid. More...
 
class  CheckLevelSet
 Class that performs various types of checks on narrow-band level sets. More...
 
class  CheckFogVolume
 Class that performs various types of checks on fog volumes. More...
 
class  Filter
 Volume filtering (e.g., diffusion) with optional alpha masking. More...
 
struct  VectorToScalarConverter
 VectorToScalarConverter<VectorGridType>::Type is the type of a grid having the same tree configuration as VectorGridType but a scalar value type, T, where T is the type of the original vector components. More...
 
struct  ScalarToVectorConverter
 ScalarToVectorConverter<ScalarGridType>::Type is the type of a grid having the same tree configuration as ScalarGridType but value type Vec3<T> where T is ScalarGridType::ValueType. More...
 
class  Cpt
 Compute the closest-point transform of a scalar grid. More...
 
class  Curl
 Compute the curl of a vector grid. More...
 
class  Divergence
 Compute the divergence of a vector grid. More...
 
class  Gradient
 Compute the gradient of a scalar grid. More...
 
class  Laplacian
 
class  MeanCurvature
 
class  Magnitude
 
class  Normalize
 
class  GridResampler
 
class  GridTransformer
 A GridTransformer applies a geometric transformation to an input grid using one of several sampling schemes, and stores the result in an output grid. More...
 
class  ABTransform
 This class implements the Transformer functor interface (specifically, the isAffine(), transform() and invTransform() methods) for a transform that maps an A grid into a B grid's index space such that, after resampling, A's index space and transform match B's index space and transform. More...
 
struct  Sampler
 Provises a unified interface for sampling, i.e. interpolation. More...
 
struct  PointSampler
 
struct  BoxSampler
 
struct  QuadraticSampler
 
struct  StaggeredPointSampler
 
struct  StaggeredBoxSampler
 
struct  StaggeredQuadraticSampler
 
class  GridSampler
 Class that provides the interface for continuous sampling of values in a tree. More...
 
class  GridSampler< tree::ValueAccessor< TreeT >, SamplerType >
 Specialization of GridSampler for construction from a ValueAccessor type. More...
 
class  DualGridSampler
 This is a simple convenience class that allows for sampling from a source grid into the index space of a target grid. At construction the source and target grids are checked for alignment which potentially renders interpolation unnecessary. Else interpolation is performed according to the templated Sampler type. More...
 
class  DualGridSampler< tree::ValueAccessor< TreeT >, SamplerT >
 Specialization of DualGridSampler for construction from a ValueAccessor type. More...
 
class  AlphaMask
 
struct  Sampler< 0, false >
 
struct  Sampler< 1, false >
 
struct  Sampler< 2, false >
 
struct  Sampler< 0, true >
 
struct  Sampler< 1, true >
 
struct  Sampler< 2, true >
 
class  LevelSetAdvection
 Hyperbolic advection of narrow-band level sets in an external velocity field. More...
 
class  LevelSetFilter
 Filtering (e.g. diffusion) of narrow-band level sets. An optional scalar field can be used to produce a (smooth) alpha mask for the filtering. More...
 
class  LevelSetFracture
 Level set fracturing. More...
 
class  DiracDelta
 Smeared-out and continuous Dirac Delta function. More...
 
class  LevelSetMeasure
 Multi-threaded computation of surface area, volume and average mean-curvature for narrow band level sets. More...
 
class  LevelSetMorphing
 Shape morphology of level sets. Morphing from a source narrow-band level sets to a target narrow-band level set. More...
 
class  LevelSetSphere
 Generates a signed distance field (or narrow band level set) to a single sphere. More...
 
class  LevelSetTracker
 Performs multi-threaded interface tracking of narrow band level sets. More...
 
struct  QuadAndTriangleDataAdapter
 Contiguous quad and triangle data adapter class. More...
 
class  MeshToVoxelEdgeData
 Extracts and stores voxel edge intersection data from a mesh. More...
 
struct  DimToWord
 Mapping from a Log2Dim to a data type of size 2^Log2Dim bits. More...
 
struct  DimToWord< 3 >
 
struct  DimToWord< 4 >
 
struct  DimToWord< 5 >
 
struct  DimToWord< 6 >
 
class  Morphology
 
class  DilationOp
 Class that performs multi-threaded dilation with support for active tiles. More...
 
class  MultiResGrid
 
struct  ParticleAtlas
 
class  ParticlesToLevelSet
 
class  ClosestPointProjector
 
class  PointAdvect
 
class  ConstrainedPointAdvect
 
struct  PointIndexLeafNode
 
struct  PointIndexIterator
 Accelerated range and nearest-neighbor searches for point index grids. More...
 
struct  PointIndexFilter
 
class  PointPartitioner
 
class  BasePointScatter
 Forward declaration of base class. More...
 
class  UniformPointScatter
 The two point scatters UniformPointScatter and NonUniformPointScatter depend on the following two classes: More...
 
class  DenseUniformPointScatter
 Scatters a fixed (and integer) number of points in all active voxels and tiles. More...
 
class  NonUniformPointScatter
 Non-uniform scatters of point in the active voxels. The local point count is implicitly defined as a product of of a global density (called pointsPerVolume) and the local voxel (or tile) value. More...
 
class  PointsToMask
 Makes every voxel of a grid active if it contains a point. More...
 
struct  VectorToScalarGrid
 Metafunction to convert a vector-valued grid type to a scalar grid type. More...
 
class  InactivePruneOp
 
class  TolerancePruneOp
 
class  LevelSetPruneOp
 
class  LinearSearchImpl
 Implements linear iterative search for an iso-value of the level set along the direction of the ray. More...
 
class  LevelSetRayIntersector
 This class provides the public API for intersecting a ray with a narrow-band level set. More...
 
class  VolumeRayIntersector
 This class provides the public API for intersecting a ray with a generic (e.g. density) volume. More...
 
class  LevelSetRayTracer
 A (very) simple multithreaded ray tracer specifically for narrow-band level sets. More...
 
class  VolumeRender
 A (very) simple multithreaded volume render specifically for scalar density. More...
 
class  Film
 A simple class that allows for concurrent writes to pixels in an image, background initialization of the image, and PPM or EXR file output. More...
 
class  BaseCamera
 Abstract base class for the perspective and orthographic cameras. More...
 
class  PerspectiveCamera
 
class  OrthographicCamera
 
class  BaseShader
 Abstract base class for the shaders. More...
 
class  MatteShader
 Shader that produces a simple matte. More...
 
class  MatteShader< Film::RGBA, SamplerType >
 
class  NormalShader
 Color shader that treats the surface normal (x, y, z) as an RGB color. More...
 
class  NormalShader< Film::RGBA, SamplerType >
 
class  PositionShader
 Color shader that treats position (x, y, z) as an RGB color in a cube defined from an axis-aligned bounding box in world space. More...
 
class  PositionShader< Film::RGBA, SamplerType >
 
class  DiffuseShader
 Simple diffuse Lambertian surface shader. More...
 
class  DiffuseShader< Film::RGBA, SamplerType >
 
class  SignedFloodFillOp
 
struct  HomogeneousMatMul
 
struct  MatMul
 
struct  MatMulNormalize
 
class  DiscreteField
 Thin wrapper class for a velocity grid. More...
 
class  EnrightField
 Analytical, divergence-free and periodic velocity field. More...
 
class  VelocitySampler
 
class  VelocityIntegrator
 Performs Runge-Kutta time integration of variable order in a static velocity field. More...
 
class  VolumeAdvection
 Performs advections of an arbitrary type of volume in a static velocity field. The advections are performed by means of various derivatives of Semi-Lagrangian integration, i.e. backwards tracking along the hyperbolic characteristics followed by interpolation. More...
 
class  PolygonPool
 Collection of quads and triangles. More...
 
struct  VolumeToMesh
 Mesh any scalar grid that has a continuous isosurface. More...
 
class  ClosestSurfacePoint
 Accelerated closest surface point queries for narrow band level sets. More...
 

Typedefs

using ParticleIndexAtlas = ParticleAtlas< PointIndexGrid >
 
using PointIndexTree = tree::Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 >>>
 Point index tree configured to match the default OpenVDB tree configuration. More...
 
using PointIndexGrid = Grid< PointIndexTree >
 Point index grid. More...
 
using UInt32PointPartitioner = PointPartitioner< uint32_t, 3 >
 
using PointList = hboost::scoped_array< openvdb::Vec3s >
 Point and primitive list types. More...
 
using PolygonPoolList = hboost::scoped_array< PolygonPool >
 Point and primitive list types. More...
 

Enumerations

enum  MemoryLayout { LayoutXYZ, LayoutZYX }
 
enum  DSCompositeOp {
  DS_OVER, DS_ADD, DS_SUB, DS_MIN,
  DS_MAX, DS_MULT, DS_SET
}
 
enum  MeshToVolumeFlags { UNSIGNED_DISTANCE_FIELD = 0x1, DISABLE_INTERSECTING_VOXEL_REMOVAL = 0x2, DISABLE_RENORMALIZATION = 0x4, DISABLE_NARROW_BAND_TRIMMING = 0x8 }
 Mesh to volume conversion flags. More...
 
enum  NearestNeighbors { NN_FACE = 6, NN_FACE_EDGE = 18, NN_FACE_EDGE_VERTEX = 26 }
 Voxel topology of nearest neighbors. More...
 
enum  TilePolicy { IGNORE_TILES, EXPAND_TILES, PRESERVE_TILES }
 Different policies when dilating trees with active tiles. More...
 
enum  { POLYFLAG_EXTERIOR = 0x1, POLYFLAG_FRACTURE_SEAM = 0x2, POLYFLAG_SUBDIVIDED = 0x4 }
 Polygon flags, used for reference based meshing. More...
 

Functions

template<typename TreeOrLeafManagerT >
void changeBackground (TreeOrLeafManagerT &tree, const typename TreeOrLeafManagerT::ValueType &background, bool threaded=true, size_t grainSize=32)
 Replace the background value in all the nodes of a tree. More...
 
template<typename TreeOrLeafManagerT >
void changeLevelSetBackground (TreeOrLeafManagerT &tree, const typename TreeOrLeafManagerT::ValueType &halfWidth, bool threaded=true, size_t grainSize=32)
 Replace the background value in all the nodes of a floating-point tree containing a symmetric narrow-band level set. More...
 
template<typename TreeOrLeafManagerT >
void changeAsymmetricLevelSetBackground (TreeOrLeafManagerT &tree, const typename TreeOrLeafManagerT::ValueType &outsideWidth, const typename TreeOrLeafManagerT::ValueType &insideWidth, bool threaded=true, size_t grainSize=32)
 Replace the background values in all the nodes of a floating-point tree containing a possibly asymmetric narrow-band level set. More...
 
template<typename GridType >
GridType::Ptr clip (const GridType &grid, const BBoxd &bbox, bool keepInterior=true)
 Clip the given grid against a world-space bounding box and return a new grid containing the result. More...
 
template<typename GridType >
GridType::Ptr clip (const GridType &grid, const math::NonlinearFrustumMap &frustum, bool keepInterior=true)
 Clip the given grid against a frustum and return a new grid containing the result. More...
 
template<typename GridType , typename MaskTreeType >
GridType::Ptr clip (const GridType &grid, const Grid< MaskTreeType > &mask, bool keepInterior=true)
 Clip a grid against the active voxels of another grid and return a new grid containing the result. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void csgUnion (GridOrTreeT &a, GridOrTreeT &b, bool prune=true)
 Given two level set grids, replace the A grid with the union of A and B. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void csgIntersection (GridOrTreeT &a, GridOrTreeT &b, bool prune=true)
 Given two level set grids, replace the A grid with the intersection of A and B. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void csgDifference (GridOrTreeT &a, GridOrTreeT &b, bool prune=true)
 Given two level set grids, replace the A grid with the difference A / B. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION
GridOrTreeT::Ptr 
csgUnionCopy (const GridOrTreeT &a, const GridOrTreeT &b)
 Threaded CSG union operation that produces a new grid or tree from immutable inputs. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION
GridOrTreeT::Ptr 
csgIntersectionCopy (const GridOrTreeT &a, const GridOrTreeT &b)
 Threaded CSG intersection operation that produces a new grid or tree from immutable inputs. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION
GridOrTreeT::Ptr 
csgDifferenceCopy (const GridOrTreeT &a, const GridOrTreeT &b)
 Threaded CSG difference operation that produces a new grid or tree from immutable inputs. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compMax (GridOrTreeT &a, GridOrTreeT &b)
 Given grids A and B, compute max(a, b) per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compMin (GridOrTreeT &a, GridOrTreeT &b)
 Given grids A and B, compute min(a, b) per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compSum (GridOrTreeT &a, GridOrTreeT &b)
 Given grids A and B, compute a + b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compMul (GridOrTreeT &a, GridOrTreeT &b)
 Given grids A and B, compute a * b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compDiv (GridOrTreeT &a, GridOrTreeT &b)
 Given grids A and B, compute a / b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty. More...
 
template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void compReplace (GridOrTreeT &a, const GridOrTreeT &b)
 Copy the active voxels of B into A. More...
 
template<typename TreeT , typename OpT = composite::CopyOp<TreeT>>
void compActiveLeafVoxels (TreeT &srcTree, TreeT &dstTree, OpT op=composite::CopyOp< TreeT >())
 Composite the active values in leaf nodes, i.e. active voxels, of a source tree into a destination tree. More...
 
template<typename DenseT , typename GridOrTreeT >
void copyToDense (const GridOrTreeT &sparse, DenseT &dense, bool serial=false)
 Populate a dense grid with the values of voxels from a sparse grid, where the sparse grid intersects the dense grid. More...
 
template<typename DenseT , typename GridOrTreeT >
void copyFromDense (const DenseT &dense, GridOrTreeT &sparse, const typename GridOrTreeT::ValueType &tolerance, bool serial=false)
 Populate a sparse grid with the values of all of the voxels of a dense grid. More...
 
template<typename OpType , typename DenseType >
OpType::ResultTreeType::Ptr extractSparseTree (const DenseType &dense, const OpType &functor, const typename OpType::ResultValueType &background, bool threaded=true)
 Selectively extract and transform data from a dense grid, producing a sparse tree with leaf nodes only (e.g. create a tree from the square of values greater than a cutoff.) More...
 
template<typename DenseType , typename MaskTreeType >
DSConverter< DenseType,
MaskTreeType >::Type::Ptr 
extractSparseTreeWithMask (const DenseType &dense, const MaskTreeType &mask, const typename DenseType::ValueType &background, bool threaded=true)
 Copy data from the intersection of a sparse tree and a dense input grid. The resulting tree has the same configuration as the sparse tree, but holds the data type specified by the dense input. More...
 
template<typename ValueT , typename OpType >
void transformDense (Dense< ValueT, openvdb::tools::LayoutZYX > &dense, const openvdb::CoordBBox &bbox, const OpType &op, bool parallel=true)
 
template<DSCompositeOp , typename TreeT >
void compositeToDense (Dense< typename TreeT::ValueType, LayoutZYX > &dense, const TreeT &source, const TreeT &alpha, const typename TreeT::ValueType beta, const typename TreeT::ValueType strength, bool threaded=true)
 Composite data from a sparse tree into a dense array of the same value type. More...
 
template<typename ValueT , typename PointwiseOpT >
void transformDense (Dense< ValueT, openvdb::tools::LayoutZYX > &dense, const openvdb::CoordBBox &bbox, const PointwiseOpT &functor, bool parallel)
 Apply a point-wise functor to the intersection of a dense grid and a given bounding box. More...
 
template<class GridType >
std::string checkLevelSet (const GridType &grid, size_t number=9)
 Perform checks on a grid to see if it is a valid symmetric, narrow-band level set. More...
 
template<class GridType >
std::string checkFogVolume (const GridType &grid, size_t number=6)
 Perform checks on a grid to see if it is a valid fog volume. More...
 
template<class GridType >
bool uniqueInactiveValues (const GridType &grid, std::vector< typename GridType::ValueType > &values, size_t numValues)
 Threaded method to find unique inactive values. More...
 
template<typename GridType , typename InterruptT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
cpt (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the Closest-Point Transform (CPT) from a distance field. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
cpt (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
ScalarToVectorConverter
< GridType >::Type::Ptr 
cpt (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
cpt (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
GridType::Ptr curl (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the curl of the given vector-valued grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr curl (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
GridType::Ptr curl (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
GridType::Ptr curl (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
VectorToScalarConverter
< GridType >::Type::Ptr 
divergence (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the divergence of the given vector-valued grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
VectorToScalarConverter
< GridType >::Type::Ptr 
divergence (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
VectorToScalarConverter
< GridType >::Type::Ptr 
divergence (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
VectorToScalarConverter
< GridType >::Type::Ptr 
divergence (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
gradient (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the gradient of the given scalar grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
gradient (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
ScalarToVectorConverter
< GridType >::Type::Ptr 
gradient (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
ScalarToVectorConverter
< GridType >::Type::Ptr 
gradient (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
GridType::Ptr laplacian (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the Laplacian of the given scalar grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr laplacian (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
GridType::Ptr laplacian (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
GridType::Ptr laplacian (const GridType &grid, const MaskT mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
GridType::Ptr meanCurvature (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the mean curvature of the given grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr meanCurvature (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
GridType::Ptr meanCurvature (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
GridType::Ptr meanCurvature (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
VectorToScalarConverter
< GridType >::Type::Ptr 
magnitude (const GridType &grid, bool threaded, InterruptT *interrupt)
 Compute the magnitudes of the vectors of the given vector-valued grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
VectorToScalarConverter
< GridType >::Type::Ptr 
magnitude (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
VectorToScalarConverter
< GridType >::Type::Ptr 
magnitude (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
VectorToScalarConverter
< GridType >::Type::Ptr 
magnitude (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename GridType , typename InterruptT >
GridType::Ptr normalize (const GridType &grid, bool threaded, InterruptT *interrupt)
 Normalize the vectors of the given vector-valued grid. More...
 
template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr normalize (const GridType &grid, const MaskT &mask, bool threaded, InterruptT *interrupt)
 
template<typename GridType >
GridType::Ptr normalize (const GridType &grid, bool threaded=true)
 
template<typename GridType , typename MaskT >
GridType::Ptr normalize (const GridType &grid, const MaskT &mask, bool threaded=true)
 
template<typename Sampler , typename Interrupter , typename GridType >
void resampleToMatch (const GridType &inGrid, GridType &outGrid, Interrupter &interrupter)
 Resample an input grid into an output grid of the same type such that, after resampling, the input and output grids coincide (apart from sampling artifacts), but the output grid's transform is unchanged. More...
 
template<typename Sampler , typename GridType >
void resampleToMatch (const GridType &inGrid, GridType &outGrid)
 Resample an input grid into an output grid of the same type such that, after resampling, the input and output grids coincide (apart from sampling artifacts), but the output grid's transform is unchanged. More...
 
template<typename Sampler , typename Interrupter , typename GridType >
void doResampleToMatch (const GridType &inGrid, GridType &outGrid, Interrupter &interrupter)
 
template<class GridType >
Real levelSetArea (const GridType &grid, bool useWorldSpace=true)
 Return the surface area of a narrow-band level set. More...
 
template<class GridType >
Real levelSetVolume (const GridType &grid, bool useWorldSpace=true)
 Return the volume of a narrow-band level set surface. More...
 
template<class GridType >
void levelSetMeasure (const GridType &grid, Real &area, Real &volume, bool useWorldSpace=true)
 Compute the surface area and volume of a narrow-band level set. More...
 
template<class GridType >
void levelSetMeasure (const GridType &grid, Real &area, Real &volume, Real &avgCurvature, bool useWorldSpace=true)
 Compute the surface area and volume of a narrow-band level set. More...
 
template<class GridT >
Real levelSetArea (const GridT &grid, bool useWorldSpace)
 
template<class GridT >
Real levelSetVolume (const GridT &grid, bool useWorldSpace)
 
template<class GridT >
void levelSetMeasure (const GridT &grid, Real &area, Real &volume, bool useWorldSpace)
 
template<class GridT >
void levelSetMeasure (const GridT &grid, Real &area, Real &volume, Real &avgCurvature, bool useWorldSpace)
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetPlatonic (int faceCount, float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of a platonic solid. More...
 
template<typename GridType >
GridType::Ptr createLevelSetPlatonic (int faceCount, float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of a platonic solid. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetTetrahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of a tetrahedron. More...
 
template<typename GridType >
GridType::Ptr createLevelSetTetrahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of a tetrahedron. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetCube (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of a cube. More...
 
template<typename GridType >
GridType::Ptr createLevelSetCube (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of a cube. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetOctahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of an octahedron. More...
 
template<typename GridType >
GridType::Ptr createLevelSetOctahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of an octahedron. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetDodecahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of a dodecahedron. More...
 
template<typename GridType >
GridType::Ptr createLevelSetDodecahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of a dodecahedron. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetIcosahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of an icosahedron. More...
 
template<typename GridType >
GridType::Ptr createLevelSetIcosahedron (float scale=1.0f, const Vec3f &center=Vec3f(0.0f), float voxelSize=0.1f, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of an icosahedron. More...
 
template<class GridType >
GridType::Ptr levelSetRebuild (const GridType &grid, float isovalue=0, float halfWidth=float(LEVEL_SET_HALF_WIDTH), const math::Transform *xform=nullptr)
 Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid. More...
 
template<class GridType >
GridType::Ptr levelSetRebuild (const GridType &grid, float isovalue, float exBandWidth, float inBandWidth, const math::Transform *xform=nullptr)
 Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid. More...
 
template<class GridType , typename InterruptT >
GridType::Ptr levelSetRebuild (const GridType &grid, float isovalue, float exBandWidth, float inBandWidth, const math::Transform *xform=nullptr, InterruptT *interrupter=nullptr)
 Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid. More...
 
template<typename GridType , typename InterruptT >
GridType::Ptr createLevelSetSphere (float radius, const openvdb::Vec3f &center, float voxelSize, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=nullptr)
 Return a grid of type GridType containing a narrow-band level set representation of a sphere. More...
 
template<typename GridType >
GridType::Ptr createLevelSetSphere (float radius, const openvdb::Vec3f &center, float voxelSize, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Return a grid of type GridType containing a narrow-band level set representation of a sphere. More...
 
template<class GridType >
void sdfToFogVolume (GridType &grid, typename GridType::ValueType cutoffDistance=lsutilGridMax< GridType >())
 Threaded method to convert a sparse level set/SDF into a sparse fog volume. More...
 
template<class GridOrTreeType >
GridOrTreeType::template
ValueConverter< bool >
::Type::Ptr 
sdfInteriorMask (const GridOrTreeType &volume, typename GridOrTreeType::ValueType isovalue=lsutilGridZero< GridOrTreeType >())
 Threaded method to construct a boolean mask that represents interior regions in a signed distance field. More...
 
template<typename GridOrTreeType >
GridOrTreeType::template
ValueConverter< bool >
::Type::Ptr 
extractEnclosedRegion (const GridOrTreeType &volume, typename GridOrTreeType::ValueType isovalue=lsutilGridZero< GridOrTreeType >(), const typename TreeAdapter< GridOrTreeType >::TreeType::template ValueConverter< bool >::Type *fillMask=nullptr)
 Extracts the interior regions of a signed distance field and topologically enclosed (watertight) regions of value greater than the isovalue (cavities) that can arise as the result of CSG union operations between different shapes where at least one of the shapes has a concavity that is capped. More...
 
template<typename GridOrTreeType >
GridOrTreeType::template
ValueConverter< bool >
::Type::Ptr 
extractIsosurfaceMask (const GridOrTreeType &volume, typename GridOrTreeType::ValueType isovalue)
 Return a mask of the voxels that intersect the implicit surface with the given isovalue. More...
 
template<typename GridOrTreeType >
void extractActiveVoxelSegmentMasks (const GridOrTreeType &volume, std::vector< typename GridOrTreeType::template ValueConverter< bool >::Type::Ptr > &masks)
 Return a mask for each connected component of the given grid's active voxels. More...
 
template<typename GridOrTreeType >
void segmentActiveVoxels (const GridOrTreeType &volume, std::vector< typename GridOrTreeType::Ptr > &segments)
 Separates disjoint active topology components into distinct grids or trees. More...
 
template<typename GridOrTreeType >
void segmentSDF (const GridOrTreeType &volume, std::vector< typename GridOrTreeType::Ptr > &segments)
 Separates disjoint SDF surfaces into distinct grids or trees. More...
 
template<typename GridType >
GridType::template
ValueConverter< bool >
::Type::Ptr 
interiorMask (const GridType &grid, const double isovalue=0.0)
 Given an input grid of any type, return a new, boolean grid whose active voxel topology matches the input grid's or, if the input grid is a level set, matches the input grid's interior. More...
 
template<typename GridType , typename MeshDataAdapter >
GridType::Ptr meshToVolume (const MeshDataAdapter &mesh, const math::Transform &transform, float exteriorBandWidth=3.0f, float interiorBandWidth=3.0f, int flags=0, typename GridType::template ValueConverter< Int32 >::Type *polygonIndexGrid=nullptr)
 
template<typename GridType , typename MeshDataAdapter , typename Interrupter >
GridType::Ptr meshToVolume (Interrupter &interrupter, const MeshDataAdapter &mesh, const math::Transform &transform, float exteriorBandWidth=3.0f, float interiorBandWidth=3.0f, int flags=0, typename GridType::template ValueConverter< Int32 >::Type *polygonIndexGrid=nullptr)
 Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes. More...
 
template<typename GridType >
GridType::Ptr meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Convert a triangle mesh to a level set volume. More...
 
template<typename GridType , typename Interrupter >
GridType::Ptr meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Adds support for a interrupter callback used to cancel the conversion. More...
 
template<typename GridType >
GridType::Ptr meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Convert a quad mesh to a level set volume. More...
 
template<typename GridType , typename Interrupter >
GridType::Ptr meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Adds support for a interrupter callback used to cancel the conversion. More...
 
template<typename GridType >
GridType::Ptr meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Convert a triangle and quad mesh to a level set volume. More...
 
template<typename GridType , typename Interrupter >
GridType::Ptr meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH))
 Adds support for a interrupter callback used to cancel the conversion. More...
 
template<typename GridType >
GridType::Ptr meshToSignedDistanceField (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float exBandWidth, float inBandWidth)
 Convert a triangle and quad mesh to a signed distance field with an asymmetrical narrow band. More...
 
template<typename GridType , typename Interrupter >
GridType::Ptr meshToSignedDistanceField (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float exBandWidth, float inBandWidth)
 Adds support for a interrupter callback used to cancel the conversion. More...
 
template<typename GridType >
GridType::Ptr meshToUnsignedDistanceField (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float bandWidth)
 Convert a triangle and quad mesh to an unsigned distance field. More...
 
template<typename GridType , typename Interrupter >
GridType::Ptr meshToUnsignedDistanceField (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float bandWidth)
 Adds support for a interrupter callback used to cancel the conversion. More...
 
template<typename GridType , typename VecType >
GridType::Ptr createLevelSetBox (const math::BBox< VecType > &bbox, const openvdb::math::Transform &xform, typename VecType::ValueType halfWidth=LEVEL_SET_HALF_WIDTH)
 Return a grid of type GridType containing a narrow-band level set representation of a box. More...
 
template<typename FloatTreeT >
void traceExteriorBoundaries (FloatTreeT &tree)
 Traces the exterior voxel boundary of closed objects in the input volume tree. Exterior voxels are marked with a negative sign, voxels with a value below 0.75 are left unchanged and act as the boundary layer. More...
 
std::ostream & operator<< (std::ostream &ostr, const MeshToVoxelEdgeData::EdgeData &rhs)
 
MeshToVoxelEdgeData::EdgeData Abs (const MeshToVoxelEdgeData::EdgeData &x)
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void dilateActiveValues (TreeType &tree, int iterations=1, NearestNeighbors nn=NN_FACE, TilePolicy mode=PRESERVE_TILES)
 Topologically dilate all active values (i.e. both voxels and tiles) in a tree using one of three nearest neighbor connectivity patterns. More...
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void dilateActiveValues (tree::LeafManager< TreeType > &manager, int iterations=1, NearestNeighbors nn=NN_FACE, TilePolicy mode=PRESERVE_TILES)
 Topologically dilate all active values (i.e. both voxels and tiles) in a tree using one of three nearest neighbor connectivity patterns. More...
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void dilateVoxels (TreeType &tree, int iterations=1, NearestNeighbors nn=NN_FACE)
 Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns. More...
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void dilateVoxels (tree::LeafManager< TreeType > &manager, int iterations=1, NearestNeighbors nn=NN_FACE)
 Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns. More...
 
template<typename GridOrTree >
void activate (GridOrTree &, const typename GridOrTree::ValueType &value, const typename GridOrTree::ValueType &tolerance=zeroVal< typename GridOrTree::ValueType >())
 Mark as active any inactive tiles or voxels in the given grid or tree whose values are equal to value (optionally to within the given tolerance). More...
 
template<typename GridOrTree >
void deactivate (GridOrTree &, const typename GridOrTree::ValueType &value, const typename GridOrTree::ValueType &tolerance=zeroVal< typename GridOrTree::ValueType >())
 Mark as inactive any active tiles or voxels in the given grid or tree whose values are equal to value (optionally to within the given tolerance). More...
 
template<typename GridT , typename PointArrayT >
GridT::Ptr createPointIndexGrid (const PointArrayT &points, double voxelSize)
 Partition points into a point index grid to accelerate range and nearest-neighbor searches. More...
 
template<typename GridT , typename PointArrayT >
GridT::Ptr createPointIndexGrid (const PointArrayT &points, const math::Transform &xform)
 Partition points into a point index grid to accelerate range and nearest-neighbor searches. More...
 
template<typename PointArrayT , typename GridT >
bool isValidPartition (const PointArrayT &points, const GridT &grid)
 Return true if the given point index grid represents a valid partitioning of the given point array. More...
 
template<typename GridT , typename PointArrayT >
GridT::ConstPtr getValidPointIndexGrid (const PointArrayT &points, const typename GridT::ConstPtr &grid)
 Repartition the points if needed, otherwise return the input grid. More...
 
template<typename GridT , typename PointArrayT >
GridT::Ptr getValidPointIndexGrid (const PointArrayT &points, const typename GridT::Ptr &grid)
 Repartition the points if needed, otherwise return the input grid. More...
 
template<typename PointListT , typename GridT >
void maskPoints (const PointListT &points, GridT &grid)
 Makes every voxel of the grid active if it contains a point. More...
 
template<typename PointListT >
MaskGrid::Ptr createPointMask (const PointListT &points, const math::Transform &xform)
 Return a MaskGrid where each binary voxel value is on if the voxel contains one (or more) points (i.e. the 3D position of a point is closer to this voxel than any other voxels). More...
 
template<typename GridT , typename MaskT = typename GridT::template ValueConverter<ValueMask>::Type>
MaskT::Ptr createPotentialFlowMask (const GridT &grid, int dilation=5)
 Construct a mask for the Potential Flow domain. More...
 
template<typename Vec3T , typename GridT , typename MaskT >
GridT::template ValueConverter
< Vec3T >::Type::Ptr 
createPotentialFlowNeumannVelocities (const GridT &collider, const MaskT &domain, const typename GridT::template ValueConverter< Vec3T >::Type::ConstPtr boundaryVelocity, const Vec3T &backgroundVelocity)
 Create a Potential Flow velocities grid for the Neumann boundary. More...
 
template<typename Vec3GridT , typename MaskT , typename InterrupterT = util::NullInterrupter>
VectorToScalarGrid< Vec3GridT >
::Ptr 
computeScalarPotential (const MaskT &domain, const Vec3GridT &neumann, math::pcg::State &state, InterrupterT *interrupter=nullptr)
 Compute the Potential on the domain using the Neumann boundary conditions on solid boundaries. More...
 
template<typename Vec3GridT >
Vec3GridT::Ptr computePotentialFlow (const typename VectorToScalarGrid< Vec3GridT >::Type &potential, const Vec3GridT &neumann, const typename Vec3GridT::ValueType backgroundVelocity=zeroVal< typename Vec3GridT::TreeType::ValueType >())
 Compute a vector Flow Field comprising the gradient of the potential with Neumann boundary conditions applied. More...
 
template<typename TreeT >
void prune (TreeT &tree, typename TreeT::ValueType tolerance=zeroVal< typename TreeT::ValueType >(), bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing with tiles any nodes whose values are all the same (optionally to within a tolerance) and have the same active state. More...
 
template<typename TreeT >
void pruneTiles (TreeT &tree, typename TreeT::ValueType tolerance=zeroVal< typename TreeT::ValueType >(), bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing with tiles any non-leaf nodes whose values are all the same (optionally to within a tolerance) and have the same active state. More...
 
template<typename TreeT >
void pruneInactive (TreeT &tree, bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing with background tiles any nodes whose values are all inactive. More...
 
template<typename TreeT >
void pruneInactiveWithValue (TreeT &tree, const typename TreeT::ValueType &value, bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing any nodes whose values are all inactive with tiles of the given value. More...
 
template<typename TreeT >
void pruneLevelSet (TreeT &tree, bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing nodes whose values are all inactive with inactive tiles having a value equal to the first value encountered in the (inactive) child. More...
 
template<typename TreeT >
void pruneLevelSet (TreeT &tree, const typename TreeT::ValueType &outsideWidth, const typename TreeT::ValueType &insideWidth, bool threaded=true, size_t grainSize=1)
 Reduce the memory footprint of a tree by replacing nodes whose voxel values are all inactive with inactive tiles having the value -| insideWidth | if the voxel values are negative and | outsideWidth | otherwise. More...
 
template<typename GridT >
void rayTrace (const GridT &, const BaseShader &, BaseCamera &, size_t pixelSamples=1, unsigned int seed=0, bool threaded=true)
 Ray-trace a volume. More...
 
template<typename GridT , typename IntersectorT >
void rayTrace (const GridT &, const IntersectorT &, const BaseShader &, BaseCamera &, size_t pixelSamples=1, unsigned int seed=0, bool threaded=true)
 Ray-trace a volume using a given ray intersector. More...
 
template<typename TreeOrLeafManagerT >
void signedFloodFill (TreeOrLeafManagerT &tree, bool threaded=true, size_t grainSize=1, Index minLevel=0)
 Set the values of all inactive voxels and tiles of a narrow-band level set from the signs of the active voxels, setting outside values to +background and inside values to -background. More...
 
template<typename TreeOrLeafManagerT >
void signedFloodFillWithValues (TreeOrLeafManagerT &tree, const typename TreeOrLeafManagerT::ValueType &outsideWidth, const typename TreeOrLeafManagerT::ValueType &insideWidth, bool threaded=true, size_t grainSize=1, Index minLevel=0)
 Set the values of all inactive voxels and tiles of a narrow-band level set from the signs of the active voxels, setting exterior values to outsideWidth and interior values to insideWidth. Set the background value of this tree to outsideWidth. More...
 
template<typename IterT >
math::Histogram histogram (const IterT &iter, double minVal, double maxVal, size_t numBins=10, bool threaded=true)
 Iterate over a scalar grid and compute a histogram of the values of the voxels that are visited, or iterate over a vector-valued grid and compute a histogram of the magnitudes of the vectors. More...
 
template<typename IterT >
math::Extrema extrema (const IterT &iter, bool threaded=true)
 Iterate over a scalar grid and compute extrema (min/max) of the values of the voxels that are visited, or iterate over a vector-valued grid and compute extrema of the magnitudes of the vectors. More...
 
template<typename IterT >
math::Stats statistics (const IterT &iter, bool threaded=true)
 Iterate over a scalar grid and compute statistics (mean, variance, etc.) of the values of the voxels that are visited, or iterate over a vector-valued grid and compute statistics of the magnitudes of the vectors. More...
 
template<typename IterT , typename ValueOp >
math::Extrema extrema (const IterT &iter, const ValueOp &op, bool threaded)
 Iterate over a grid and compute extrema (min/max) of the values produced by applying the given functor at each voxel that is visited. More...
 
template<typename IterT , typename ValueOp >
math::Stats statistics (const IterT &iter, const ValueOp &op, bool threaded)
 Iterate over a grid and compute statistics (mean, variance, etc.) of the values produced by applying the given functor at each voxel that is visited. More...
 
template<typename OperatorT , typename IterT >
math::Stats opStatistics (const IterT &iter, const OperatorT &op=OperatorT(), bool threaded=true)
 Iterate over a grid and compute statistics (mean, variance, etc.) of the values produced by applying a given operator (see math/Operators.h) at each voxel that is visited. More...
 
template<typename OperatorT , typename IterT >
math::Extrema opExtrema (const IterT &iter, const OperatorT &op=OperatorT(), bool threaded=true)
 Same as opStatistics except it returns a math::Extrema vs a math::Stats. More...
 
template<typename GridT >
GridT::template ValueConverter
< float >::Type::Ptr 
topologyToLevelSet (const GridT &grid, int halfWidth=3, int closingSteps=1, int dilation=0, int smoothingSteps=0)
 Compute the narrow-band signed distance to the interface between active and inactive voxels in the input grid. More...
 
template<typename GridT , typename InterrupterT >
GridT::template ValueConverter
< float >::Type::Ptr 
topologyToLevelSet (const GridT &grid, int halfWidth=3, int closingSteps=1, int dilation=0, int smoothingSteps=0, InterrupterT *interrupt=NULL)
 Compute the narrow-band signed distance to the interface between active and inactive voxels in the input grid. More...
 
template<typename IterT , typename XformOp >
void foreach (const IterT &iter, XformOp &op, bool threaded=true, bool shareOp=true)
 
template<typename IterT , typename XformOp >
void foreach (const IterT &iter, const XformOp &op, bool threaded=true, bool shareOp=true)
 
template<typename InIterT , typename OutGridT , typename XformOp >
void transformValues (const InIterT &inIter, OutGridT &outGrid, XformOp &op, bool threaded=true, bool shareOp=true, MergePolicy merge=MERGE_ACTIVE_STATES)
 
template<typename InIterT , typename OutGridT , typename XformOp >
void transformValues (const InIterT &inIter, OutGridT &outGrid, const XformOp &op, bool threaded=true, bool shareOp=true, MergePolicy merge=MERGE_ACTIVE_STATES)
 
template<typename IterT , typename XformOp >
void accumulate (const IterT &iter, XformOp &op, bool threaded=true)
 
template<typename TreeT >
void setValueOnMin (TreeT &tree, const Coord &xyz, const typename TreeT::ValueType &value)
 Set the value of the voxel at the given coordinates in tree to the minimum of its current value and value, and mark the voxel as active. More...
 
template<typename TreeT >
void setValueOnMax (TreeT &tree, const Coord &xyz, const typename TreeT::ValueType &value)
 Set the value of the voxel at the given coordinates in tree to the maximum of its current value and value, and mark the voxel as active. More...
 
template<typename TreeT >
void setValueOnSum (TreeT &tree, const Coord &xyz, const typename TreeT::ValueType &value)
 Set the value of the voxel at the given coordinates in tree to the sum of its current value and value, and mark the voxel as active. More...
 
template<typename TreeT >
void setValueOnMult (TreeT &tree, const Coord &xyz, const typename TreeT::ValueType &value)
 Set the value of the voxel at the given coordinates in tree to the product of its current value and value, and mark the voxel as active. More...
 
template<typename GridType >
void transformVectors (GridType &, const Mat4d &)
 Apply an affine transform to the voxel values of a vector-valued grid in accordance with the grid's vector type (covariant, contravariant, etc.). More...
 
template<typename GridType >
void volumeToMesh (const GridType &grid, std::vector< Vec3s > &points, std::vector< Vec4I > &quads, double isovalue=0.0)
 Uniformly mesh any scalar grid that has a continuous isosurface. More...
 
template<typename GridType >
void volumeToMesh (const GridType &grid, std::vector< Vec3s > &points, std::vector< Vec3I > &triangles, std::vector< Vec4I > &quads, double isovalue=0.0, double adaptivity=0.0, bool relaxDisorientedTriangles=true)
 Adaptively mesh any scalar grid that has a continuous isosurface. More...
 
Vec3d findFeaturePoint (const std::vector< Vec3d > &points, const std::vector< Vec3d > &normals)
 Given a set of tangent elements, points with corresponding normals, this method returns the intersection point of all tangent elements. More...
 
template<typename GridT , typename InterrupterT = util::NullInterrupter>
void fillWithSpheres (const GridT &grid, std::vector< openvdb::Vec4s > &spheres, const Vec2i &sphereCount=Vec2i(1, 50), bool overlapping=false, float minRadius=1.0, float maxRadius=std::numeric_limits< float >::max(), float isovalue=0.0, int instanceCount=10000, InterrupterT *interrupter=nullptr)
 Fill a closed level set or fog volume with adaptively-sized spheres. More...
 
template<typename GridT , typename InterrupterT = util::NullInterrupter>
OPENVDB_DEPRECATED void fillWithSpheres (const GridT &grid, std::vector< openvdb::Vec4s > &spheres, int maxSphereCount, bool overlapping=false, float minRadius=1.0, float maxRadius=std::numeric_limits< float >::max(), float isovalue=0.0, int instanceCount=10000, InterrupterT *interrupter=nullptr)
 
template<typename GridT , typename InterrupterT >
void fillWithSpheres (const GridT &grid, std::vector< openvdb::Vec4s > &spheres, int maxSphereCount, bool overlapping, float minRadius, float maxRadius, float isovalue, int instanceCount, InterrupterT *interrupter)
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void erodeVoxels (TreeType &tree, int iterations=1, NearestNeighbors nn=NN_FACE)
 Topologically erode all leaf-level active voxels in the given tree. More...
 
template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void erodeVoxels (tree::LeafManager< TreeType > &manager, int iterations=1, NearestNeighbors nn=NN_FACE)
 Topologically erode all leaf-level active voxels in the given tree. More...
 

Typedef Documentation

Point index grid.

Definition at line 86 of file PointIndexGrid.h.

Point index tree configured to match the default OpenVDB tree configuration.

Definition at line 83 of file PointIndexGrid.h.

using openvdb::OPENVDB_VERSION_NAME::tools::PointList = typedef hboost::scoped_array<openvdb::Vec3s>

Point and primitive list types.

Definition at line 179 of file VolumeToMesh.h.

Point and primitive list types.

Definition at line 180 of file VolumeToMesh.h.

Enumeration Type Documentation

anonymous enum

Polygon flags, used for reference based meshing.

Enumerator
POLYFLAG_EXTERIOR 
POLYFLAG_FRACTURE_SEAM 
POLYFLAG_SUBDIVIDED 

Definition at line 117 of file VolumeToMesh.h.

We currrently support the following operations when compositing sparse data into a dense grid.

Enumerator
DS_OVER 
DS_ADD 
DS_SUB 
DS_MIN 
DS_MAX 
DS_MULT 
DS_SET 

Definition at line 173 of file DenseSparseTools.h.

We currently support the following two 3D memory layouts for dense volumes: XYZ, i.e. x is the fastest moving index, and ZYX, i.e. z is the fastest moving index. The ZYX memory layout leads to nested for-loops of the order x, y, z, which we find to be the most intuitive. Hence, ZYX is the layout used throughout VDB. However, other data structures, e.g. Houdini and Maya, employ the XYZ layout. Clearly a dense volume with the ZYX layout converts more efficiently to a VDB, but we support both for convenience.

Enumerator
LayoutXYZ 
LayoutZYX 

Definition at line 95 of file Dense.h.

Mesh to volume conversion flags.

Enumerator
UNSIGNED_DISTANCE_FIELD 

Switch from the default signed distance field conversion that classifies regions as either inside or outside the mesh boundary to a unsigned distance field conversion that only computes distance values. This conversion type does not require a closed watertight mesh.

DISABLE_INTERSECTING_VOXEL_REMOVAL 

Disable the cleanup step that removes voxels created by self intersecting portions of the mesh.

DISABLE_RENORMALIZATION 

Disable the distance renormalization step that smooths out bumps caused by self intersecting or overlapping portions of the mesh

DISABLE_NARROW_BAND_TRIMMING 

Disable the cleanup step that removes active voxels that exceed the narrow band limits. (Only relevant for small limits)

Definition at line 88 of file MeshToVolume.h.

Voxel topology of nearest neighbors.

NN_FACE

face adjacency (6 nearest neighbors, defined as all neighbor voxels connected along one of the primary axes)

NN_FACE_EDGE

face and edge adjacency (18 nearest neighbors, defined as all neighbor voxels connected along either one or two of the primary axes)

NN_FACE_EDGE_VERTEX
face, edge and vertex adjacency (26 nearest neighbors, defined as all neighbor voxels connected along either one, two or all three of the primary axes)
Enumerator
NN_FACE 
NN_FACE_EDGE 
NN_FACE_EDGE_VERTEX 

Definition at line 85 of file Morphology.h.

Different policies when dilating trees with active tiles.

IGNORE_TILES

Active tiles are ignores, i.e. only active voxels are dilates.

EXPAND_TILES

Active tiles are expanded into active voxels and then dilated.

PRESERVE_TILES
Active tiles remain unchanged but they still contribute to the dilation as if they were active voxels.
Enumerator
IGNORE_TILES 
EXPAND_TILES 
PRESERVE_TILES 

Definition at line 100 of file Morphology.h.

Function Documentation

MeshToVoxelEdgeData::EdgeData openvdb::OPENVDB_VERSION_NAME::tools::Abs ( const MeshToVoxelEdgeData::EdgeData &  x)
inline

Definition at line 3673 of file MeshToVolume.h.

template<typename IterT , typename XformOp >
void openvdb::OPENVDB_VERSION_NAME::tools::accumulate ( const IterT &  iter,
XformOp &  op,
bool  threaded = true 
)
inline

Iterate over a grid and at each step call op(iter). If threading is enabled, call op.join(otherOp) to accumulate intermediate results from pairs of threads.

Parameters
iteran iterator over a grid or its tree (Grid::ValueOnCIter, Tree::NodeIter, etc.)
opa functor with a join method of the form void join(XformOp&) and a call method of the form void op(const IterT&), where IterT is the type of iter
threadedif true, transform multiple values of the grid in parallel
Note
If threaded is true, each thread gets its own copy of the original functor. The order in which threads are joined is unspecified.
If threaded is false, the join method is never called.
Example:
Compute the average of the active values of a scalar, floating-point grid using the math::Stats class.
namespace {
struct Average {
math::Stats stats;
// Accumulate voxel and tile values into this functor's Stats object.
inline void operator()(const FloatGrid::ValueOnCIter& iter) {
if (iter.isVoxelValue()) stats.add(*iter);
else stats.add(*iter, iter.getVoxelCount());
}
// Accumulate another functor's Stats object into this functor's.
inline void join(Average& other) { stats.add(other.stats); }
// Return the cumulative result.
inline double average() const { return stats.mean(); }
};
}
{
FloatGrid grid = ...;
Average op;
tools::accumulate(grid.cbeginValueOn(), op);
double average = op.average();
}
Note
For more complex operations that require finer control over threading, consider using tbb::parallel_for() or tbb::parallel_reduce() in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.

Definition at line 702 of file ValueTransformer.h.

template<typename GridOrTree >
void openvdb::OPENVDB_VERSION_NAME::tools::activate ( GridOrTree &  gridOrTree,
const typename GridOrTree::ValueType &  value,
const typename GridOrTree::ValueType &  tolerance = zeroVal<typename GridOrTree::ValueType>() 
)
inline

Mark as active any inactive tiles or voxels in the given grid or tree whose values are equal to value (optionally to within the given tolerance).

Definition at line 947 of file Morphology.h.

template<typename TreeOrLeafManagerT >
void openvdb::OPENVDB_VERSION_NAME::tools::changeAsymmetricLevelSetBackground ( TreeOrLeafManagerT &  tree,
const typename TreeOrLeafManagerT::ValueType &  outsideWidth,
const typename TreeOrLeafManagerT::ValueType &  insideWidth,
bool  threaded = true,
size_t  grainSize = 32 
)
inline

Replace the background values in all the nodes of a floating-point tree containing a possibly asymmetric narrow-band level set.

All inactive values will be set to +| outsideWidth | if outside and -| insideWidth | if inside, where outsideWidth is the outside width of the narrow band and insideWidth is its inside width.

Note
This method is faster than changeBackground since it does not perform tests to see if inactive values are equal to the old background value.
If a LeafManager is used the cached leaf nodes are reused, resulting in slightly better overall performance.
Parameters
treeTree (or LeafManager) that will have its background value changed
outsideWidthThe width of the outside of the narrow band
insideWidthThe width of the inside of the narrow band
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 32)
Exceptions
ValueErrorif outsideWidth is negative or insideWidth is not negative (as defined by math::isNegative)

Definition at line 244 of file ChangeBackground.h.

template<typename TreeOrLeafManagerT >
void openvdb::OPENVDB_VERSION_NAME::tools::changeBackground ( TreeOrLeafManagerT &  tree,
const typename TreeOrLeafManagerT::ValueType &  background,
bool  threaded = true,
size_t  grainSize = 32 
)
inline

Replace the background value in all the nodes of a tree.

The sign of the background value is preserved, and only inactive values equal to the old background value are replaced.

Note
If a LeafManager is used the cached leaf nodes are reused, resulting in slightly better overall performance.
Parameters
treeTree (or LeafManager) that will have its background value changed
backgroundthe new background value
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 32)

Definition at line 230 of file ChangeBackground.h.

template<typename TreeOrLeafManagerT >
void openvdb::OPENVDB_VERSION_NAME::tools::changeLevelSetBackground ( TreeOrLeafManagerT &  tree,
const typename TreeOrLeafManagerT::ValueType &  halfWidth,
bool  threaded = true,
size_t  grainSize = 32 
)
inline

Replace the background value in all the nodes of a floating-point tree containing a symmetric narrow-band level set.

All inactive values will be set to +| halfWidth | if outside and -| halfWidth | if inside, where halfWidth is half the width of the symmetric narrow band.

Note
This method is faster than changeBackground since it does not perform tests to see if inactive values are equal to the old background value.
If a LeafManager is used the cached leaf nodes are reused, resulting in slightly better overall performance.
Parameters
treeTree (or LeafManager) that will have its background value changed
halfWidthhalf of the width of the symmetric narrow band
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 32)
Exceptions
ValueErrorif halfWidth is negative (as defined by math::isNegative)

Definition at line 260 of file ChangeBackground.h.

template<class GridType >
std::string openvdb::OPENVDB_VERSION_NAME::tools::checkFogVolume ( const GridType &  grid,
size_t  number = 6 
)

Perform checks on a grid to see if it is a valid fog volume.

Parameters
gridGrid to be checked
numberNumber of the checks to be performed (see below)
Returns
string with a message indicating the nature of the issue. If no issue is detected the return string is empty.

number refers to the following ordered list of checks - always starting from the top. Fast checks 1: value type is floating point 2: has FOG volume class type 3: background value is zero

Slower checks 4: all the values are finite, i.e not NaN or infinite 5: inactive values are zero 6: active values are in the range [0,1]

Definition at line 1110 of file Diagnostics.h.

template<class GridType >
std::string openvdb::OPENVDB_VERSION_NAME::tools::checkLevelSet ( const GridType &  grid,
size_t  number = 9 
)

Perform checks on a grid to see if it is a valid symmetric, narrow-band level set.

Parameters
gridGrid to be checked
numberNumber of the checks to be performed (see below)
Returns
string with a message indicating the nature of the issue. If no issue is detected the return string is empty.

number refers to the following ordered list of checks - always starting from the top. Fast checks 1: value type is floating point 2: has level set class type 3: has uniform scale 4: background value is positive and n*dx

Slower checks 5: no active tiles 6: all the values are finite, i.e not NaN or infinite 7: active values in range between +-background 8: abs of inactive values = background, i.e. assuming a symmetric narrow band!

Relatively slow check (however multithreaded) 9: norm gradient is close to one, i.e. satisfied the Eikonal equation.

Definition at line 974 of file Diagnostics.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::clip ( const GridType &  grid,
const BBoxd &  bbox,
bool  keepInterior = true 
)
inline

Clip the given grid against a world-space bounding box and return a new grid containing the result.

Parameters
gridthe grid to be clipped
bboxa world-space bounding box
keepInteriorif true, discard voxels that lie outside the bounding box; if false, discard voxels that lie inside the bounding box
Warning
Clipping a level set will likely produce a grid that is no longer a valid level set.

Definition at line 375 of file Clip.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::clip ( const GridType &  grid,
const math::NonlinearFrustumMap &  frustum,
bool  keepInterior = true 
)
inline

Clip the given grid against a frustum and return a new grid containing the result.

Parameters
gridthe grid to be clipped
frustuma frustum map
keepInteriorif true, discard voxels that lie outside the frustum; if false, discard voxels that lie inside the frustum
Warning
Clipping a level set will likely produce a grid that is no longer a valid level set.

Definition at line 427 of file Clip.h.

template<typename GridType , typename MaskTreeType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::clip ( const GridType &  grid,
const Grid< MaskTreeType > &  mask,
bool  keepInterior = true 
)
inline

Clip a grid against the active voxels of another grid and return a new grid containing the result.

Parameters
gridthe grid to be clipped
maska grid whose active voxels form a boolean clipping mask
keepInteriorif true, discard voxels that do not intersect the mask; if false, discard voxels that intersect the mask

The mask grid need not have the same transform as the source grid. Also, if the mask grid is a level set, consider using tools::sdfInteriorMask to construct a new mask comprising the interior (rather than the narrow band) of the level set.

Warning
Clipping a level set will likely produce a grid that is no longer a valid level set.
template<typename TreeT , typename OpT = composite::CopyOp<TreeT>>
void openvdb::OPENVDB_VERSION_NAME::tools::compActiveLeafVoxels ( TreeT &  srcTree,
TreeT &  dstTree,
OpT  op = composite::CopyOp<TreeT>() 
)
inline

Composite the active values in leaf nodes, i.e. active voxels, of a source tree into a destination tree.

Parameters
srcTreesource tree from which active voxels are composited.
dstTreedestination tree into which active voxels are composited.
opa functor of the form void op(T& dst, const T& src), where T is the ValueType of the tree, that composites a source value into a destination value. By default it copies the value from src to dst.

All active voxels in the source tree will be active in the destination tree, and their value is determined by a use-defined functor (OpT op) that operates on the source and destination values. The only exception is when the tree type is MaskTree, in which case no functor is needed since by defintion a MaskTree has no values (only topology).

Warning
This function only operated on leaf node values, i.e. tile values are ignored.

Definition at line 1245 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compDiv ( GridOrTreeT &  a,
GridOrTreeT &  b 
)
inline

Given grids A and B, compute a / b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty.

Definition at line 810 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compMax ( GridOrTreeT &  a,
GridOrTreeT &  b 
)
inline

Given grids A and B, compute max(a, b) per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty.

Definition at line 748 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compMin ( GridOrTreeT &  a,
GridOrTreeT &  b 
)
inline

Given grids A and B, compute min(a, b) per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty.

Definition at line 764 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compMul ( GridOrTreeT &  a,
GridOrTreeT &  b 
)
inline

Given grids A and B, compute a * b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty.

Definition at line 795 of file Composite.h.

template<DSCompositeOp , typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::compositeToDense ( Dense< typename TreeT::ValueType, LayoutZYX > &  dense,
const TreeT &  source,
const TreeT &  alpha,
const typename TreeT::ValueType  beta,
const typename TreeT::ValueType  strength,
bool  threaded = true 
)

Composite data from a sparse tree into a dense array of the same value type.

Parameters
denseDense grid to be altered by the operation
sourceSparse data to composite into dense
alphaSparse Alpha mask used in compositing operations.
betaConstant multiplier on src
strengthConstant multiplier on alpha
threadedEnable threading for this operation.

Definition at line 1225 of file DenseSparseTools.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compReplace ( GridOrTreeT &  a,
const GridOrTreeT &  b 
)
inline

Copy the active voxels of B into A.

Definition at line 855 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::compSum ( GridOrTreeT &  a,
GridOrTreeT &  b 
)
inline

Given grids A and B, compute a + b per voxel (using sparse traversal). Store the result in the A grid and leave the B grid empty.

Definition at line 780 of file Composite.h.

template<typename Vec3GridT >
Vec3GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::computePotentialFlow ( const typename VectorToScalarGrid< Vec3GridT >::Type &  potential,
const Vec3GridT &  neumann,
const typename Vec3GridT::ValueType  backgroundVelocity = zeroVal<typename Vec3GridT::TreeType::ValueType>() 
)
inline

Compute a vector Flow Field comprising the gradient of the potential with Neumann boundary conditions applied.

Parameters
potentialscalar potential, typically computed from computeScalarPotential()
neumannthe topology of this grid defines where the solid boundaries are and grid values give the Neumann boundaries that should be applied there
backgroundVelocitya background velocity value

Definition at line 359 of file PotentialFlow.h.

template<typename Vec3GridT , typename MaskT , typename InterrupterT = util::NullInterrupter>
VectorToScalarGrid< Vec3GridT >::Ptr openvdb::OPENVDB_VERSION_NAME::tools::computeScalarPotential ( const MaskT &  domain,
const Vec3GridT &  neumann,
math::pcg::State &  state,
InterrupterT *  interrupter = nullptr 
)
inline

Compute the Potential on the domain using the Neumann boundary conditions on solid boundaries.

Parameters
domaina mask to represent the domain in which to perform the solve
neumannthe topology of this grid defines where the solid boundaries are and grid values give the Neumann boundaries that should be applied there
statethe solver parameters for computing the solution
interrupterpointer to an optional interrupter adhering to the util::NullInterrupter interface

On input, the State object should specify convergence criteria (minimum error and maximum number of iterations); on output, it gives the actual termination conditions.

Definition at line 329 of file PotentialFlow.h.

template<typename DenseT , typename GridOrTreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::copyFromDense ( const DenseT &  dense,
GridOrTreeT &  sparse,
const typename GridOrTreeT::ValueType &  tolerance,
bool  serial = false 
)

Populate a sparse grid with the values of all of the voxels of a dense grid.

Parameters
densethe dense grid from which to copy values
sparsean OpenVDB grid or tree into which to copy values
tolerancevalues in the dense grid that are within this tolerance of the sparse grid's background value become inactive background voxels or tiles in the sparse grid
serialif false, process voxels in parallel

Definition at line 595 of file Dense.h.

template<typename DenseT , typename GridOrTreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::copyToDense ( const GridOrTreeT &  sparse,
DenseT &  dense,
bool  serial = false 
)

Populate a dense grid with the values of voxels from a sparse grid, where the sparse grid intersects the dense grid.

Parameters
sparsean OpenVDB grid or tree from which to copy values
densethe dense grid into which to copy values
serialif false, process voxels in parallel

Definition at line 448 of file Dense.h.

template<typename GridType , typename InterruptT >
ScalarToVectorConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::cpt ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the Closest-Point Transform (CPT) from a distance field.

Returns
a new vector-valued grid with the same numerical precision as the input grid (for example, if the input grid is a DoubleGrid, the output grid will be a Vec3DGrid)

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 974 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
ScalarToVectorConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::cpt ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 982 of file GridOperators.h.

template<typename GridType >
ScalarToVectorConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::cpt ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 88 of file GridOperators.h.

template<typename GridType , typename MaskT >
ScalarToVectorConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::cpt ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 95 of file GridOperators.h.

template<typename GridType , typename VecType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetBox ( const math::BBox< VecType > &  bbox,
const openvdb::math::Transform &  xform,
typename VecType::ValueType  halfWidth = LEVEL_SET_HALF_WIDTH 
)
inline

Return a grid of type GridType containing a narrow-band level set representation of a box.

Parameters
bboxa bounding box in world units
xformworld-to-index-space transform
halfWidthhalf the width of the narrow band, in voxel units

Definition at line 4171 of file MeshToVolume.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetCube ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of a cube.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 167 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetCube ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of a cube.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 188 of file LevelSetPlatonic.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetDodecahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of a dodecahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 257 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetDodecahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of a dodecahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 278 of file LevelSetPlatonic.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetIcosahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of an icosahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 302 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetIcosahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of an icosahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 323 of file LevelSetPlatonic.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetOctahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of an octahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 212 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetOctahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of an octahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 233 of file LevelSetPlatonic.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetPlatonic ( int  faceCount,
float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of a platonic solid.

Parameters
faceCountnumber of faces of the platonic solid, i.e. 4, 6, 8, 12 or 20
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface

Faces: TETRAHEDRON=4, CUBE=6, OCTAHEDRON=8, DODECAHEDRON=12, ICOSAHEDRON=20

Note
GridType::ValueType must be a floating-point scalar.

Definition at line 337 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetPlatonic ( int  faceCount,
float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of a platonic solid.

Parameters
faceCountnumber of faces of the platonic solid, i.e. 4, 6, 8, 12 or 20
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units

Faces: TETRAHEDRON=4, CUBE=6, OCTAHEDRON=8, DODECAHEDRON=12, ICOSAHEDRON=20

Note
GridType::ValueType must be a floating-point scalar.

Definition at line 96 of file LevelSetPlatonic.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetSphere ( float  radius,
const openvdb::Vec3f &  center,
float  voxelSize,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of a sphere.

Parameters
radiusradius of the sphere in world units
centercenter of the sphere in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.
The leapfrog algorithm employed in this method is best suited for a single large sphere. For multiple small spheres consider using the faster algorithm in ParticlesToLevelSet.h

Definition at line 204 of file LevelSetSphere.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetSphere ( float  radius,
const openvdb::Vec3f &  center,
float  voxelSize,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of a sphere.

Parameters
radiusradius of the sphere in world units
centercenter of the sphere in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.
The leapfrog algorithm employed in this method is best suited for a single large sphere. For multiple small spheres consider using the faster algorithm in ParticlesToLevelSet.h

Definition at line 87 of file LevelSetSphere.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetTetrahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
InterruptT *  interrupt = nullptr 
)

Return a grid of type GridType containing a narrow-band level set representation of a tetrahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
interrupta pointer adhering to the util::NullInterrupter interface
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 121 of file LevelSetPlatonic.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createLevelSetTetrahedron ( float  scale = 1.0f,
const Vec3f &  center = Vec3f(0.0f),
float  voxelSize = 0.1f,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)

Return a grid of type GridType containing a narrow-band level set representation of a tetrahedron.

Parameters
scalescale of the platonic solid in world units
centercenter of the platonic solid in world units
voxelSizevoxel size in world units
halfWidthhalf the width of the narrow band, in voxel units
Note
GridType::ValueType must be a floating-point scalar.

Definition at line 143 of file LevelSetPlatonic.h.

template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPointIndexGrid ( const PointArrayT &  points,
double  voxelSize 
)
inline

Partition points into a point index grid to accelerate range and nearest-neighbor searches.

Parameters
pointsworld-space point array conforming to the PointArray interface
voxelSizevoxel size in world units

Definition at line 1319 of file PointIndexGrid.h.

template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPointIndexGrid ( const PointArrayT &  points,
const math::Transform &  xform 
)
inline

Partition points into a point index grid to accelerate range and nearest-neighbor searches.

Parameters
pointsworld-space point array conforming to the PointArray interface
xformworld-to-index-space transform

Definition at line 1303 of file PointIndexGrid.h.

template<typename PointListT >
MaskGrid::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPointMask ( const PointListT &  points,
const math::Transform &  xform 
)
inline

Return a MaskGrid where each binary voxel value is on if the voxel contains one (or more) points (i.e. the 3D position of a point is closer to this voxel than any other voxels).

Parameters
pointspoints that active the voxels in the returned grid.
xformtransform from world space to voxels in grid space.

Definition at line 117 of file PointsToMask.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<ValueMask>::Type>
MaskT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPotentialFlowMask ( const GridT &  grid,
int  dilation = 5 
)
inline

Construct a mask for the Potential Flow domain.

For a level set, this represents a rebuilt exterior narrow band. For any other grid it is a new region that surrounds the active voxels.

Parameters
gridsource grid to use for computing the mask
dilationdilation in voxels of the source grid to form the new potential flow mask

Definition at line 239 of file PotentialFlow.h.

template<typename Vec3T , typename GridT , typename MaskT >
GridT::template ValueConverter< Vec3T >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPotentialFlowNeumannVelocities ( const GridT &  collider,
const MaskT &  domain,
const typename GridT::template ValueConverter< Vec3T >::Type::ConstPtr  boundaryVelocity,
const Vec3T &  backgroundVelocity 
)
inline

Create a Potential Flow velocities grid for the Neumann boundary.

Parameters
collidera level set that represents the boundary
domaina mask to represent the potential flow domain
boundaryVelocityan optional grid pointer to stores the velocities of the boundary
backgroundVelocitya background velocity value

Typically this method involves supplying a velocity grid for the collider boundary, however it can also be used for a global wind field around the collider by supplying an empty boundary Velocity and a non-zero background velocity.

Definition at line 265 of file PotentialFlow.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::csgDifference ( GridOrTreeT &  a,
GridOrTreeT &  b,
bool  prune = true 
)
inline

Given two level set grids, replace the A grid with the difference A / B.

Exceptions
ValueErrorif the background value of either grid is not greater than zero.
Note
This operation always leaves the B grid empty.

Definition at line 1169 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION GridOrTreeT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::csgDifferenceCopy ( const GridOrTreeT &  a,
const GridOrTreeT &  b 
)
inline

Threaded CSG difference operation that produces a new grid or tree from immutable inputs.

Returns
The CSG difference of the and level set inputs.

Definition at line 1210 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::csgIntersection ( GridOrTreeT &  a,
GridOrTreeT &  b,
bool  prune = true 
)
inline

Given two level set grids, replace the A grid with the intersection of A and B.

Exceptions
ValueErrorif the background value of either grid is not greater than zero.
Note
This operation always leaves the B grid empty.

Definition at line 1157 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION GridOrTreeT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::csgIntersectionCopy ( const GridOrTreeT &  a,
const GridOrTreeT &  b 
)
inline

Threaded CSG intersection operation that produces a new grid or tree from immutable inputs.

Returns
The CSG intersection of the and level set inputs.

Definition at line 1196 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::csgUnion ( GridOrTreeT &  a,
GridOrTreeT &  b,
bool  prune = true 
)
inline

Given two level set grids, replace the A grid with the union of A and B.

Exceptions
ValueErrorif the background value of either grid is not greater than zero.
Note
This operation always leaves the B grid empty.

Definition at line 1145 of file Composite.h.

template<typename GridOrTreeT >
OPENVDB_STATIC_SPECIALIZATION GridOrTreeT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::csgUnionCopy ( const GridOrTreeT &  a,
const GridOrTreeT &  b 
)
inline

Threaded CSG union operation that produces a new grid or tree from immutable inputs.

Returns
The CSG union of the and level set inputs.

Definition at line 1182 of file Composite.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::curl ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the curl of the given vector-valued grid.

Returns
a new vector-valued grid

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 990 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::curl ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 998 of file GridOperators.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::curl ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 116 of file GridOperators.h.

template<typename GridType , typename MaskT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::curl ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 123 of file GridOperators.h.

template<typename GridOrTree >
void openvdb::OPENVDB_VERSION_NAME::tools::deactivate ( GridOrTree &  gridOrTree,
const typename GridOrTree::ValueType &  value,
const typename GridOrTree::ValueType &  tolerance = zeroVal<typename GridOrTree::ValueType>() 
)
inline

Mark as inactive any active tiles or voxels in the given grid or tree whose values are equal to value (optionally to within the given tolerance).

Definition at line 970 of file Morphology.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::dilateActiveValues ( TreeType &  tree,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE,
TilePolicy  mode = PRESERVE_TILES 
)
inline

Topologically dilate all active values (i.e. both voxels and tiles) in a tree using one of three nearest neighbor connectivity patterns.

Note
This method is fully multi-threaded and support active tiles!
Parameters
treetree to be dilated
iterationsnumber of iterations to apply the dilation
nnconnectivity pattern of the dilation: either face-adjacent (6 nearest neighbors), face- and edge-adjacent (18 nearest neighbors) or face-, edge- and vertex-adjacent (26 nearest neighbors).
modeDefined the policy for handling active tiles (see above for details)
Note
The values of any voxels are unchanged.

Definition at line 1079 of file Morphology.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::dilateActiveValues ( tree::LeafManager< TreeType > &  manager,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE,
TilePolicy  mode = PRESERVE_TILES 
)
inline

Topologically dilate all active values (i.e. both voxels and tiles) in a tree using one of three nearest neighbor connectivity patterns.

Warning
Unlike the method above this one takes a LeafManger, however (unlike dilateVoxels method below) it offers no performance advantage over the one that takes a tree. Its merely included for API compatability. The leaf nodes in the manger are updated after the dilation, which incurres a (very small) overhead.
Note
This method is fully multi-threaded and support active tiles!
Parameters
managerLeaf node manager for the tree to be dilated. On exit it is updated to include all the leaf nodes of the dilated tree.
iterationsnumber of iterations to apply the dilation
nnconnectivity pattern of the dilation: either face-adjacent (6 nearest neighbors), face- and edge-adjacent (18 nearest neighbors) or face-, edge- and vertex-adjacent (26 nearest neighbors).
modeDefined the policy for handling active tiles (see above for details)
Note
The values of any voxels are unchanged.

Definition at line 1086 of file Morphology.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::dilateVoxels ( TreeType &  tree,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE 
)
inline

Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns.

Warning
This method is NOT multi-threaded and ignores active tiles!
Parameters
treetree to be dilated
iterationsnumber of iterations to apply the dilation
nnconnectivity pattern of the dilation: either face-adjacent (6 nearest neighbors), face- and edge-adjacent (18 nearest neighbors) or face-, edge- and vertex-adjacent (26 nearest neighbors).
Note
The values of any voxels are unchanged.

Definition at line 858 of file Morphology.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::dilateVoxels ( tree::LeafManager< TreeType > &  manager,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE 
)
inline

Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns.

Warning
This method is NOT multi-threaded and ignores active tiles!
Parameters
managerLeafManager containing the tree to be dilated. On exit it is updated to include all the leaf nodes of the dilated tree.
iterationsnumber of iterations to apply the dilation
nnconnectivity pattern of the dilation: either face-adjacent (6 nearest neighbors), face- and edge-adjacent (18 nearest neighbors) or face-, edge- and vertex-adjacent (26 nearest neighbors).
Note
The values of any voxels are unchanged.

Definition at line 848 of file Morphology.h.

template<typename GridType , typename InterruptT >
VectorToScalarConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::divergence ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the divergence of the given vector-valued grid.

Returns
a new scalar-valued grid with the same numerical precision as the input grid (for example, if the input grid is a Vec3DGrid, the output grid will be a DoubleGrid)

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1006 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
VectorToScalarConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::divergence ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1015 of file GridOperators.h.

template<typename GridType >
VectorToScalarConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::divergence ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 145 of file GridOperators.h.

template<typename GridType , typename MaskT >
VectorToScalarConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::divergence ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 152 of file GridOperators.h.

template<typename Sampler , typename Interrupter , typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::doResampleToMatch ( const GridType &  inGrid,
GridType &  outGrid,
Interrupter &  interrupter 
)
inline

The normal entry points for resampling are the resampleToMatch() functions, which correctly handle level set grids under scaling and shearing. doResampleToMatch() is mainly for internal use but is typically faster for level sets, and correct provided that no scaling or shearing is needed.

Warning
Do not use this function to scale or shear a level set grid.

Definition at line 451 of file GridTransformer.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::erodeVoxels ( TreeType &  tree,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE 
)
inline

Topologically erode all leaf-level active voxels in the given tree.

That is, shrink the set of active voxels by iterations voxels in the +x, -x, +y, -y, +z and -z directions, but don't change the values of any voxels, only their active states.

Todo:
Currently operates only on leaf voxels; need to extend to tiles.

Definition at line 878 of file Morphology.h.

template<typename TreeType >
OPENVDB_STATIC_SPECIALIZATION void openvdb::OPENVDB_VERSION_NAME::tools::erodeVoxels ( tree::LeafManager< TreeType > &  manager,
int  iterations = 1,
NearestNeighbors  nn = NN_FACE 
)
inline

Topologically erode all leaf-level active voxels in the given tree.

That is, shrink the set of active voxels by iterations voxels in the +x, -x, +y, -y, +z and -z directions, but don't change the values of any voxels, only their active states.

Todo:
Currently operates only on leaf voxels; need to extend to tiles.

Definition at line 868 of file Morphology.h.

template<typename GridOrTreeType >
void openvdb::OPENVDB_VERSION_NAME::tools::extractActiveVoxelSegmentMasks ( const GridOrTreeType &  volume,
std::vector< typename GridOrTreeType::template ValueConverter< bool >::Type::Ptr > &  masks 
)
inline

Return a mask for each connected component of the given grid's active voxels.

Parameters
volumeInput grid or tree
masksOutput set of disjoint active topology masks sorted in descending order based on the active voxel count.

Definition at line 2364 of file LevelSetUtil.h.

template<typename GridOrTreeType >
GridOrTreeType::template ValueConverter< bool >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::extractEnclosedRegion ( const GridOrTreeType &  volume,
typename GridOrTreeType::ValueType  isovalue = lsutilGridZero<GridOrTreeType>(),
const typename TreeAdapter< GridOrTreeType >::TreeType::template ValueConverter< bool >::Type *  fillMask = nullptr 
)
inline

Extracts the interior regions of a signed distance field and topologically enclosed (watertight) regions of value greater than the isovalue (cavities) that can arise as the result of CSG union operations between different shapes where at least one of the shapes has a concavity that is capped.

For example the enclosed region of a capped bottle would include the walls and the interior cavity.

Returns
A shared pointer to either a boolean grid or tree with the same tree configuration and potentially transform as the input volume and whose active and true values correspond to the interior and enclosed regions in the input signed distance field.
Parameters
volumeSigned distance field / level set volume.
isovalueThreshold below which values are considered part of the interior region.
fillMaskOptional boolean tree, when provided enclosed cavity regions that are not completely filled by this mask are ignored.

For instance if the fill mask does not completely fill the bottle in the previous example only the walls and cap are returned and the interior cavity will be ignored.

Definition at line 2315 of file LevelSetUtil.h.

template<typename GridOrTreeType >
GridOrTreeType::template ValueConverter< bool >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::extractIsosurfaceMask ( const GridOrTreeType &  volume,
typename GridOrTreeType::ValueType  isovalue 
)
inline

Return a mask of the voxels that intersect the implicit surface with the given isovalue.

Parameters
volumeSigned distance field / level set volume.
isovalueThe crossing point that is considered the surface.

Definition at line 2340 of file LevelSetUtil.h.

template<typename OpType , typename DenseType >
OpType::ResultTreeType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::extractSparseTree ( const DenseType &  dense,
const OpType &  functor,
const typename OpType::ResultValueType &  background,
bool  threaded = true 
)

Selectively extract and transform data from a dense grid, producing a sparse tree with leaf nodes only (e.g. create a tree from the square of values greater than a cutoff.)

Parameters
denseA dense grid that acts as a data source
functorA functor that selects and transforms data for output
backgroundThe background value of the resulting sparse grid
threadedOption to use threaded or serial code path
Returns
Ptr to tree with the valuetype and configuration defined by typedefs in the functor.
Note
To achieve optimal sparsity consider calling the prune() method on the result.
To simply copy the all the data from a Dense grid to a OpenVDB Grid, use tools::copyFromDense() for better performance.

The type of the sparse tree is determined by the specified OtpType functor by means of the typedef OptType::ResultTreeType

The OptType function is responsible for the the transformation of dense grid data to sparse grid data on a per-voxel basis.

Only leaf nodes with active values will be added to the sparse grid.

The OpType must struct that defines a the minimal form

struct ExampleOp
{
typedef DesiredTreeType ResultTreeType;
template<typename IndexOrCoord>
void OpType::operator() (const DenseValueType a, const IndexOrCoord& ijk,
ResultTreeType::LeafNodeType* leaf);
};

For example, to generate a <ValueType, 5, 4, 3> tree with valuesOn at locations greater than a given maskvalue

template <typename ValueType>
class Rule
{
public:
// Standard tree type (e.g. MaskTree or FloatTree in openvdb.h)
typedef typename openvdb::tree::Tree4<ValueType, 5, 4, 3>::Type ResultTreeType;
typedef typename ResultTreeType::LeafNodeType ResultLeafNodeType;
typedef typename ResultTreeType::ValueType ResultValueType;
typedef float DenseValueType;
typedef vdbmath::Coord::ValueType Index;
Rule(const DenseValueType& value): mMaskValue(value){};
template <typename IndexOrCoord>
void operator()(const DenseValueType& a, const IndexOrCoord& offset,
ResultLeafNodeType* leaf) const
{
if (a > mMaskValue) {
leaf->setValueOn(offset, a);
}
}
private:
const DenseValueType mMaskValue;
};

Definition at line 421 of file DenseSparseTools.h.

template<typename DenseType , typename MaskTreeType >
DSConverter< DenseType, MaskTreeType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::extractSparseTreeWithMask ( const DenseType &  dense,
const MaskTreeType &  mask,
const typename DenseType::ValueType &  background,
bool  threaded = true 
)

Copy data from the intersection of a sparse tree and a dense input grid. The resulting tree has the same configuration as the sparse tree, but holds the data type specified by the dense input.

Parameters
denseA dense grid that acts as a data source
maskThe active voxels and tiles intersected with dense define iteration mask
backgroundThe background value of the resulting sparse grid
threadedOption to use threaded or serial code path
Returns
Ptr to tree with the same configuration as mask but of value type defined by dense.

Definition at line 613 of file DenseSparseTools.h.

template<typename IterT >
math::Extrema openvdb::OPENVDB_VERSION_NAME::tools::extrema ( const IterT &  iter,
bool  threaded = true 
)
inline

Iterate over a scalar grid and compute extrema (min/max) of the values of the voxels that are visited, or iterate over a vector-valued grid and compute extrema of the magnitudes of the vectors.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
threadedif true, iterate over the grid in parallel

Definition at line 379 of file Statistics.h.

template<typename IterT , typename ValueOp >
math::Extrema openvdb::OPENVDB_VERSION_NAME::tools::extrema ( const IterT &  iter,
const ValueOp &  op,
bool  threaded 
)
inline

Iterate over a grid and compute extrema (min/max) of the values produced by applying the given functor at each voxel that is visited.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
opa functor of the form void op(const IterT&, math::Stats&), where IterT is the type of iter, that inserts zero or more floating-point values into the provided math::Stats object
threadedif true, iterate over the grid in parallel
Note
When threaded is true, each thread gets its own copy of the functor.
Example:
Compute statistics of just the active and positive-valued voxels of a scalar, floating-point grid.
struct Local {
static inline
void addIfPositive(const FloatGrid::ValueOnCIter& iter, math::Extrema& ex)
{
const float f = *iter;
if (f > 0.0) {
if (iter.isVoxelValue()) ex.add(f);
else ex.add(f, iter.getVoxelCount());
}
}
};
FloatGrid grid = ...;
math::Extrema stats =
tools::extrema(grid.cbeginValueOn(), Local::addIfPositive, /*threaded=*/true);

Definition at line 395 of file Statistics.h.

template<typename GridT , typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::fillWithSpheres ( const GridT &  grid,
std::vector< openvdb::Vec4s > &  spheres,
const Vec2i &  sphereCount = Vec2i(1, 50),
bool  overlapping = false,
float  minRadius = 1.0,
float  maxRadius = std::numeric_limits<float>::max(),
float  isovalue = 0.0,
int  instanceCount = 10000,
InterrupterT *  interrupter = nullptr 
)
inline

Fill a closed level set or fog volume with adaptively-sized spheres.

Parameters
grida scalar grid that defines the surface to be filled with spheres
spheresan output array of 4-tuples representing the fitted spheres
The first three components of each tuple specify the sphere center, and the fourth specifies the radius. The spheres are ordered by radius, from largest to smallest.
sphereCountlower and upper bounds on the number of spheres to be generated
The actual number will be somewhere within the bounds.
overlappingtoggle to allow spheres to overlap/intersect
minRadiusthe smallest allowable sphere size, in voxel units
maxRadiusthe largest allowable sphere size, in voxel units
isovaluethe voxel value that determines the surface of the volume
The default value of zero works for signed distance fields, while fog volumes require a larger positive value (0.5 is a good initial guess).
instanceCountthe number of interior points to consider for the sphere placement
Increasing this count increases the chances of finding optimal sphere sizes.
interrupterpointer to an object adhering to the util::NullInterrupter interface
Note
The minimum sphere count takes precedence over the minimum radius.

Definition at line 694 of file VolumeToSpheres.h.

template<typename GridT , typename InterrupterT = util::NullInterrupter>
OPENVDB_DEPRECATED void openvdb::OPENVDB_VERSION_NAME::tools::fillWithSpheres ( const GridT &  grid,
std::vector< openvdb::Vec4s > &  spheres,
int  maxSphereCount,
bool  overlapping = false,
float  minRadius = 1.0,
float  maxRadius = std::numeric_limits< float >::max(),
float  isovalue = 0.0,
int  instanceCount = 10000,
InterrupterT *  interrupter = nullptr 
)
inline
Deprecated:
Use the sphereCount overload instead.

Definition at line 676 of file VolumeToSpheres.h.

template<typename GridT , typename InterrupterT >
void openvdb::OPENVDB_VERSION_NAME::tools::fillWithSpheres ( const GridT &  grid,
std::vector< openvdb::Vec4s > &  spheres,
int  maxSphereCount,
bool  overlapping = false,
float  minRadius = 1.0,
float  maxRadius = std::numeric_limits< float >::max(),
float  isovalue = 0.0,
int  instanceCount = 10000,
InterrupterT *  interrupter = nullptr 
)
inline
Deprecated:
Use the sphereCount overload instead.

Definition at line 676 of file VolumeToSpheres.h.

Vec3d openvdb::OPENVDB_VERSION_NAME::tools::findFeaturePoint ( const std::vector< Vec3d > &  points,
const std::vector< Vec3d > &  normals 
)
inline

Given a set of tangent elements, points with corresponding normals, this method returns the intersection point of all tangent elements.

Note
Used to extract surfaces with sharp edges and corners from volume data, see the following paper for details: "Feature Sensitive Surface Extraction from Volume Data, Kobbelt et al. 2001".

Definition at line 298 of file VolumeToMesh.h.

template<typename IterT , typename XformOp >
void openvdb::OPENVDB_VERSION_NAME::tools::foreach ( const IterT &  iter,
XformOp &  op,
bool  threaded = true,
bool  shareOp = true 
)
inline

Iterate over a grid and at each step call op(iter).

Parameters
iteran iterator over a grid or its tree (Grid::ValueOnCIter, Tree::NodeIter, etc.)
opa functor of the form void op(const IterT&), where IterT is the type of iter
threadedif true, transform multiple values of the grid in parallel
shareOpif true and threaded is true, all threads use the same functor; otherwise, each thread gets its own copy of the original functor
Example:
Multiply all values (both set and unset) of a scalar, floating-point grid by two.
struct Local {
static inline void op(const FloatGrid::ValueAllIter& iter) {
iter.setValue(*iter * 2);
}
};
FloatGrid grid = ...;
tools::foreach(grid.beginValueAll(), Local::op);
Example:
Rotate all active vectors of a vector grid by 45 degrees about the y axis.
namespace {
struct MatMul {
MatMul(const math::Mat3s& mat): M(mat) {}
inline void operator()(const VectorGrid::ValueOnIter& iter) const {
iter.setValue(M.transform(*iter));
}
};
}
{
VectorGrid grid = ...;
tools::foreach(grid.beginValueOn(),
MatMul(math::rotation<math::Mat3s>(math::Y, M_PI_4)));
}
Note
For more complex operations that require finer control over threading, consider using tbb::parallel_for() or tbb::parallel_reduce() in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.

Definition at line 401 of file ValueTransformer.h.

template<typename IterT , typename XformOp >
void openvdb::OPENVDB_VERSION_NAME::tools::foreach ( const IterT &  iter,
const XformOp &  op,
bool  threaded = true,
bool  shareOp = true 
)
inline

Definition at line 415 of file ValueTransformer.h.

template<typename GridT , typename PointArrayT >
GridT::ConstPtr openvdb::OPENVDB_VERSION_NAME::tools::getValidPointIndexGrid ( const PointArrayT &  points,
const typename GridT::ConstPtr &  grid 
)
inline

Repartition the points if needed, otherwise return the input grid.

Definition at line 1355 of file PointIndexGrid.h.

template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::getValidPointIndexGrid ( const PointArrayT &  points,
const typename GridT::Ptr &  grid 
)
inline

Repartition the points if needed, otherwise return the input grid.

Definition at line 1367 of file PointIndexGrid.h.

template<typename GridType , typename InterruptT >
ScalarToVectorConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::gradient ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the gradient of the given scalar grid.

Returns
a new vector-valued grid with the same numerical precision as the input grid (for example, if the input grid is a DoubleGrid, the output grid will be a Vec3DGrid)

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1023 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
ScalarToVectorConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::gradient ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1032 of file GridOperators.h.

template<typename GridType >
ScalarToVectorConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::gradient ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 174 of file GridOperators.h.

template<typename GridType , typename MaskT >
ScalarToVectorConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::gradient ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 181 of file GridOperators.h.

template<typename IterT >
math::Histogram openvdb::OPENVDB_VERSION_NAME::tools::histogram ( const IterT &  iter,
double  minVal,
double  maxVal,
size_t  numBins = 10,
bool  threaded = true 
)
inline

Iterate over a scalar grid and compute a histogram of the values of the voxels that are visited, or iterate over a vector-valued grid and compute a histogram of the magnitudes of the vectors.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
minValthe smallest value that can be added to the histogram
maxValthe largest value that can be added to the histogram
numBinsthe number of histogram bins
threadedif true, iterate over the grid in parallel

Definition at line 368 of file Statistics.h.

template<typename GridType >
GridType::template ValueConverter< bool >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::interiorMask ( const GridType &  grid,
const double  isovalue = 0.0 
)
inline

Given an input grid of any type, return a new, boolean grid whose active voxel topology matches the input grid's or, if the input grid is a level set, matches the input grid's interior.

Parameters
gridthe grid from which to construct a mask
isovaluefor a level set grid, the isovalue that defines the grid's interior
See Also
tools::sdfInteriorMask()

Definition at line 138 of file Mask.h.

template<typename PointArrayT , typename GridT >
bool openvdb::OPENVDB_VERSION_NAME::tools::isValidPartition ( const PointArrayT &  points,
const GridT &  grid 
)
inline

Return true if the given point index grid represents a valid partitioning of the given point array.

Parameters
pointsworld-space point array conforming to the PointArray interface
gridpoint index grid to validate

Definition at line 1328 of file PointIndexGrid.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::laplacian ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the Laplacian of the given scalar grid.

Returns
a new scalar grid

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1040 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::laplacian ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1049 of file GridOperators.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::laplacian ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 202 of file GridOperators.h.

template<typename GridType , typename MaskT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::laplacian ( const GridType &  grid,
const MaskT  mask,
bool  threaded = true 
)
inline

Definition at line 209 of file GridOperators.h.

template<class GridType >
Real openvdb::OPENVDB_VERSION_NAME::tools::levelSetArea ( const GridType &  grid,
bool  useWorldSpace = true 
)
inline

Return the surface area of a narrow-band level set.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
useWorldSpaceif true the area is computed in world space units, else in voxel units.
Exceptions
TypeErrorif grid is not scalar or not floating-point or not a level set.
template<class GridT >
Real openvdb::OPENVDB_VERSION_NAME::tools::levelSetArea ( const GridT &  grid,
bool  useWorldSpace 
)
inline

Definition at line 485 of file LevelSetMeasure.h.

template<class GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::levelSetMeasure ( const GridType &  grid,
Real &  area,
Real &  volume,
bool  useWorldSpace = true 
)
inline

Compute the surface area and volume of a narrow-band level set.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
areasurface area of the level set
volumevolume of the level set surface
useWorldSpaceif true the area and volume are computed in world space units, else in voxel units.
Exceptions
TypeErrorif grid is not scalar or not floating-point or not a level set.
template<class GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::levelSetMeasure ( const GridType &  grid,
Real &  area,
Real &  volume,
Real &  avgCurvature,
bool  useWorldSpace = true 
)
inline

Compute the surface area and volume of a narrow-band level set.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
areasurface area of the level set
volumevolume of the level set surface
avgCurvatureaverage mean curvature of the level set surface
useWorldSpaceif true the area, volume and curvature are computed in world space units, else in voxel units.
Exceptions
TypeErrorif grid is not scalar or not floating-point or not a level set.
template<class GridT >
void openvdb::OPENVDB_VERSION_NAME::tools::levelSetMeasure ( const GridT &  grid,
Real &  area,
Real &  volume,
bool  useWorldSpace 
)
inline

Definition at line 559 of file LevelSetMeasure.h.

template<class GridT >
void openvdb::OPENVDB_VERSION_NAME::tools::levelSetMeasure ( const GridT &  grid,
Real &  area,
Real &  volume,
Real &  avgCurvature,
bool  useWorldSpace 
)
inline

Definition at line 596 of file LevelSetMeasure.h.

template<class GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::levelSetRebuild ( const GridType &  grid,
float  isovalue = 0,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH),
const math::Transform *  xform = nullptr 
)
inline

Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
isovaluethe isovalue that defines the implicit surface (defaults to zero, which is typical if the input grid is already a level set or a SDF).
halfWidthhalf the width of the narrow band, in voxel units (defaults to 3 voxels, which is required for some level set operations)
xformoptional transform for the output grid (if not provided, the transform of the input grid will be matched)
Exceptions
TypeErrorif grid is not scalar or not floating-point
Note
If the input grid contains overlapping isosurfaces, interior edges will be lost.

Definition at line 338 of file LevelSetRebuild.h.

template<class GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::levelSetRebuild ( const GridType &  grid,
float  isovalue,
float  exBandWidth,
float  inBandWidth,
const math::Transform *  xform = nullptr 
)
inline

Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
isovaluethe isovalue that defines the implicit surface
exBandWidththe exterior narrow-band width in voxel units
inBandWidththe interior narrow-band width in voxel units
xformoptional transform for the output grid (if not provided, the transform of the input grid will be matched)
Exceptions
TypeErrorif grid is not scalar or not floating-point
Note
If the input grid contains overlapping isosurfaces, interior edges will be lost.

Definition at line 322 of file LevelSetRebuild.h.

template<class GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::levelSetRebuild ( const GridType &  grid,
float  isovalue,
float  exBandWidth,
float  inBandWidth,
const math::Transform *  xform = nullptr,
InterruptT *  interrupter = nullptr 
)
inline

Return a new grid of type GridType that contains a narrow-band level set representation of an isosurface of a given grid.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
isovaluethe isovalue that defines the implicit surface
exBandWidththe exterior narrow-band width in voxel units
inBandWidththe interior narrow-band width in voxel units
xformoptional transform for the output grid (if not provided, the transform of the input grid will be matched)
interrupteroptional interrupter object
Exceptions
TypeErrorif grid is not scalar or not floating-point
Note
If the input grid contains overlapping isosurfaces, interior edges will be lost.

Definition at line 307 of file LevelSetRebuild.h.

template<class GridType >
Real openvdb::OPENVDB_VERSION_NAME::tools::levelSetVolume ( const GridType &  grid,
bool  useWorldSpace = true 
)
inline

Return the volume of a narrow-band level set surface.

Parameters
grida scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue
useWorldSpaceif true the volume is computed in world space units, else in voxel units.
Exceptions
TypeErrorif grid is not scalar or not floating-point or not a level set.
template<class GridT >
Real openvdb::OPENVDB_VERSION_NAME::tools::levelSetVolume ( const GridT &  grid,
bool  useWorldSpace 
)
inline

Definition at line 523 of file LevelSetMeasure.h.

template<typename GridType , typename InterruptT >
VectorToScalarConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::magnitude ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the magnitudes of the vectors of the given vector-valued grid.

Returns
a new scalar-valued grid with the same numerical precision as the input grid (for example, if the input grid is a Vec3DGrid, the output grid will be a DoubleGrid)

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1074 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
VectorToScalarConverter< GridType >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::magnitude ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1083 of file GridOperators.h.

template<typename GridType >
VectorToScalarConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::magnitude ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 259 of file GridOperators.h.

template<typename GridType , typename MaskT >
VectorToScalarConverter<GridType>::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::magnitude ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 266 of file GridOperators.h.

template<typename PointListT , typename GridT >
void openvdb::OPENVDB_VERSION_NAME::tools::maskPoints ( const PointListT &  points,
GridT &  grid 
)
inline

Makes every voxel of the grid active if it contains a point.

Parameters
pointspoints that active the voxels of grid
gridon out its voxels with points are active

Definition at line 102 of file PointsToMask.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meanCurvature ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Compute the mean curvature of the given grid.

Returns
a new grid

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1057 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meanCurvature ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1066 of file GridOperators.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meanCurvature ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 230 of file GridOperators.h.

template<typename GridType , typename MaskT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meanCurvature ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 237 of file GridOperators.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Convert a triangle mesh to a level set volume.

Returns
a grid of type GridType containing a narrow-band level set representation of the input mesh.
Exceptions
TypeErrorif GridType is not scalar or not floating-point
Note
Requires a closed surface but not necessarily a manifold surface. Supports surfaces with self intersections and degenerate faces and is independent of mesh surface normals.
Parameters
xformtransform for the output grid
pointslist of world space point positions
trianglestriangle index list
halfWidthhalf the width of the narrow band, in voxel units

Definition at line 3508 of file MeshToVolume.h.

template<typename GridType , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( Interrupter &  interrupter,
const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Adds support for a interrupter callback used to cancel the conversion.

Definition at line 3523 of file MeshToVolume.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec4I > &  quads,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Convert a quad mesh to a level set volume.

Returns
a grid of type GridType containing a narrow-band level set representation of the input mesh.
Exceptions
TypeErrorif GridType is not scalar or not floating-point
Note
Requires a closed surface but not necessarily a manifold surface. Supports surfaces with self intersections and degenerate faces and is independent of mesh surface normals.
Parameters
xformtransform for the output grid
pointslist of world space point positions
quadsquad index list
halfWidthhalf the width of the narrow band, in voxel units

Definition at line 3538 of file MeshToVolume.h.

template<typename GridType , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( Interrupter &  interrupter,
const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec4I > &  quads,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Adds support for a interrupter callback used to cancel the conversion.

Definition at line 3553 of file MeshToVolume.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Convert a triangle and quad mesh to a level set volume.

Returns
a grid of type GridType containing a narrow-band level set representation of the input mesh.
Exceptions
TypeErrorif GridType is not scalar or not floating-point
Note
Requires a closed surface but not necessarily a manifold surface. Supports surfaces with self intersections and degenerate faces and is independent of mesh surface normals.
Parameters
xformtransform for the output grid
pointslist of world space point positions
trianglestriangle index list
quadsquad index list
halfWidthhalf the width of the narrow band, in voxel units

Definition at line 3568 of file MeshToVolume.h.

template<typename GridType , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToLevelSet ( Interrupter &  interrupter,
const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  halfWidth = float(LEVEL_SET_HALF_WIDTH) 
)
inline

Adds support for a interrupter callback used to cancel the conversion.

Definition at line 3583 of file MeshToVolume.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToSignedDistanceField ( const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  exBandWidth,
float  inBandWidth 
)
inline

Convert a triangle and quad mesh to a signed distance field with an asymmetrical narrow band.

Returns
a grid of type GridType containing a narrow-band signed distance field representation of the input mesh.
Exceptions
TypeErrorif GridType is not scalar or not floating-point
Note
Requires a closed surface but not necessarily a manifold surface. Supports surfaces with self intersections and degenerate faces and is independent of mesh surface normals.
Parameters
xformtransform for the output grid
pointslist of world space point positions
trianglestriangle index list
quadsquad index list
exBandWidththe exterior narrow-band width in voxel units
inBandWidththe interior narrow-band width in voxel units

Definition at line 3598 of file MeshToVolume.h.

template<typename GridType , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToSignedDistanceField ( Interrupter &  interrupter,
const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  exBandWidth,
float  inBandWidth 
)
inline

Adds support for a interrupter callback used to cancel the conversion.

Definition at line 3614 of file MeshToVolume.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToUnsignedDistanceField ( const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  bandWidth 
)
inline

Convert a triangle and quad mesh to an unsigned distance field.

Returns
a grid of type GridType containing a narrow-band unsigned distance field representation of the input mesh.
Exceptions
TypeErrorif GridType is not scalar or not floating-point
Note
Does not requires a closed surface.
Parameters
xformtransform for the output grid
pointslist of world space point positions
trianglestriangle index list
quadsquad index list
bandWidththe width of the narrow band, in voxel units

Definition at line 3630 of file MeshToVolume.h.

template<typename GridType , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToUnsignedDistanceField ( Interrupter &  interrupter,
const openvdb::math::Transform &  xform,
const std::vector< Vec3s > &  points,
const std::vector< Vec3I > &  triangles,
const std::vector< Vec4I > &  quads,
float  bandWidth 
)
inline

Adds support for a interrupter callback used to cancel the conversion.

Definition at line 3645 of file MeshToVolume.h.

template<typename GridType , typename MeshDataAdapter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToVolume ( const MeshDataAdapter mesh,
const math::Transform &  transform,
float  exteriorBandWidth = 3.0f,
float  interiorBandWidth = 3.0f,
int  flags = 0,
typename GridType::template ValueConverter< Int32 >::Type *  polygonIndexGrid = nullptr 
)
inline

Definition at line 3388 of file MeshToVolume.h.

template<typename GridType , typename MeshDataAdapter , typename Interrupter >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::meshToVolume ( Interrupter &  interrupter,
const MeshDataAdapter mesh,
const math::Transform &  transform,
float  exteriorBandWidth = 3.0f,
float  interiorBandWidth = 3.0f,
int  flags = 0,
typename GridType::template ValueConverter< Int32 >::Type *  polygonIndexGrid = nullptr 
)
inline

Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes.

Parameters
interruptera callback to interrupt the conversion process that conforms to the util::NullInterrupter interface
meshmesh data access class that conforms to the MeshDataAdapter interface
transformworld-to-index-space transform
exteriorBandWidthexterior narrow band width in voxel units
interiorBandWidthinterior narrow band width in voxel units (set this value to std::numeric_limits<float>::max() to fill interior regions with distance values)
flagsoptional conversion flags defined in MeshToVolumeFlags
polygonIndexGridoptional grid output that will contain the closest-polygon index for each voxel in the active narrow band region

Definition at line 3086 of file MeshToVolume.h.

template<typename GridType , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::normalize ( const GridType &  grid,
bool  threaded,
InterruptT *  interrupt 
)
inline

Normalize the vectors of the given vector-valued grid.

Returns
a new vector-valued grid

When a mask grid is specified, the solution is calculated only in the intersection of the mask active topology and the input active topology independent of the transforms associated with either grid.

Definition at line 1091 of file GridOperators.h.

template<typename GridType , typename MaskT , typename InterruptT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::normalize ( const GridType &  grid,
const MaskT &  mask,
bool  threaded,
InterruptT *  interrupt 
)
inline

Definition at line 1100 of file GridOperators.h.

template<typename GridType >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::normalize ( const GridType &  grid,
bool  threaded = true 
)
inline

Definition at line 287 of file GridOperators.h.

template<typename GridType , typename MaskT >
GridType::Ptr openvdb::OPENVDB_VERSION_NAME::tools::normalize ( const GridType &  grid,
const MaskT &  mask,
bool  threaded = true 
)
inline

Definition at line 294 of file GridOperators.h.

std::ostream& openvdb::OPENVDB_VERSION_NAME::tools::operator<< ( std::ostream &  ostr,
const MeshToVoxelEdgeData::EdgeData &  rhs 
)
inline

Definition at line 3663 of file MeshToVolume.h.

template<typename OperatorT , typename IterT >
math::Extrema openvdb::OPENVDB_VERSION_NAME::tools::opExtrema ( const IterT &  iter,
const OperatorT &  op = OperatorT(),
bool  threaded = true 
)
inline

Same as opStatistics except it returns a math::Extrema vs a math::Stats.

Definition at line 414 of file Statistics.h.

template<typename OperatorT , typename IterT >
math::Stats openvdb::OPENVDB_VERSION_NAME::tools::opStatistics ( const IterT &  iter,
const OperatorT &  op = OperatorT(),
bool  threaded = true 
)
inline

Iterate over a grid and compute statistics (mean, variance, etc.) of the values produced by applying a given operator (see math/Operators.h) at each voxel that is visited.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
opan operator object with a method of the form double result(Accessor&, const Coord&)
threadedif true, iterate over the grid in parallel
Note
World-space operators, whose result() methods are of the form double result(const Map&, Accessor&, const Coord&), must be wrapped in a math::MapAdapter.
Vector-valued operators like math::Gradient must be wrapped in an adapter such as math::OpMagnitude.
Example:
Compute statistics of the magnitude of the gradient at the active voxels of a scalar, floating-point grid. (Note the use of the math::MapAdapter and math::OpMagnitude adapters.)
FloatGrid grid = ...;
// Assume that we know that the grid has a uniform scale map.
typedef math::UniformScaleMap MapType;
// Specify a world-space gradient operator that uses first-order differencing.
typedef math::Gradient<MapType, math::FD_1ST> GradientOp;
// Wrap the operator with an adapter that computes the magnitude of the gradient.
typedef math::OpMagnitude<GradientOp, MapType> MagnitudeOp;
// Wrap the operator with an adapter that associates a map with it.
typedef math::MapAdapter<MapType, GradientOp, double> CompoundOp;
if (MapType::Ptr map = grid.constTransform().constMap<MapType>()) {
math::Stats stats = tools::opStatistics(grid.cbeginValueOn(), CompoundOp(*map));
}
Example:
Compute statistics of the divergence at the active voxels of a vector-valued grid.
Vec3SGrid grid = ...;
// Assume that we know that the grid has a uniform scale map.
typedef math::UniformScaleMap MapType;
// Specify a world-space divergence operator that uses first-order differencing.
typedef math::Divergence<MapType, math::FD_1ST> DivergenceOp;
// Wrap the operator with an adapter that associates a map with it.
typedef math::MapAdapter<MapType, DivergenceOp, double> CompoundOp;
if (MapType::Ptr map = grid.constTransform().constMap<MapType>()) {
math::Stats stats = tools::opStatistics(grid.cbeginValueOn(), CompoundOp(*map));
}
Example:
As above, but computing the divergence in index space.
Vec3SGrid grid = ...;
// Specify an index-space divergence operator that uses first-order differencing.
typedef math::ISDivergence<math::FD_1ST> DivergenceOp;
math::Stats stats = tools::opStatistics(grid.cbeginValueOn(), DivergenceOp());

Definition at line 423 of file Statistics.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::prune ( TreeT &  tree,
typename TreeT::ValueType  tolerance = zeroVal<typename TreeT::ValueType>(),
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing with tiles any nodes whose values are all the same (optionally to within a tolerance) and have the same active state.

Note
For trees with non-boolean values a child node with (approximately) constant values are replaced with a tile value corresponding to the median of the values in said child node.
Parameters
treethe tree to be pruned
tolerancetolerance within which values are considered to be equal
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)

Definition at line 361 of file Prune.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::pruneInactive ( TreeT &  tree,
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing with background tiles any nodes whose values are all inactive.

Parameters
treethe tree to be pruned
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)

Definition at line 381 of file Prune.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::pruneInactiveWithValue ( TreeT &  tree,
const typename TreeT::ValueType &  value,
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing any nodes whose values are all inactive with tiles of the given value.

Parameters
treethe tree to be pruned
valuevalue assigned to inactive tiles created during pruning
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)

Definition at line 391 of file Prune.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::pruneLevelSet ( TreeT &  tree,
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing nodes whose values are all inactive with inactive tiles having a value equal to the first value encountered in the (inactive) child.

This method is faster than tolerance-based prune and useful for narrow-band level set applications where inactive values are limited to either an inside or an outside value.

Parameters
treethe tree to be pruned
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)
Exceptions
ValueErrorif the background of the tree is negative (as defined by math::isNegative)

Definition at line 416 of file Prune.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::pruneLevelSet ( TreeT &  tree,
const typename TreeT::ValueType &  outsideWidth,
const typename TreeT::ValueType &  insideWidth,
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing nodes whose voxel values are all inactive with inactive tiles having the value -| insideWidth | if the voxel values are negative and | outsideWidth | otherwise.

This method is faster than tolerance-based prune and useful for narrow-band level set applications where inactive values are limited to either an inside or an outside value.

Parameters
treethe tree to be pruned
outsideWidththe width of the outside of the narrow band
insideWidththe width of the inside of the narrow band
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)
Exceptions
ValueErrorif outsideWidth is negative or insideWidth is not negative (as defined by math::isNegative).

Definition at line 402 of file Prune.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::pruneTiles ( TreeT &  tree,
typename TreeT::ValueType  tolerance = zeroVal<typename TreeT::ValueType>(),
bool  threaded = true,
size_t  grainSize = 1 
)
inline

Reduce the memory footprint of a tree by replacing with tiles any non-leaf nodes whose values are all the same (optionally to within a tolerance) and have the same active state.

Parameters
treethe tree to be pruned
tolerancetolerance within which values are considered to be equal
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)

Definition at line 371 of file Prune.h.

template<typename GridT >
void openvdb::OPENVDB_VERSION_NAME::tools::rayTrace ( const GridT &  grid,
const BaseShader &  shader,
BaseCamera &  camera,
size_t  pixelSamples = 1,
unsigned int  seed = 0,
bool  threaded = true 
)
inline

Ray-trace a volume.

Definition at line 804 of file RayTracer.h.

template<typename GridT , typename IntersectorT >
void openvdb::OPENVDB_VERSION_NAME::tools::rayTrace ( const GridT &  ,
const IntersectorT &  inter,
const BaseShader &  shader,
BaseCamera &  camera,
size_t  pixelSamples = 1,
unsigned int  seed = 0,
bool  threaded = true 
)
inline

Ray-trace a volume using a given ray intersector.

Definition at line 818 of file RayTracer.h.

template<typename Sampler , typename Interrupter , typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::resampleToMatch ( const GridType &  inGrid,
GridType &  outGrid,
Interrupter &  interrupter 
)
inline

Resample an input grid into an output grid of the same type such that, after resampling, the input and output grids coincide (apart from sampling artifacts), but the output grid's transform is unchanged.

Specifically, this function resamples the input grid into the output grid's index space, using a sampling kernel like PointSampler, BoxSampler, or QuadraticSampler.

Parameters
inGridthe grid to be resampled
outGridthe grid into which to write the resampled voxel data
interrupteran object adhering to the util::NullInterrupter interface
Example:
// Create an input grid with the default identity transform
// and populate it with a level-set sphere.
FloatGrid::ConstPtr src = tools::makeSphere(...);
// Create an output grid and give it a uniform-scale transform.
const float voxelSize = 0.5;
dest->setTransform(math::Transform::createLinearTransform(voxelSize));
// Resample the input grid into the output grid, reproducing
// the level-set sphere at a smaller voxel size.
MyInterrupter interrupter = ...;
tools::resampleToMatch<tools::QuadraticSampler>(*src, *dest, interrupter);

Definition at line 484 of file GridTransformer.h.

template<typename Sampler , typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::resampleToMatch ( const GridType &  inGrid,
GridType &  outGrid 
)
inline

Resample an input grid into an output grid of the same type such that, after resampling, the input and output grids coincide (apart from sampling artifacts), but the output grid's transform is unchanged.

Specifically, this function resamples the input grid into the output grid's index space, using a sampling kernel like PointSampler, BoxSampler, or QuadraticSampler.

Parameters
inGridthe grid to be resampled
outGridthe grid into which to write the resampled voxel data
Example:
// Create an input grid with the default identity transform
// and populate it with a level-set sphere.
FloatGrid::ConstPtr src = tools::makeSphere(...);
// Create an output grid and give it a uniform-scale transform.
const float voxelSize = 0.5;
dest->setTransform(math::Transform::createLinearTransform(voxelSize));
// Resample the input grid into the output grid, reproducing
// the level-set sphere at a smaller voxel size.
tools::resampleToMatch<tools::QuadraticSampler>(*src, *dest);

Definition at line 527 of file GridTransformer.h.

template<class GridOrTreeType >
GridOrTreeType::template ValueConverter< bool >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::sdfInteriorMask ( const GridOrTreeType &  volume,
typename GridOrTreeType::ValueType  isovalue = lsutilGridZero<GridOrTreeType>() 
)
inline

Threaded method to construct a boolean mask that represents interior regions in a signed distance field.

Returns
A shared pointer to either a boolean grid or tree with the same tree configuration and potentially transform as the input volume and whose active and true values correspond to the interior of the input signed distance field.
Parameters
volumeSigned distance field / level set volume.
isovalueThreshold below which values are considered part of the interior region.

Definition at line 2300 of file LevelSetUtil.h.

template<class GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::sdfToFogVolume ( GridType &  grid,
typename GridType::ValueType  cutoffDistance = lsutilGridMax<GridType>() 
)
inline

Threaded method to convert a sparse level set/SDF into a sparse fog volume.

For a level set, the active and negative-valued interior half of the narrow band becomes a linear ramp from 0 to 1; the inactive interior becomes active with a constant value of 1; and the exterior, including the background and the active exterior half of the narrow band, becomes inactive with a constant value of 0. The interior, though active, remains sparse.

For a generic SDF, a specified cutoff distance determines the width of the ramp, but otherwise the result is the same as for a level set.

Parameters
gridlevel set/SDF grid to transform
cutoffDistanceoptional world space cutoff distance for the ramp (automatically clamped if greater than the interior narrow band width)

Definition at line 2184 of file LevelSetUtil.h.

template<typename GridOrTreeType >
void openvdb::OPENVDB_VERSION_NAME::tools::segmentActiveVoxels ( const GridOrTreeType &  volume,
std::vector< typename GridOrTreeType::Ptr > &  segments 
)
inline

Separates disjoint active topology components into distinct grids or trees.

Supports volumes with active tiles.

Parameters
volumeInput grid or tree
segmentsOutput set of disjoint active topology components sorted in descending order based on the active voxel count.

Definition at line 2522 of file LevelSetUtil.h.

template<typename GridOrTreeType >
void openvdb::OPENVDB_VERSION_NAME::tools::segmentSDF ( const GridOrTreeType &  volume,
std::vector< typename GridOrTreeType::Ptr > &  segments 
)
inline

Separates disjoint SDF surfaces into distinct grids or trees.

Supports asymmetric interior / exterior narrowband widths and SDF volumes with dense interior regions.

Parameters
volumeInput signed distance field / level set volume
segmentsOutput set of disjoint SDF surfaces found in volume sorted in descending order based on the surface intersecting voxel count.

Definition at line 2566 of file LevelSetUtil.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::setValueOnMax ( TreeT &  tree,
const Coord &  xyz,
const typename TreeT::ValueType &  value 
)
inline

Set the value of the voxel at the given coordinates in tree to the maximum of its current value and value, and mark the voxel as active.

This is typically significantly faster than calling getValue() followed by setValueOn().

Note
TreeT can be either a Tree or a ValueAccessor.

Definition at line 312 of file ValueTransformer.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::setValueOnMin ( TreeT &  tree,
const Coord &  xyz,
const typename TreeT::ValueType &  value 
)
inline

Set the value of the voxel at the given coordinates in tree to the minimum of its current value and value, and mark the voxel as active.

This is typically significantly faster than calling getValue() followed by setValueOn().

Note
TreeT can be either a Tree or a ValueAccessor.

Definition at line 304 of file ValueTransformer.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::setValueOnMult ( TreeT &  tree,
const Coord &  xyz,
const typename TreeT::ValueType &  value 
)
inline

Set the value of the voxel at the given coordinates in tree to the product of its current value and value, and mark the voxel as active.

This is typically significantly faster than calling getValue() followed by setValueOn().

Note
TreeT can be either a Tree or a ValueAccessor.

Definition at line 328 of file ValueTransformer.h.

template<typename TreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::setValueOnSum ( TreeT &  tree,
const Coord &  xyz,
const typename TreeT::ValueType &  value 
)
inline

Set the value of the voxel at the given coordinates in tree to the sum of its current value and value, and mark the voxel as active.

This is typically significantly faster than calling getValue() followed by setValueOn().

Note
TreeT can be either a Tree or a ValueAccessor.

Definition at line 320 of file ValueTransformer.h.

template<typename TreeOrLeafManagerT >
void openvdb::OPENVDB_VERSION_NAME::tools::signedFloodFill ( TreeOrLeafManagerT &  tree,
bool  threaded = true,
size_t  grainSize = 1,
Index  minLevel = 0 
)
inline

Set the values of all inactive voxels and tiles of a narrow-band level set from the signs of the active voxels, setting outside values to +background and inside values to -background.

Warning
This method should only be used on closed, symmetric narrow-band level sets.
Note
If a LeafManager is used the cached leaf nodes are reused, resulting in slightly better overall performance.
Parameters
treeTree or LeafManager that will be flood filled.
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)
minLevelSpecify the lowest tree level to process (leafnode level = 0)
Exceptions
TypeErrorif the ValueType of tree is not floating-point.

Definition at line 294 of file SignedFloodFill.h.

template<typename TreeOrLeafManagerT >
void openvdb::OPENVDB_VERSION_NAME::tools::signedFloodFillWithValues ( TreeOrLeafManagerT &  tree,
const typename TreeOrLeafManagerT::ValueType &  outsideWidth,
const typename TreeOrLeafManagerT::ValueType &  insideWidth,
bool  threaded = true,
size_t  grainSize = 1,
Index  minLevel = 0 
)
inline

Set the values of all inactive voxels and tiles of a narrow-band level set from the signs of the active voxels, setting exterior values to outsideWidth and interior values to insideWidth. Set the background value of this tree to outsideWidth.

Warning
This method should only be used on closed, narrow-band level sets.
Note
If a LeafManager is used the cached leaf nodes are reused resulting in slightly better overall performance.
Parameters
treeTree or LeafManager that will be flood filled
outsideWidththe width of the outside of the narrow band
insideWidththe width of the inside of the narrow band
threadedenable or disable threading (threading is enabled by default)
grainSizeused to control the threading granularity (default is 1)
minLevelSpecify the lowest tree level to process (leafnode level = 0)
Exceptions
TypeErrorif the ValueType of tree is not floating-point.

Definition at line 280 of file SignedFloodFill.h.

template<typename IterT >
math::Stats openvdb::OPENVDB_VERSION_NAME::tools::statistics ( const IterT &  iter,
bool  threaded = true 
)
inline

Iterate over a scalar grid and compute statistics (mean, variance, etc.) of the values of the voxels that are visited, or iterate over a vector-valued grid and compute statistics of the magnitudes of the vectors.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
threadedif true, iterate over the grid in parallel

Definition at line 387 of file Statistics.h.

template<typename IterT , typename ValueOp >
math::Stats openvdb::OPENVDB_VERSION_NAME::tools::statistics ( const IterT &  iter,
const ValueOp &  op,
bool  threaded 
)
inline

Iterate over a grid and compute statistics (mean, variance, etc.) of the values produced by applying the given functor at each voxel that is visited.

Parameters
iteran iterator over the values of a grid or its tree (Grid::ValueOnCIter, Tree::ValueOffIter, etc.)
opa functor of the form void op(const IterT&, math::Stats&), where IterT is the type of iter, that inserts zero or more floating-point values into the provided math::Stats object
threadedif true, iterate over the grid in parallel
Note
When threaded is true, each thread gets its own copy of the functor.
Example:
Compute statistics of just the active and positive-valued voxels of a scalar, floating-point grid.
struct Local {
static inline
void addIfPositive(const FloatGrid::ValueOnCIter& iter, math::Stats& stats)
{
const float f = *iter;
if (f > 0.0) {
if (iter.isVoxelValue()) stats.add(f);
else stats.add(f, iter.getVoxelCount());
}
}
};
FloatGrid grid = ...;
math::Stats stats =
tools::statistics(grid.cbeginValueOn(), Local::addIfPositive, /*threaded=*/true);

Definition at line 404 of file Statistics.h.

template<typename GridT >
GridT::template ValueConverter< float >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::topologyToLevelSet ( const GridT &  grid,
int  halfWidth = 3,
int  closingSteps = 1,
int  dilation = 0,
int  smoothingSteps = 0 
)
inline

Compute the narrow-band signed distance to the interface between active and inactive voxels in the input grid.

Returns
A shared pointer to a new sdf / level set grid of type float
Parameters
gridInput grid of arbitrary type whose active voxels are used in constructing the level set.
halfWidthHalf the width of the narrow band in voxel units.
closingStepsNumber of morphological closing steps used to fill gaps in the active voxel region.
dilationNumber of voxels to expand the active voxel region.
smoothingStepsNumber of smoothing interations.

Definition at line 270 of file TopologyToLevelSet.h.

template<typename GridT , typename InterrupterT >
GridT::template ValueConverter< float >::Type::Ptr openvdb::OPENVDB_VERSION_NAME::tools::topologyToLevelSet ( const GridT &  grid,
int  halfWidth = 3,
int  closingSteps = 1,
int  dilation = 0,
int  smoothingSteps = 0,
InterrupterT *  interrupt = NULL 
)
inline

Compute the narrow-band signed distance to the interface between active and inactive voxels in the input grid.

Returns
A shared pointer to a new sdf / level set grid of type float
Parameters
gridInput grid of arbitrary type whose active voxels are used in constructing the level set.
halfWidthHalf the width of the narrow band in voxel units.
closingStepsNumber of morphological closing steps used to fill gaps in the active voxel region.
dilationNumber of voxels to expand the active voxel region.
smoothingStepsNumber of smoothing interations.
interruptOptional object adhering to the util::NullInterrupter interface.

Definition at line 212 of file TopologyToLevelSet.h.

template<typename FloatTreeT >
void openvdb::OPENVDB_VERSION_NAME::tools::traceExteriorBoundaries ( FloatTreeT &  tree)
inline

Traces the exterior voxel boundary of closed objects in the input volume tree. Exterior voxels are marked with a negative sign, voxels with a value below 0.75 are left unchanged and act as the boundary layer.

Note
Does not propagate sign information into tile regions.

Definition at line 3009 of file MeshToVolume.h.

template<typename ValueT , typename OpType >
void openvdb::OPENVDB_VERSION_NAME::tools::transformDense ( Dense< ValueT, openvdb::tools::LayoutZYX > &  dense,
const openvdb::CoordBBox &  bbox,
const OpType &  op,
bool  parallel = true 
)

Apply a point-wise functor to the intersection of a dense grid and a given bounding box

Parameters
denseA dense grid to be transformed
bboxIndex space bounding box, define region where the transformation is applied
opA functor that acts on the dense grid value type
parallelUsed to select multithreaded or single threaded Minimally, the op class has to support a operator() method,
// Square values in a grid
struct Op
{
ValueT operator()(const ValueT& in) const
{
// do work
ValueT result = in * in;
return result;
}
};
NB: only Dense grids with memory layout zxy are supported
template<typename ValueT , typename PointwiseOpT >
void openvdb::OPENVDB_VERSION_NAME::tools::transformDense ( Dense< ValueT, openvdb::tools::LayoutZYX > &  dense,
const openvdb::CoordBBox &  bbox,
const PointwiseOpT &  functor,
bool  parallel 
)

Apply a point-wise functor to the intersection of a dense grid and a given bounding box.

Definition at line 788 of file DenseSparseTools.h.

template<typename InIterT , typename OutGridT , typename XformOp >
void openvdb::OPENVDB_VERSION_NAME::tools::transformValues ( const InIterT &  inIter,
OutGridT &  outGrid,
XformOp &  op,
bool  threaded = true,
bool  shareOp = true,
MergePolicy  merge = MERGE_ACTIVE_STATES 
)
inline

Iterate over a grid and at each step call op(iter, accessor) to populate (via the accessor) the given output grid, whose ValueType need not be the same as the input grid's.

Parameters
inItera non-const or (preferably) const iterator over an input grid or its tree (Grid::ValueOnCIter, Tree::NodeIter, etc.)
outGridan empty grid to be populated
opa functor of the form void op(const InIterT&, OutGridT::ValueAccessor&), where InIterT is the type of inIter
threadedif true, transform multiple values of the input grid in parallel
shareOpif true and threaded is true, all threads use the same functor; otherwise, each thread gets its own copy of the original functor
mergehow to merge intermediate results from multiple threads (see Types.h)
Example:
Populate a scalar floating-point grid with the lengths of the vectors from all active voxels of a vector-valued input grid.
struct Local {
static void op(
FloatGrid::ValueAccessor& accessor)
{
if (iter.isVoxelValue()) { // set a single voxel
accessor.setValue(iter.getCoord(), iter->length());
} else { // fill an entire tile
CoordBBox bbox;
iter.getBoundingBox(bbox);
accessor.getTree()->fill(bbox, iter->length());
}
}
};
Vec3fGrid inGrid = ...;
FloatGrid outGrid;
tools::transformValues(inGrid.cbeginValueOn(), outGrid, Local::op);
Note
For more complex operations that require finer control over threading, consider using tbb::parallel_for() or tbb::parallel_reduce() in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.

Definition at line 608 of file ValueTransformer.h.

template<typename InIterT , typename OutGridT , typename XformOp >
void openvdb::OPENVDB_VERSION_NAME::tools::transformValues ( const InIterT &  inIter,
OutGridT &  outGrid,
const XformOp &  op,
bool  threaded = true,
bool  shareOp = true,
MergePolicy  merge = MERGE_ACTIVE_STATES 
)
inline

Definition at line 627 of file ValueTransformer.h.

template<typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::transformVectors ( GridType &  grid,
const Mat4d &  mat 
)
inline

Apply an affine transform to the voxel values of a vector-valued grid in accordance with the grid's vector type (covariant, contravariant, etc.).

Exceptions
TypeErrorif the grid is not vector-valued

Definition at line 152 of file VectorTransformer.h.

template<class GridType >
bool openvdb::OPENVDB_VERSION_NAME::tools::uniqueInactiveValues ( const GridType &  grid,
std::vector< typename GridType::ValueType > &  values,
size_t  numValues 
)

Threaded method to find unique inactive values.

Parameters
gridA VDB volume.
valuesList of unique inactive values, returned by this method.
numValuesNumber of values to look for.
Returns
false if the grid has more than numValues inactive values.

Definition at line 1314 of file Diagnostics.h.

template<typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::volumeToMesh ( const GridType &  grid,
std::vector< Vec3s > &  points,
std::vector< Vec4I > &  quads,
double  isovalue = 0.0 
)
inline

Uniformly mesh any scalar grid that has a continuous isosurface.

Parameters
grida scalar grid to mesh
pointsoutput list of world space points
quadsoutput quad index list
isovaluedetermines which isosurface to mesh
Exceptions
TypeErrorif grid does not have a scalar value type

Definition at line 5277 of file VolumeToMesh.h.

template<typename GridType >
void openvdb::OPENVDB_VERSION_NAME::tools::volumeToMesh ( const GridType &  grid,
std::vector< Vec3s > &  points,
std::vector< Vec3I > &  triangles,
std::vector< Vec4I > &  quads,
double  isovalue = 0.0,
double  adaptivity = 0.0,
bool  relaxDisorientedTriangles = true 
)
inline

Adaptively mesh any scalar grid that has a continuous isosurface.

Parameters
grida scalar grid to mesh
pointsoutput list of world space points
trianglesoutput triangle index list
quadsoutput quad index list
isovaluedetermines which isosurface to mesh
adaptivitysurface adaptivity threshold [0 to 1]
relaxDisorientedTrianglestoggle relaxing disoriented triangles during adaptive meshing.
Exceptions
TypeErrorif grid does not have a scalar value type

Definition at line 5262 of file VolumeToMesh.h.