31 #ifndef OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED 32 #define OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED 34 #include <openvdb/Types.h> 35 #include <openvdb/tree/Tree.h> 36 #include <openvdb/tools/ValueTransformer.h> 37 #include <openvdb/tools/Prune.h> 59 ijk[0] = int(std::floor(voxelCoord[0]));
60 ijk[1] = int(std::floor(voxelCoord[1]));
61 ijk[2] = int(std::floor(voxelCoord[2]));
71 template<
class TreeType1,
class TreeType2>
77 inline void operator()(
const typename TreeType1::LeafIter& lIter)
const 79 const Coord xyz = lIter->origin();
80 const typename TreeType2::LeafNodeType* leaf = mOtherTree->probeConstLeaf(xyz);
82 lIter->topologyIntersection(*leaf, zeroVal<typename TreeType1::ValueType>());
83 }
else if (!mOtherTree->isValueOn(xyz)) {
84 lIter->setValuesOff();
89 const TreeType2* mOtherTree;
95 template<
class TreeType1,
class TreeType2>
101 inline void operator()(
const typename TreeType1::LeafIter& lIter)
const 103 const Coord xyz = lIter->origin();
104 const typename TreeType2::LeafNodeType* leaf = mOtherTree->probeConstLeaf(xyz);
106 lIter->topologyDifference(*leaf, zeroVal<typename TreeType1::ValueType>());
107 }
else if (mOtherTree->isValueOn(xyz)) {
108 lIter->setValuesOff();
113 const TreeType2* mOtherTree;
122 template<
class TreeType1,
class TreeType2>
123 inline typename TreeType1::template ValueConverter<bool>::Type::Ptr
126 typedef typename TreeType1::template ValueConverter<bool>::Type BoolTreeType;
128 typename BoolTreeType::Ptr topologyTree(
new BoolTreeType(
142 template<
class TreeType1,
class TreeType2>
143 inline typename TreeType1::template ValueConverter<bool>::Type::Ptr
146 typedef typename TreeType1::template ValueConverter<bool>::Type BoolTreeType;
148 typename BoolTreeType::Ptr topologyTree(
new BoolTreeType(
162 #endif // OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED
OPENVDB_API const Coord COORD_OFFSETS[26]
coordinate offset table for neighboring voxels
Signed (x, y, z) 32-bit integer coordinates.
Definition: Coord.h:51
Coord nearestCoord(const Vec3d &voxelCoord)
Return voxelCoord rounded to the closest integer coordinates.
Definition: Util.h:56
TreeType1::template ValueConverter< bool >::Type::Ptr leafTopologyDifference(const TreeType1 &lhs, const TreeType2 &rhs, bool threaded=true)
Perform a boolean difference between two leaf nodes' topology masks.
Definition: Util.h:144
Functor for use with tools::foreach() to compute the boolean difference between the value masks of co...
Definition: Util.h:96
void operator()(const typename TreeType1::LeafIter &lIter) const
Definition: Util.h:77
LeafTopologyDiffOp(const TreeType2 &tree)
Definition: Util.h:99
Vec3< double > Vec3d
Definition: Vec3.h:679
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:136
LeafTopologyIntOp(const TreeType2 &tree)
Definition: Util.h:75
Definition: Exceptions.h:40
OPENVDB_API const Index32 INVALID_IDX
void operator()(const typename TreeType1::LeafIter &lIter) const
Definition: Util.h:101
TreeType1::template ValueConverter< bool >::Type::Ptr leafTopologyIntersection(const TreeType1 &lhs, const TreeType2 &rhs, bool threaded=true)
Perform a boolean intersection between two leaf nodes' topology masks.
Definition: Util.h:124
Functor for use with tools::foreach() to compute the boolean intersection between the value masks of ...
Definition: Util.h:72
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:188
Tag dispatch class that distinguishes topology copy constructors from deep copy constructors.
Definition: Types.h:518
uint32_t Index32
Definition: Types.h:59