|
OpenVDB
4.0.2
|
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/integer_traits.hpp>#include <boost/scoped_array.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::v4_0_2 | |
| openvdb::v4_0_2::tools | |
| openvdb::v4_0_2::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.
1.8.13