OpenVDB  3.0.0
Classes | Namespaces | Enumerations | Functions
MeshToVolume.h File Reference
#include <openvdb/Types.h>
#include <openvdb/math/FiniteDifference.h>
#include <openvdb/math/Operators.h>
#include <openvdb/math/Proximity.h>
#include <openvdb/tools/Morphology.h>
#include <openvdb/util/NullInterrupter.h>
#include <openvdb/util/Util.h>
#include "ChangeBackground.h"
#include "Prune.h"
#include "SignedFloodFill.h"
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include <tbb/parallel_reduce.h>
#include <boost/math/special_functions/fpclassify.hpp>
#include <deque>
#include <limits>
#include <sstream>

Go to the source code of this file.

Classes

class  MeshToVolume< FloatGridT, InterruptT >
 
class  MeshToVoxelEdgeData
 Extracts and stores voxel edge intersection data from a mesh. More...
 
struct  MeshToVoxelEdgeData::EdgeData
 Internal edge data type. More...
 
class  PointTransform
 
struct  Tolerance< ValueType >
 
class  MeshVoxelizer< FloatTreeT, InterruptT >
 TBB body object to voxelize a mesh of triangles and/or quads into a collection of VDB grids, namely a squared distance grid, a closest primitive grid and an intersecting voxels grid (masks the mesh intersecting voxels) More...
 
class  ContourTracer< FloatTreeT, InterruptT >
 TBB body object that partitions a volume into 2D slices that can be processed in parallel and marks the exterior contour of disjoint voxel sets in each slice. More...
 
class  SignMask< FloatTreeT, InterruptT >
 TBB body object that that finds seed points for the parallel flood fill. More...
 
class  PropagateSign< FloatTreeT, InterruptT >
 TBB body object that performs a parallel flood fill. More...
 
class  IntersectingVoxelSign< FloatTreeT >
 TBB body object that traversers all intersecting voxels (defined by the intersectingVoxelsGrid) and potentially flips their sign, by comparing the "closest point" directions of outside-marked and non-intersecting neighboring voxels. More...
 
class  IntersectingVoxelCleaner< FloatTreeT >
 TBB body object that removes intersecting voxels that were set via voxelization of self-intersecting parts of a mesh. More...
 
class  ShellVoxelCleaner< FloatTreeT >
 TBB body object that removes non-intersecting voxels that where set by rasterizing self-intersecting parts of the mesh. More...
 
struct  CopyActiveVoxelsOp< TreeType >
 
class  ExpandNB< FloatTreeT >
 TBB body object to expand the level set narrow band. More...
 
struct  SqrtAndScaleOp< ValueType >
 
struct  VoxelSignOp< ValueType >
 
struct  TrimOp< ValueType >
 
struct  OffsetOp< ValueType >
 
struct  RenormOp< GridType, ValueType >
 
struct  MinOp< TreeType, ValueType >
 
struct  MergeBufferOp< TreeType, ValueType >
 
struct  LeafTopologyDiffOp< TreeType >
 
class  MeshToVoxelEdgeData::GenEdgeData
 

Namespaces

 openvdb
 
 openvdb::v3_0_0
 
 openvdb::v3_0_0::tools
 
 openvdb::v3_0_0::tools::internal
 

Enumerations

enum  { GENERATE_PRIM_INDEX_GRID = 0x1, OUTPUT_RAW_DATA = 0x2 }
 Conversion flags, used to control the MeshToVolume output. More...
 

Functions

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 FloatTreeT , typename IntTreeT >
void combine (FloatTreeT &lhsDist, IntTreeT &lhsIndex, FloatTreeT &rhsDist, IntTreeT &rhsIndex)
 
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)