OpenVDB
2.3.0
|
Namespaces | |
activation | |
composite | |
ds | |
gridop | |
internal | |
local | |
local_util | |
stats_internal | |
valxform | |
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 | BaseCamera |
Abstract base class for the perspective and orthographic cameras. More... | |
class | BaseShader |
Abstract base class for the shaders. More... | |
struct | BoxSampler |
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 | DiffuseShader |
Simple diffuse Lambertian surface shader. 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 | 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 | 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 | 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 | 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 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 | OrthographicCamera |
class | ParticlesToLevelSet |
class | PerspectiveCamera |
class | PointAdvect |
struct | PointSampler |
class | PolygonPool |
Collection of quads and triangles. More... | |
class | PositionShader |
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 | 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 | 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 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 | { POLYFLAG_EXTERIOR = 0x1, POLYFLAG_FRACTURE_SEAM = 0x2, POLYFLAG_SUBDIVIDED = 0x4 } |
Polygon flags, used for reference based meshing. More... | |
Functions | |
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<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 unsignedDistanceField=false) |
std::ostream & | operator<< (std::ostream &ostr, const MeshToVoxelEdgeData::EdgeData &rhs) |
MeshToVoxelEdgeData::EdgeData | Abs (const MeshToVoxelEdgeData::EdgeData &x) |
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 > | |
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 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::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::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 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 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 | dilateVoxels (TreeType &tree, int count=1) |
template<typename TreeType > | |
OPENVDB_STATIC_SPECIALIZATION void | dilateVoxels (tree::LeafManager< TreeType > &manager, int count=1) |
template<typename TreeType > | |
OPENVDB_STATIC_SPECIALIZATION void | erodeVoxels (TreeType &tree, int count=1) |
template<typename TreeType > | |
OPENVDB_STATIC_SPECIALIZATION void | erodeVoxels (tree::LeafManager< TreeType > &manager, int count=1) |
typedef boost::scoped_array<openvdb::Vec3s> PointList |
Point and primitive list types.
typedef boost::scoped_array<PolygonPool> PolygonPoolList |
Point and primitive list types.
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 |
|
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 |
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::v2_3_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 |
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 the given tree, i.e., expand the set of active voxels by count 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 dilate all leaf-level active voxels in the given tree, i.e., expand the set of active voxels by count 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 |
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 |
Topologically erode all leaf-level active voxels in the given tree, i.e., shrink the set of active voxels by count 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, i.e., shrink the set of active voxels by count 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 |
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 |
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 |
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 |
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 |
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 |
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::v2_3_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::v2_3_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 |
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.
grid | a scalar grid to mesh |
points | output list of world space points |
quads | output quad index list |
isovalue | determines which isosurface to mesh |
|
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] |