OpenVDB
6.0.0
|
Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes. More...
#include <openvdb/Platform.h>
#include <openvdb/Types.h>
#include <openvdb/math/FiniteDifference.h>
#include <openvdb/math/Proximity.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/enumerable_thread_specific.h>
#include <tbb/parallel_for.h>
#include <tbb/parallel_reduce.h>
#include <tbb/partitioner.h>
#include <tbb/task_group.h>
#include <tbb/task_scheduler_init.h>
#include <boost/mpl/at.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/size.hpp>
#include <algorithm>
#include <cmath>
#include <deque>
#include <limits>
#include <memory>
#include <sstream>
#include <type_traits>
#include <vector>
Go to the source code of this file.
Namespaces | |
openvdb | |
openvdb::v6_0 | |
openvdb::v6_0::tools | |
openvdb::v6_0::tools::mesh_to_volume_internal | |
Enumerations | |
enum | MeshToVolumeFlags { UNSIGNED_DISTANCE_FIELD = 0x1, DISABLE_INTERSECTING_VOXEL_REMOVAL = 0x2, DISABLE_RENORMALIZATION = 0x4, DISABLE_NARROW_BAND_TRIMMING = 0x8 } |
Mesh to volume conversion flags. More... | |
Functions | |
template<typename GridType , typename MeshDataAdapter > | |
GridType::Ptr | meshToVolume (const MeshDataAdapter &mesh, const math::Transform &transform, float exteriorBandWidth=3.0f, float interiorBandWidth=3.0f, int flags=0, typename GridType::template ValueConverter< Int32 >::Type *polygonIndexGrid=nullptr) |
template<typename GridType , typename MeshDataAdapter , typename Interrupter > | |
GridType::Ptr | meshToVolume (Interrupter &interrupter, const MeshDataAdapter &mesh, const math::Transform &transform, float exteriorBandWidth=3.0f, float interiorBandWidth=3.0f, int flags=0, typename GridType::template ValueConverter< Int32 >::Type *polygonIndexGrid=nullptr) |
Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes. More... | |
template<typename GridType > | |
GridType::Ptr | meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Convert a triangle mesh to a level set volume. More... | |
template<typename GridType , typename Interrupter > | |
GridType::Ptr | meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Adds support for a interrupter callback used to cancel the conversion. More... | |
template<typename GridType > | |
GridType::Ptr | meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Convert a quad mesh to a level set volume. More... | |
template<typename GridType , typename Interrupter > | |
GridType::Ptr | meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Adds support for a interrupter callback used to cancel the conversion. More... | |
template<typename GridType > | |
GridType::Ptr | meshToLevelSet (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Convert a triangle and quad mesh to a level set volume. More... | |
template<typename GridType , typename Interrupter > | |
GridType::Ptr | meshToLevelSet (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float halfWidth=float(LEVEL_SET_HALF_WIDTH)) |
Adds support for a interrupter callback used to cancel the conversion. More... | |
template<typename GridType > | |
GridType::Ptr | meshToSignedDistanceField (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float exBandWidth, float inBandWidth) |
Convert a triangle and quad mesh to a signed distance field with an asymmetrical narrow band. More... | |
template<typename GridType , typename Interrupter > | |
GridType::Ptr | meshToSignedDistanceField (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float exBandWidth, float inBandWidth) |
Adds support for a interrupter callback used to cancel the conversion. More... | |
template<typename GridType > | |
GridType::Ptr | meshToUnsignedDistanceField (const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float bandWidth) |
Convert a triangle and quad mesh to an unsigned distance field. More... | |
template<typename GridType , typename Interrupter > | |
GridType::Ptr | meshToUnsignedDistanceField (Interrupter &interrupter, const openvdb::math::Transform &xform, const std::vector< Vec3s > &points, const std::vector< Vec3I > &triangles, const std::vector< Vec4I > &quads, float bandWidth) |
Adds support for a interrupter callback used to cancel the conversion. More... | |
template<typename GridType , typename VecType > | |
GridType::Ptr | createLevelSetBox (const math::BBox< VecType > &bbox, const openvdb::math::Transform &xform, typename VecType::ValueType halfWidth=LEVEL_SET_HALF_WIDTH) |
Return a grid of type GridType containing a narrow-band level set representation of a box. More... | |
template<typename FloatTreeT > | |
void | traceExteriorBoundaries (FloatTreeT &tree) |
Traces the exterior voxel boundary of closed objects in the input volume tree. Exterior voxels are marked with a negative sign, voxels with a value below 0.75 are left unchanged and act as the boundary layer. More... | |
template<typename LeafNodeType > | |
void | seedFill (LeafNodeType &node) |
template<typename LeafNodeType > | |
bool | scanFill (LeafNodeType &node) |
template<typename ValueType > | |
void | fillArray (ValueType *array, const ValueType val, const size_t length) |
template<typename LeafNodeType > | |
void | maskNodeInternalNeighbours (const Index pos, bool(&mask)[26]) |
template<typename Compare , typename LeafNodeType > | |
bool | checkNeighbours (const Index pos, const typename LeafNodeType::ValueType *data, bool(&mask)[26]) |
template<typename Compare , typename AccessorType > | |
bool | checkNeighbours (const Coord &ijk, AccessorType &acc, bool(&mask)[26]) |
template<typename TreeType > | |
void | releaseLeafNodes (TreeType &tree) |
template<typename DistTreeType , typename IndexTreeType > | |
void | combineData (DistTreeType &lhsDist, IndexTreeType &lhsIdx, DistTreeType &rhsDist, IndexTreeType &rhsIdx) |
template<typename TreeType , typename Int32TreeType , typename BoolTreeType , typename MeshDataAdapter > | |
void | expandNarrowband (TreeType &distTree, Int32TreeType &indexTree, BoolTreeType &maskTree, std::vector< typename BoolTreeType::LeafNodeType * > &maskNodes, const MeshDataAdapter &mesh, typename TreeType::ValueType exteriorBandWidth, typename TreeType::ValueType interiorBandWidth, typename TreeType::ValueType voxelSize) |
std::ostream & | operator<< (std::ostream &ostr, const MeshToVoxelEdgeData::EdgeData &rhs) |
MeshToVoxelEdgeData::EdgeData | Abs (const MeshToVoxelEdgeData::EdgeData &x) |
Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes.