HDK
|
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 <openvdb/thread/Threading.h>
#include <openvdb/openvdb.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_arena.h>
#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.
Classes | |
struct | openvdb::OPENVDB_VERSION_NAME::tools::QuadAndTriangleDataAdapter< PointType, PolygonType > |
Contiguous quad and triangle data adapter class. More... | |
class | openvdb::OPENVDB_VERSION_NAME::tools::MeshToVoxelEdgeData |
Extracts and stores voxel edge intersection data from a mesh. More... | |
struct | openvdb::OPENVDB_VERSION_NAME::tools::MeshToVoxelEdgeData::EdgeData |
Internal edge data type. More... | |
class | openvdb::OPENVDB_VERSION_NAME::tools::MeshToVoxelEdgeData::GenEdgeData |
Namespaces | |
openvdb | |
openvdb::OPENVDB_VERSION_NAME | |
openvdb::OPENVDB_VERSION_NAME::tools | |
Enumerations | |
enum | openvdb::OPENVDB_VERSION_NAME::tools::MeshToVolumeFlags { openvdb::OPENVDB_VERSION_NAME::tools::UNSIGNED_DISTANCE_FIELD = 0x1, openvdb::OPENVDB_VERSION_NAME::tools::DISABLE_INTERSECTING_VOXEL_REMOVAL = 0x2, openvdb::OPENVDB_VERSION_NAME::tools::DISABLE_RENORMALIZATION = 0x4, openvdb::OPENVDB_VERSION_NAME::tools::DISABLE_NARROW_BAND_TRIMMING = 0x8 } |
Mesh to volume conversion flags. More... | |
enum | openvdb::OPENVDB_VERSION_NAME::tools::InteriorTestStrategy { openvdb::OPENVDB_VERSION_NAME::tools::EVAL_EVERY_VOXEL = 0, openvdb::OPENVDB_VERSION_NAME::tools::EVAL_EVERY_TILE = 1 } |
Different staregies how to determine sign of an SDF when using interior test. More... | |
Functions | |
template<typename GridType , typename MeshDataAdapter , typename InteriorTest = std::nullptr_t> | |
GridType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::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, InteriorTest interiorTest=nullptr, InteriorTestStrategy interiorTestStrat=EVAL_EVERY_VOXEL) |
template<typename GridType , typename MeshDataAdapter , typename Interrupter , typename InteriorTest = std::nullptr_t> | |
GridType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::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, InteriorTest interiorTest=nullptr, InteriorTestStrategy interiorTestStrategy=EVAL_EVERY_VOXEL) |
Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes. More... | |
template<typename GridType > | |
GridType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 | openvdb::OPENVDB_VERSION_NAME::tools::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 T , Index Log2Dim, typename InteriorTest > | |
void | openvdb::OPENVDB_VERSION_NAME::tools::floodFillLeafNode (tree::LeafNode< T, Log2Dim > &leafNode, const InteriorTest &interiorTest) |
template<typename FloatTreeT , typename InteriorTest > | |
void | openvdb::OPENVDB_VERSION_NAME::tools::evaluateInteriorTest (FloatTreeT &tree, InteriorTest interiorTest, InteriorTestStrategy interiorTestStrategy) |
Sets the sign of voxel values of tree based on the interiorTest More... | |
std::ostream & | openvdb::OPENVDB_VERSION_NAME::tools::operator<< (std::ostream &ostr, const MeshToVoxelEdgeData::EdgeData &rhs) |
MeshToVoxelEdgeData::EdgeData | openvdb::OPENVDB_VERSION_NAME::tools::Abs (const MeshToVoxelEdgeData::EdgeData &x) |
Convert polygonal meshes that consist of quads and/or triangles into signed or unsigned distance field volumes.
Definition in file MeshToVolume.h.