OpenVDB
3.0.0
|
Classes | |
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... | |
class | AlphaMask |
class | BaseCamera |
Abstract base class for the perspective and orthographic cameras. More... | |
class | BasePointScatter |
Forward declaration of base class. More... | |
class | BaseShader |
Abstract base class for the shaders. More... | |
struct | BoxSampler |
class | ChangeBackgroundOp |
class | ChangeLevelSetBackgroundOp |
struct | CheckDivergence |
Checks the divergence against a range. More... | |
struct | CheckFinite |
Checks for both NaN and inf values, i.e. any value that is not finite. More... | |
struct | CheckInf |
Checks for infinite values, e.g. 1/0 or -1/0. 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 | CheckMax |
Checks a value against a maximum. More... | |
struct | CheckMin |
Checks a value against a minimum. More... | |
struct | CheckNan |
Checks nan values. More... | |
struct | CheckNormGrad |
Checks the norm of the gradient against a range. More... | |
struct | CheckRange |
Checks a value against a range. More... | |
class | ClosestPointProjector |
class | ClosestSurfacePoint |
Accelerated closest surface point queries for narrow band level sets. Supports queries that originate at arbitrary worldspace locations, is not confined to the narrow band region of the input volume geometry. More... | |
struct | CompReplaceOp |
class | ConstrainedPointAdvect |
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 | CopyFromDense |
Copy the values from a dense grid into an OpenVDB tree. More... | |
class | CopyToDense |
Copy an OpenVDB tree into an existing dense grid. More... | |
class | Cpt |
Compute the closest-point transform of a scalar grid. More... | |
struct | CsgDiffVisitor |
struct | CsgIntersectVisitor |
struct | CsgUnionVisitor |
class | CsgVisitorBase |
class | Curl |
Compute the curl of a vector grid. More... | |
class | Dense |
Dense is a simple dense grid API used by the CopyToDense and CopyFromDense classes defined below. More... | |
class | DenseBase |
Base class for Dense which is defined below. More... | |
class | DenseBase< ValueT, LayoutXYZ > |
Partial template specialization of DenseBase. More... | |
class | DenseBase< ValueT, LayoutZYX > |
Partial template specialization of DenseBase. 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... | |
class | DenseUniformPointScatter |
Scatters a fixed (and integer) number of points in all active voxels and tiles. More... | |
class | Diagnose |
Performs multithreaded diagnostics of a grid. More... | |
class | DiffuseShader |
Simple diffuse Lambertian surface shader. More... | |
class | DiffuseShader< Film::RGBA, SamplerType > |
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 | DiracDelta |
Smeared-out and continuous Dirac Delta function. More... | |
class | DiscreteField |
Thin wrapper class for a velocity grid. More... | |
class | Divergence |
Compute the divergence of a vector grid. More... | |
struct | DSConverter |
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 | EnrightField |
Analytical, divergence-free and periodic vecloity field. More... | |
struct | ExtractAll |
a simple utility class used by extractSparseTreeWithMask 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 | Filter |
Volume filtering (e.g., diffusion) with optional alpha masking. More... | |
class | Gradient |
Compute the gradient of a scalar grid. More... | |
class | GridResampler |
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 | 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... | |
struct | HomogeneousMatMul |
class | InactivePruneOp |
class | Laplacian |
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 | 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 | LevelSetPruneOp |
class | LevelSetRayIntersector |
This class provides the public API for intersecting a ray with a narrow-band level set. More... | |
class | LevelSetRayTracer |
A (very) simple multithreaded ray tracer specifically for narrow-band level sets. 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... | |
class | LinearSearchImpl |
Implements linear iterative search for an iso-value of the level set along along the direction of the ray. More... | |
class | Magnitude |
struct | MatMul |
struct | MatMulNormalize |
class | MatteShader |
Shader that produces a simple matte. More... | |
class | MatteShader< Film::RGBA, SamplerType > |
class | MeanCurvature |
class | MeshToVolume |
class | MeshToVoxelEdgeData |
Extracts and stores voxel edge intersection data from a mesh. More... | |
class | MinMaxVoxel |
Threaded operator that finds the minimum and maximum values among the active leaf-level voxels of a grid. More... | |
class | Morphology |
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 | Normalize |
class | NormalShader |
Color shader that treats the surface normal (x, y, z) as an RGB color. More... | |
class | NormalShader< Film::RGBA, SamplerType > |
class | OrthographicCamera |
class | ParticlesToLevelSet |
class | PerspectiveCamera |
class | PointAdvect |
struct | PointIndexFilter |
struct | PointIndexIterator |
Accelerated range and nearest-neighbor searches for point index grids. More... | |
struct | PointIndexLeafNode |
class | PointPartitioner |
Partitions points into Log2Dim aligned buckets. More... | |
struct | PointSampler |
class | PolygonPool |
Collection of quads and triangles. More... | |
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 > |
struct | QuadraticSampler |
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 | SignedFloodFillOp |
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 suppiled maks in the form of a sparse tree. The extractSparseTreeWithMask function wraps this class. More... | |
class | SparseToDenseCompositor |
struct | StaggeredBoxSampler |
struct | StaggeredPointSampler |
struct | StaggeredQuadraticSampler |
class | TolerancePruneOp |
class | UniformPointScatter |
The two point scatters UniformPointScatter and NonUniformPointScatter depend on the following two classes: 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... | |
class | VelocityIntegrator |
Performs runge-kutta time integration of variable order in a static velocity field. More... | |
class | VelocitySampler |
class | VolumeRayIntersector |
This class provides the public API for intersecting a ray with a generic (e.g. density) volume. More... | |
class | VolumeRender |
A (very) simple multithreaded volume render specifically for scalar density. More... | |
class | VolumeToMesh |
Mesh any scalar grid that has a continuous isosurface. More... | |
Typedefs | |
typedef tree::Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 > > > | PointIndexTree |
Point index tree configured to match the default OpenVDB tree configuration. More... | |
typedef Grid< PointIndexTree > | PointIndexGrid |
Point index grid. More... | |
typedef PointPartitioner< uint32_t, 3 > | UInt32PointPartitioner |
typedef boost::scoped_array< openvdb::Vec3s > | PointList |
Point and primitive list types. More... | |
typedef boost::scoped_array< PolygonPool > | PolygonPoolList |
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 | { GENERATE_PRIM_INDEX_GRID = 0x1, OUTPUT_RAW_DATA = 0x2 } |
Conversion flags, used to control the MeshToVolume output. More... | |
enum | NearestNeighbors { NN_FACE = 6, NN_FACE_EDGE = 18, NN_FACE_EDGE_VERTEX = 26 } |
Voxel topology of nearest neighbors. 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 > | |
OPENVDB_STATIC_SPECIALIZATION GridType::Ptr | clip (const GridType &grid, const BBoxd &) |
Clip the given grid against a world-space bounding box and return a new grid containing the result. More... | |
template<typename GridType , typename MaskTreeType > | |
OPENVDB_STATIC_SPECIALIZATION GridType::Ptr | clip (const GridType &grid, const Grid< MaskTreeType > &mask) |
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 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 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 > | |
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 > | |
boost::enable_if< boost::is_floating_point< typename GridT::ValueType >, Real >::type | doLevelSetArea (const GridT &grid, bool useWorldSpace) |
template<class GridT > | |
boost::disable_if< boost::is_floating_point< typename GridT::ValueType >, Real >::type | doLevelSetArea (const GridT &, bool) |
template<class GridT > | |
Real | levelSetArea (const GridT &grid, bool useWorldSpace) |
template<class GridT > | |
boost::enable_if< boost::is_floating_point< typename GridT::ValueType >, Real >::type | doLevelSetVolume (const GridT &grid, bool useWorldSpace) |
template<class GridT > | |
boost::disable_if< boost::is_floating_point< typename GridT::ValueType >, Real >::type | doLevelSetVolume (const GridT &, bool) |
template<class GridT > | |
Real | levelSetVolume (const GridT &grid, bool useWorldSpace) |
template<class GridT > | |
boost::enable_if< boost::is_floating_point< typename GridT::ValueType > >::type | doLevelSetMeasure (const GridT &grid, Real &area, Real &volume, bool useWorldSpace) |
template<class GridT > | |
boost::disable_if< boost::is_floating_point< typename GridT::ValueType > >::type | doLevelSetMeasure (const GridT &, Real &, Real &, bool) |
template<class GridT > | |
void | levelSetMeasure (const GridT &grid, Real &area, Real &volume, bool useWorldSpace) |
template<class GridT > | |
boost::enable_if< boost::is_floating_point< typename GridT::ValueType > >::type | doLevelSetMeasure (const GridT &grid, Real &area, Real &volume, Real &avgCurvature, bool useWorldSpace) |
template<class GridT > | |
boost::disable_if< boost::is_floating_point< typename GridT::ValueType > >::type | doLevelSetMeasure (const GridT &, Real &, Real &, Real &, bool) |
template<class GridT > | |
void | levelSetMeasure (const GridT &grid, Real &area, Real &volume, Real &avgCurvature, bool useWorldSpace) |
template<class GridType > | |
GridType::Ptr | levelSetRebuild (const GridType &grid, float isovalue=0, float halfWidth=float(LEVEL_SET_HALF_WIDTH), const math::Transform *xform=NULL) |
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=NULL) |
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=NULL, InterruptT *interrupter=NULL) |
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 > | |
boost::enable_if< boost::is_floating_point< typename GridType::ValueType >, typename GridType::Ptr >::type | doLevelSetRebuild (const GridType &grid, typename GridType::ValueType iso, typename GridType::ValueType exWidth, typename GridType::ValueType inWidth, const math::Transform *xform, InterruptT *interrupter) |
template<class GridType , typename InterruptT > | |
boost::disable_if< boost::is_floating_point< typename GridType::ValueType >, typename GridType::Ptr >::type | doLevelSetRebuild (const GridType &, typename GridType::ValueType, typename GridType::ValueType, typename GridType::ValueType, const math::Transform *, InterruptT *) |
template<typename GridType , typename InterruptT > | |
GridType::Ptr | createLevelSetSphere (float radius, const openvdb::Vec3f ¢er, float voxelSize, float halfWidth=float(LEVEL_SET_HALF_WIDTH), InterruptT *interrupt=NULL) |
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 ¢er, 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 GridType > | |
Grid< typename GridType::TreeType::template ValueConverter< bool >::Type >::Ptr | sdfInteriorMask (const GridType &grid, typename GridType::ValueType iso=lsutilGridZero< GridType >()) |
Threaded method to extract an interior region mask from a level set/SDF grid. 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 > | |
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 > | |
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 > | |
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 > | |
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 > | |
boost::enable_if< boost::is_floating_point< typename GridType::ValueType >, typename GridType::Ptr >::type | doMeshConversion (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float exBandWidth, float inBandWidth, bool unsignedDistanceField=false) |
template<typename GridType > | |
boost::disable_if< boost::is_floating_point< typename GridType::ValueType >, typename GridType::Ptr >::type | doMeshConversion (const math::Transform &, const std::vector< Vec3s > &, const std::vector< Vec3I > &, const std::vector< Vec4I > &, float, float, bool=false) |
std::ostream & | operator<< (std::ostream &ostr, const MeshToVoxelEdgeData::EdgeData &rhs) |
MeshToVoxelEdgeData::EdgeData | Abs (const MeshToVoxelEdgeData::EdgeData &x) |
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, 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 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) |
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) |
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 TreeOrLeafManagerT > | |
boost::enable_if< typename boost::is_floating_point< typename TreeOrLeafManagerT::ValueType >::type >::type | doSignedFloodFill (TreeOrLeafManagerT &tree, typename TreeOrLeafManagerT::ValueType outsideValue, typename TreeOrLeafManagerT::ValueType insideValue, bool threaded, size_t grainSize) |
template<typename TreeOrLeafManagerT > | |
boost::disable_if< typename boost::is_floating_point< typename TreeOrLeafManagerT::ValueType >::type >::type | doSignedFloodFill (TreeOrLeafManagerT &, const typename TreeOrLeafManagerT::ValueType &, const typename TreeOrLeafManagerT::ValueType &, bool, size_t) |
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 extremas (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 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 > | |
boost::disable_if_c< VecTraits< typename GridType::ValueType >::IsVec, void >::type | doTransformVectors (GridType &, const Mat4d &) |
template<typename GridType > | |
boost::enable_if_c< VecTraits< typename GridType::ValueType >::IsVec, void >::type | doTransformVectors (GridType &grid, const Mat4d &mat) |
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) |
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 GridType > | |
boost::enable_if< boost::is_scalar< typename GridType::ValueType >, void >::type | doVolumeToMesh (const GridType &grid, std::vector< Vec3s > &points, std::vector< Vec3I > &triangles, std::vector< Vec4I > &quads, double isovalue, double adaptivity) |
template<typename GridType > | |
boost::disable_if< boost::is_scalar< typename GridType::ValueType >, void >::type | doVolumeToMesh (const GridType &, std::vector< Vec3s > &, std::vector< Vec3I > &, std::vector< Vec4I > &, double, double) |
template<typename GridT , typename InterrupterT > | |
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=NULL) |
Threaded method to fill a closed level set or fog volume with adaptively sized spheres. More... | |
template<typename GridT > | |
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) |
fillWithSpheres method variant that automatically infers the util::NullInterrupter. More... | |
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 Grid<PointIndexTree> PointIndexGrid |
Point index grid.
typedef tree::Tree<tree::RootNode<tree::InternalNode<tree::InternalNode <PointIndexLeafNode<PointIndex32, 3>, 4>, 5> > > PointIndexTree |
Point index tree configured to match the default OpenVDB tree configuration.
typedef boost::scoped_array<openvdb::Vec3s> PointList |
Point and primitive list types.
typedef boost::scoped_array<PolygonPool> PolygonPoolList |
Point and primitive list types.
typedef PointPartitioner<uint32_t, 3> UInt32PointPartitioner |
anonymous enum |
Conversion flags, used to control the MeshToVolume output.
Enumerator | |
---|---|
GENERATE_PRIM_INDEX_GRID | |
OUTPUT_RAW_DATA |
anonymous enum |
enum DSCompositeOp |
enum MemoryLayout |
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 |
enum NearestNeighbors |
Voxel topology of nearest neighbors.
face adjacency (6 nearest neighbors, defined as all neighbor voxels connected along one of the primary axes)
face and edge adjacency (18 nearest neighbors, defined as all neighbor voxels connected along either one or two of the primary axes)
Enumerator | |
---|---|
NN_FACE | |
NN_FACE_EDGE | |
NN_FACE_EDGE_VERTEX |
|
inline |
|
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.
iter | an iterator over a grid or its tree (Grid::ValueOnCIter , Tree::NodeIter , etc.) |
op | a 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 |
threaded | if true, transform multiple values of the grid in parallel |
tbb::parallel_for()
or tbb::parallel_reduce()
in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.
|
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).
|
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.
tree | Tree (or LeafManager) that will have its background value changed |
outsideWidth | The width of the outside of the narrow band |
insideWidth | The width of the inside of the narrow band |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 32) |
ValueError | if outsideWidth is negative or insideWidth is not negative (as defined by math::isNegative) |
|
inline |
Replace the background value in all the nodes of a tree.
The sign of the background value is perserved, and only inactive values equal to the old background value are replaced.
tree | Tree (or LeafManager) that will have its background value changed |
background | the new background value |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 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.
tree | Tree (or LeafManager) that will have its background value changed |
halfWidth | half of the width of the symmetric narrow band |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 32) |
ValueError | if halfWidth is negative (as defined by math::isNegative) |
|
inline |
Clip the given grid against a world-space bounding box and return a new grid containing the result.
|
inline |
Clip a grid against the active voxels of another grid and return a new grid containing the result.
grid | the grid to be clipped |
mask | a grid whose active voxels form a boolean clipping 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.
|
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.
|
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.
|
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.
|
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.
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.
dense | Dense grid to be altered by the operation |
source | Sparse data to composite into dense |
alpha | Sparse Alpha mask used in compositing operations. |
beta | Constant multiplier on src |
strength | Constant multiplier on alpha |
threaded | Enable threading for this operation. |
|
inline |
Copy the active voxels of B into A.
|
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.
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.
dense | the dense grid from which to copy values |
sparse | an OpenVDB grid or tree into which to copy values |
tolerance | values 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 |
serial | if false, process voxels in parallel |
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.
sparse | an OpenVDB grid or tree from which to copy values |
dense | the dense grid into which to copy values |
serial | if false, process voxels in parallel |
|
inline |
Compute the Closest-Point Transform (CPT) from a distance field.
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.
|
inline |
|
inline |
|
inline |
GridType::Ptr createLevelSetSphere | ( | float | radius, |
const openvdb::Vec3f & | center, | ||
float | voxelSize, | ||
float | halfWidth = float(LEVEL_SET_HALF_WIDTH) , |
||
InterruptT * | interrupt = NULL |
||
) |
Return a grid of type GridType
containing a narrow-band level set representation of a sphere.
radius | radius of the sphere in world units |
center | center of the sphere in world units |
voxelSize | voxel size in world units |
halfWidth | half the width of the narrow band, in voxel units |
interrupt | a pointer adhering to the util::NullInterrupter interface |
GridType::ValueType
must be a floating-point scalar. GridType::Ptr openvdb::v3_0_0::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.
radius | radius of the sphere in world units |
center | center of the sphere in world units |
voxelSize | voxel size in world units |
halfWidth | half the width of the narrow band, in voxel units |
GridType::ValueType
must be a floating-point scalar.
|
inline |
Partition points into a point index grid to accelerate range and nearest-neighbor searches.
points | world-space point array conforming to the PointArray interface |
xform | world-to-index-space transform |
|
inline |
Given two level set grids, replace the A grid with the difference A / B.
ValueError | if the background value of either grid is not greater than zero. |
|
inline |
Given two level set grids, replace the A grid with the intersection of A and B.
ValueError | if the background value of either grid is not greater than zero. |
|
inline |
Given two level set grids, replace the A grid with the union of A and B.
ValueError | if the background value of either grid is not greater than zero. |
|
inline |
Compute the curl of the given 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.
|
inline |
|
inline |
|
inline |
|
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).
|
inline |
Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns.
tree | tree to be dilated |
iterations | number of iterations to apply the dilation |
nn | connectivity 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). |
|
inline |
Topologically dilate all leaf-level active voxels in a tree using one of three nearest neighbor connectivity patterns.
manager | LeafManager containing the tree to be dilated. |
iterations | number of iterations to apply the dilation |
nn | connectivity 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). |
|
inline |
Compute the divergence of the given 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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
The normal entry points for level set rebuild are the levelSetRebuild() functions. doLevelSetRebuild() is mainly for internal use, but when the isovalue and half band widths are given in ValueType units (for example, if they are queried from a grid), it might be more convenient to call this function directly.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
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.
|
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.
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.)
dense | A dense grid that acts as a data source |
functor | A functor that selects and transforms data for output |
background | The background value of the resulting sparse grid |
threaded | Option to use threaded or serial code path |
Ptr
to tree with the valuetype and configuration defined by typedefs in the functor
. 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
For example, to generate a <ValueType, 5, 4, 3> tree with valuesOn at locations greater than a given maskvalue
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.
dense | A dense grid that acts as a data source |
mask | The active voxels and tiles intersected with dense define iteration mask |
background | The background value of the resulting sparse grid |
threaded | Option to use threaded or serial code path |
Ptr
to tree with the same configuration as mask
but of value type defined by dense
.
|
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.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
threaded | if true, iterate over the grid in parallel |
|
inline |
Iterate over a grid and compute extremas (min/max) of the values produced by applying the given functor at each voxel that is visited.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
op | a 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 |
threaded | if true, iterate over the grid in parallel |
|
inline |
Threaded method to fill a closed level set or fog volume with adaptively sized spheres.
grid | a scalar gird to fill with spheres. |
spheres | a Vec4 array representing the spheres that returned by this method. The first three components specify the sphere center and the fourth is the radius. The spheres in this array are ordered by radius, biggest to smallest. |
maxSphereCount | no more than this number of spheres are generated. |
overlapping | toggle to allow spheres to overlap/intersect |
minRadius | determines the smallest sphere size in voxel units. |
maxRadius | determines the largest sphere size in voxel units. |
isovalue | the crossing point of the volume values that is considered the surface. The zero default value works for signed distance fields while fog volumes require a larger positive value, 0.5 is a good initial guess. |
instanceCount | how many interior points to consider for the sphere placement, increasing this count increases the chances of finding optimal sphere sizes. |
interrupter | a pointer adhering to the util::NullInterrupter interface |
|
inline |
fillWithSpheres
method variant that automatically infers the util::NullInterrupter.
|
inline |
Given a set of tangent elements, points
with corresponding normals
, this method returns the intersection point of all tangent elements.
|
inline |
Iterate over a grid and at each step call op(iter)
.
iter | an iterator over a grid or its tree (Grid::ValueOnCIter , Tree::NodeIter , etc.) |
op | a functor of the form void op(const IterT&) , where IterT is the type of iter |
threaded | if true, transform multiple values of the grid in parallel |
shareOp | if true and threaded is true, all threads use the same functor; otherwise, each thread gets its own copy of the original functor |
tbb::parallel_for()
or tbb::parallel_reduce()
in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.
|
inline |
|
inline |
Repartition the points if needed, otherwise return the input grid.
|
inline |
Repartition the points if needed, otherwise return the input grid.
|
inline |
Compute the gradient of the given 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.
|
inline |
|
inline |
|
inline |
|
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.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
minVal | the smallest value that can be added to the histogram |
maxVal | the largest value that can be added to the histogram |
numBins | the number of histogram bins |
threaded | if true, iterate over the grid in parallel |
|
inline |
Return true
if the given point index grid represents a valid partitioning of the given point array.
points | world-space point array conforming to the PointArray interface |
grid | point index grid to validate |
|
inline |
Compute the Laplacian of the given 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.
|
inline |
|
inline |
|
inline |
|
inline |
Return the surface area of a narrow-band level set.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
useWorldSpace | if true the area is computed in world space units, else in voxel units. |
TypeError | if grid is not scalar or not floating-point or not a level set. |
|
inline |
|
inline |
Compute the surface area and volume of a narrow-band level set.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
area | surface area of the level set |
volume | volume of the level set surface |
useWorldSpace | if true the area and volume are computed in world space units, else in voxel units. |
TypeError | if grid is not scalar or not floating-point or not a level set. |
|
inline |
Compute the surface area and volume of a narrow-band level set.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
area | surface area of the level set |
volume | volume of the level set surface |
avgCurvature | average mean curvature of the level set surface |
useWorldSpace | if true the area, volume and curvature are computed in world space units, else in voxel units. |
TypeError | if grid is not scalar or not floating-point or not a level set. |
|
inline |
|
inline |
|
inline |
Return a new grid of type GridType
that contains a narrow-band level set representation of an isosurface of a given grid.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
isovalue | the isovalue that defines the implicit surface (defaults to zero, which is typical if the input grid is already a level set or a SDF). |
halfWidth | half the width of the narrow band, in voxel units (defaults to 3 voxels, which is required for some level set operations) |
xform | optional transform for the output grid (if not provided, the transform of the input grid will be matched) |
TypeError | if grid is not scalar or not floating-point |
|
inline |
Return a new grid of type GridType
that contains a narrow-band level set representation of an isosurface of a given grid.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
isovalue | the isovalue that defines the implicit surface |
exBandWidth | the exterior narrow-band width in voxel units |
inBandWidth | the interior narrow-band width in voxel units |
xform | optional transform for the output grid (if not provided, the transform of the input grid will be matched) |
TypeError | if grid is not scalar or not floating-point |
|
inline |
Return a new grid of type GridType
that contains a narrow-band level set representation of an isosurface of a given grid.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
isovalue | the isovalue that defines the implicit surface |
exBandWidth | the exterior narrow-band width in voxel units |
inBandWidth | the interior narrow-band width in voxel units |
xform | optional transform for the output grid (if not provided, the transform of the input grid will be matched) |
interrupter | optional interrupter object |
TypeError | if grid is not scalar or not floating-point |
|
inline |
Return the volume of a narrow-band level set surface.
grid | a scalar, floating-point grid with one or more disjoint, closed isosurfaces at the given isovalue |
useWorldSpace | if true the volume is computed in world space units, else in voxel units. |
TypeError | if grid is not scalar or not floating-point or not a level set. |
|
inline |
|
inline |
Compute the magnitudes of the vectors of the given 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.
|
inline |
|
inline |
|
inline |
|
inline |
Compute the mean curvature of the given 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.
|
inline |
|
inline |
|
inline |
|
inline |
Convert a triangle mesh to a level set volume.
GridType
containing a narrow-band level set representation of the input mesh.TypeError | if GridType is not scalar or not floating-point |
xform | transform for the output grid |
points | list of world space point positions |
triangles | triangle index list |
halfWidth | half the width of the narrow band, in voxel units |
|
inline |
Convert a quad mesh to a level set volume.
GridType
containing a narrow-band level set representation of the input mesh.TypeError | if GridType is not scalar or not floating-point |
xform | transform for the output grid |
points | list of world space point positions |
quads | quad index list |
halfWidth | half the width of the narrow band, in voxel units |
|
inline |
Convert a triangle and quad mesh to a level set volume.
GridType
containing a narrow-band level set representation of the input mesh.TypeError | if GridType is not scalar or not floating-point |
xform | transform for the output grid |
points | list of world space point positions |
triangles | triangle index list |
quads | quad index list |
halfWidth | half the width of the narrow band, in voxel units |
|
inline |
Convert a triangle and quad mesh to a signed distance field with an asymmetrical narrow band.
GridType
containing a narrow-band signed distance field representation of the input mesh.TypeError | if GridType is not scalar or not floating-point |
xform | transform for the output grid |
points | list of world space point positions |
triangles | triangle index list |
quads | quad index list |
exBandWidth | the exterior narrow-band width in voxel units |
inBandWidth | the interior narrow-band width in voxel units |
|
inline |
Convert a triangle and quad mesh to an unsigned distance field.
GridType
containing a narrow-band unsigned distance field representation of the input mesh.TypeError | if GridType is not scalar or not floating-point |
xform | transform for the output grid |
points | list of world space point positions |
triangles | triangle index list |
quads | quad index list |
bandWidth | the width of the narrow band, in voxel units |
|
inline |
Normalize the vectors of the given 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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Same as opStatistics except it returns a math::Extrema vs a math::Stats.
|
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.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
op | an operator object with a method of the form double result(Accessor&, const Coord&) |
threaded | if true, iterate over the grid in parallel |
result()
methods are of the form double result(const Map&, Accessor&, const Coord&)
, must be wrapped in a math::MapAdapter.
|
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.
tree | the tree to be pruned |
tolerance | tolerance within which values are considered to be equal |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
|
inline |
Reduce the memory footprint of a tree by replacing with background tiles any nodes whose values are all inactive.
tree | the tree to be pruned |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
|
inline |
Reduce the memory footprint of a tree by replacing any nodes whose values are all inactive with tiles of the given value.
tree | the tree to be pruned |
value | value assigned to inactive tiles created during pruning |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 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.
tree | the tree to be pruned |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
ValueError | if the background of the tree is negative (as defined by math::isNegative) |
|
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.
tree | the tree to be pruned |
outsideWidth | the width of the outside of the narrow band |
insideWidth | the width of the inside of the narrow band |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
ValueError | if outsideWidth is negative or insideWidth is not negative (as defined by math::isNegative). |
|
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.
tree | the tree to be pruned |
tolerance | tolerance within which values are considered to be equal |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
|
inline |
Ray-trace a volume.
|
inline |
Ray-trace a volume using a given ray intersector.
|
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.
inGrid | the grid to be resampled |
outGrid | the grid into which to write the resampled voxel data |
interrupter | an object adhering to the util::NullInterrupter interface |
|
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.
inGrid | the grid to be resampled |
outGrid | the grid into which to write the resampled voxel data |
|
inline |
Threaded method to extract an interior region mask from a level set/SDF grid.
grid
and whose active voxels correspond to the interior of the input SDFgrid | a level set/SDF grid |
iso | threshold below which values are considered to be part of the interior region |
|
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.
grid | level set/SDF grid to transform |
cutoffDistance | optional world space cutoff distance for the ramp (automatically clamped if greater than the interior narrow band width) |
|
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().
|
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().
|
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().
|
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().
|
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.
tree | Tree or LeafManager that will be flood filled. |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
TypeError | if the ValueType of tree is not floating-point. |
|
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.
tree | Tree or LeafManager that will be flood filled |
outsideWidth | the width of the outside of the narrow band |
insideWidth | the width of the inside of the narrow band |
threaded | enable or disable threading (threading is enabled by default) |
grainSize | used to control the threading granularity (default is 1) |
TypeError | if the ValueType of tree is not floating-point. |
|
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.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
threaded | if true, iterate over the grid in parallel |
|
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.
iter | an iterator over the values of a grid or its tree (Grid::ValueOnCIter , Tree::ValueOffIter , etc.) |
op | a 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 |
threaded | if true, iterate over the grid in parallel |
void openvdb::v3_0_0::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
dense | A dense grid to be transformed |
bbox | Index space bounding box, define region where the transformation is applied |
op | A functor that acts on the dense grid value type |
parallel | Used 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;
}
};
|
void openvdb::v3_0_0::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.
|
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.
inIter | a non-const or (preferably) const iterator over an input grid or its tree (Grid::ValueOnCIter , Tree::NodeIter , etc.) |
outGrid | an empty grid to be populated |
op | a functor of the form void op(const InIterT&, OutGridT::ValueAccessor&) , where InIterT is the type of inIter |
threaded | if true, transform multiple values of the input grid in parallel |
shareOp | if true and threaded is true, all threads use the same functor; otherwise, each thread gets its own copy of the original functor |
merge | how to merge intermediate results from multiple threads (see Types.h) |
tbb::parallel_for()
or tbb::parallel_reduce()
in conjunction with a tree::IteratorRange that wraps a grid or tree iterator.
|
inline |
|
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.).
TypeError | if the grid is not vector-valued |
bool uniqueInactiveValues | ( | const GridType & | grid, |
std::vector< typename GridType::ValueType > & | values, | ||
size_t | numValues | ||
) |
Threaded method to find unique inactive values.
grid | A VDB volume. |
values | List of unique inactive values, returned by this method. |
numValues | Number of values to look for. |
false
if the grid has more than numValues inactive values.
|
inline |
Uniformly mesh any scalar grid that has a continuous isosurface.
grid | a scalar grid to mesh |
points | output list of world space points |
quads | output quad index list |
isovalue | determines which isosurface to mesh |
TypeError | if grid does not have a scalar value type |
|
inline |
Adaptively mesh any scalar grid that has a continuous isosurface.
grid | a scalar grid to mesh |
points | output list of world space points |
triangles | output quad index list |
quads | output quad index list |
isovalue | determines which isosurface to mesh |
adaptivity | surface adaptivity threshold [0 to 1] |
TypeError | if grid does not have a scalar value type |