OpenVDB
0.104.0
|
#include <RootNode.h>
Classes | |
struct | ValueConverter |
ValueConverter<T>::Type is the type of a RootNode having the same child hierarchy as this node but a different value type, T. More... | |
Public Types | |
typedef ChildType | ChildNodeType |
typedef ChildType::LeafNodeType | LeafNodeType |
typedef ChildType::ValueType | ValueType |
typedef ChildIter< RootNode, MapIter, ChildOnPred, ChildType > | ChildOnIter |
typedef ChildIter< const RootNode, MapCIter, ChildOnPred, const ChildType > | ChildOnCIter |
typedef ValueIter< RootNode, MapIter, ChildOffPred, const ValueType > | ChildOffIter |
typedef ValueIter< const RootNode, MapCIter, ChildOffPred, ValueType > | ChildOffCIter |
typedef DenseIter< RootNode, MapIter, ChildType, ValueType > | ChildAllIter |
typedef DenseIter< const RootNode, MapCIter, const ChildType, const ValueType > | ChildAllCIter |
typedef ValueIter< RootNode, MapIter, ValueOnPred, ValueType > | ValueOnIter |
typedef ValueIter< const RootNode, MapCIter, ValueOnPred, const ValueType > | ValueOnCIter |
typedef ValueIter< RootNode, MapIter, ValueOffPred, ValueType > | ValueOffIter |
typedef ValueIter< const RootNode, MapCIter, ValueOffPred, const ValueType > | ValueOffCIter |
typedef ValueIter< RootNode, MapIter, ValueAllPred, ValueType > | ValueAllIter |
typedef ValueIter< const RootNode, MapCIter, ValueAllPred, const ValueType > | ValueAllCIter |
Public Member Functions | |
RootNode () | |
Construct a new tree with a background value of 0. More... | |
RootNode (const ValueType &background) | |
Construct a new tree with the given background value. More... | |
RootNode (const RootNode &other) | |
template<typename OtherChildType > | |
RootNode (const RootNode< OtherChildType > &other, const ValueType &background, const ValueType &foreground, TopologyCopy) | |
Topology copy constructor that guarantees the configuration of the constructed tree is topologically identical to the other tree. More... | |
template<typename OtherChildType > | |
RootNode (const RootNode< OtherChildType > &other, const ValueType &background, TopologyCopy) | |
Topology copy constructor that guarantees the configuration of the constructed tree is topologically identical to the other tree. More... | |
RootNode & | operator= (const RootNode &other) |
~RootNode () | |
ChildOnCIter | cbeginChildOn () const |
ChildOffCIter | cbeginChildOff () const |
ChildAllCIter | cbeginChildAll () const |
ChildOnCIter | beginChildOn () const |
ChildOffCIter | beginChildOff () const |
ChildAllCIter | beginChildAll () const |
ChildOnIter | beginChildOn () |
ChildOffIter | beginChildOff () |
ChildAllIter | beginChildAll () |
ValueOnCIter | cbeginValueOn () const |
ValueOffCIter | cbeginValueOff () const |
ValueAllCIter | cbeginValueAll () const |
ValueOnCIter | beginValueOn () const |
ValueOffCIter | beginValueOff () const |
ValueAllCIter | beginValueAll () const |
ValueOnIter | beginValueOn () |
ValueOffIter | beginValueOff () |
ValueAllIter | beginValueAll () |
Index64 | memUsage () const |
Return the total amount of memory in bytes occupied by this node and its children. More... | |
void | evalActiveVoxelBoundingBox (CoordBBox &bbox) const |
Expand the specified bbox so it includes the active tiles of this root node as well as all the active values in its child nodes. More... | |
void | setBackground (const ValueType &value) |
ValueType | getBackground () const |
bool | isBackgroundTile (const Tile &) const |
Return true if the given tile is inactive and has the background value. More... | |
size_t | numBackgroundTiles () const |
Return the number of background tiles. More... | |
size_t | eraseBackgroundTiles () |
Remove all background tiles. More... | |
void | clear () |
bool | empty () const |
Return true if this node's table is either empty or contains only background tiles. More... | |
bool | expand (const Coord &xyz) |
Expand this node's table so that (x, y, z) is included in the index range. More... | |
Index | getTableSize () const |
Return the number of entries in this node's table. More... | |
Index | getWidth () const |
Index | getHeight () const |
Index | getDepth () const |
Coord | getMinIndex () const |
Return the smallest index of the current tree. More... | |
Coord | getMaxIndex () const |
Return the largest index of the current tree. More... | |
void | getIndexRange (CoordBBox &bbox) const |
Return the current index range. Both min and max are inclusive. More... | |
template<typename OtherChildType > | |
bool | hasSameTopology (const RootNode< OtherChildType > &other) const |
Return true if the given tree has the same node and active value. More... | |
Index32 | leafCount () const |
Index32 | nonLeafCount () const |
Index64 | onVoxelCount () const |
Index64 | offVoxelCount () const |
Index64 | onLeafVoxelCount () const |
Index64 | offLeafVoxelCount () const |
bool | isValueOn (const Coord &xyz) const |
bool | hasActiveTiles () const |
const ValueType & | getValue (const Coord &xyz) const |
bool | probeValue (const Coord &xyz, ValueType &value) const |
int | getValueDepth (const Coord &xyz) const |
Return the tree depth (0 = root) at which the value of voxel (x, y, z) resides. More... | |
void | setActiveState (const Coord &xyz, bool on) |
Set the active state of the voxel at the given coordinates, but don't change its value. More... | |
void | setValueOff (const Coord &xyz) |
Mark the voxel at the given coordinates as inactive, but don't change its value. More... | |
void | setValueOff (const Coord &xyz, const ValueType &value) |
Change the value of the voxel at the given coordinates and mark the voxel as inactive. More... | |
void | setValueOn (const Coord &xyz, const ValueType &value) |
void | setValueOnly (const Coord &xyz, const ValueType &value) |
void | setValueOnMin (const Coord &xyz, const ValueType &value) |
void | setValueOnMax (const Coord &xyz, const ValueType &value) |
void | setValueOnSum (const Coord &xyz, const ValueType &value) |
void | fill (const CoordBBox &bbox, const ValueType &value, bool active=true) |
Set all voxels within a given box to a constant value, if necessary subdividing tiles that intersect the box. More... | |
bool | writeTopology (std::ostream &, bool toHalf=false) const |
bool | readTopology (std::istream &, bool fromHalf=false) |
void | writeBuffers (std::ostream &, bool toHalf=false) const |
void | readBuffers (std::istream &, bool fromHalf=false) |
template<typename AccessorT > | |
OPENVDB_DEPRECATED const ValueType & | getValue (const Coord &xyz, bool &state, int &level, AccessorT &) const |
template<typename ProbeType , typename AccessorT > | |
OPENVDB_DEPRECATED const ValueType & | probe (const Coord &xyz, ProbeType &p, AccessorT &) const |
template<bool State, bool Level, typename AccessorT > | |
OPENVDB_DEPRECATED const ValueType & | probe (const Coord &xyz, bool &state, int &level, AccessorT &) const |
template<typename AccessorT > | |
const ValueType & | getValueAndCache (const Coord &xyz, AccessorT &) const |
template<typename AccessorT > | |
bool | isValueOnAndCache (const Coord &xyz, AccessorT &) const |
template<typename AccessorT > | |
void | setValueAndCache (const Coord &xyz, const ValueType &value, AccessorT &) |
template<typename AccessorT > | |
void | setValueOnlyAndCache (const Coord &xyz, const ValueType &value, AccessorT &) |
template<typename AccessorT > | |
void | setValueOnSumAndCache (const Coord &xyz, const ValueType &value, AccessorT &) |
template<typename AccessorT > | |
void | setValueOffAndCache (const Coord &xyz, const ValueType &value, AccessorT &) |
template<typename AccessorT > | |
void | setActiveStateAndCache (const Coord &xyz, bool on, AccessorT &) |
template<typename AccessorT > | |
bool | probeValueAndCache (const Coord &xyz, ValueType &value, AccessorT &) const |
template<typename AccessorT > | |
int | getValueDepthAndCache (const Coord &xyz, AccessorT &) const |
template<typename AccessorT > | |
OPENVDB_DEPRECATED void | updateCache (const Coord &xyz, AccessorT &) const |
Update the given accessor with pointers to the nodes along the path from the root node to the node containing voxel (x, y, z). More... | |
template<typename PruneOp > | |
void | pruneOp (PruneOp &) |
void | prune (const ValueType &tolerance=zeroVal< ValueType >()) |
Reduce the memory footprint of this tree by replacing with tiles any nodes whose values are all the same (optionally to within a tolerance) and have the same active state. More... | |
void | pruneInactive (const ValueType &) |
Reduce the memory footprint of this tree by replacing with tiles of the given value any nodes whose values are all inactive. More... | |
void | pruneInactive () |
Reduce the memory footprint of this tree by replacing with background tiles any nodes whose values are all inactive. More... | |
LeafNodeType * | touchLeaf (const Coord &xyz) |
Return the leaf node that contains voxel (x, y, z). If no such node exists, create one, but preserve the values and active states of all voxels. More... | |
LeafNodeType * | probeLeaf (const Coord &xyz) |
Return a pointer to the leaf node that contains voxel (x, y, z). If no such node exists, return NULL. More... | |
const LeafNodeType * | probeConstLeaf (const Coord &xyz) const |
Return a const pointer to the leaf node that contains voxel (x, y, z). If no such node exists, return NULL. More... | |
template<typename AccessorT > | |
LeafNodeType * | touchLeafAndCache (const Coord &xyz, AccessorT &) |
Same as touchLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate. More... | |
template<typename AccessorT > | |
LeafNodeType * | probeLeafAndCache (const Coord &xyz, AccessorT &) |
Same as probeLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate. More... | |
template<typename AccessorT > | |
const LeafNodeType * | probeConstLeafAndCache (const Coord &xyz, AccessorT &) const |
Same as probeConstLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate. More... | |
bool | signedFloodFill () |
Propagate the sign from a narrow-band level set into inactive voxels and tiles. More... | |
void | merge (RootNode &other) |
void | voxelizeActiveTiles () |
Turn active tiles into dense voxels, i.e., into leaf nodes that are entirely active. More... | |
template<typename OtherChildType > | |
void | topologyUnion (const RootNode< OtherChildType > &other) |
Union this tree's set of active values with the other tree's active values. The value type of the other tree can be different. More... | |
template<typename CombineOp > | |
void | combine (RootNode &other, CombineOp &, bool prune=false) |
template<typename CombineOp > | |
void | combine2 (const RootNode &other0, const RootNode &other1, CombineOp &op, bool prune=false) |
template<typename BBoxOp > | |
void | visitActiveBBox (BBoxOp &) const |
Calls the templated functor BBoxOp with bounding box information for all active tiles and leaf nodes in the tree. An additional level argument is provided for each callback. More... | |
template<typename VisitorOp > | |
void | visit (VisitorOp &) |
template<typename VisitorOp > | |
void | visit (VisitorOp &) const |
template<typename OtherRootNodeType , typename VisitorOp > | |
void | visit2 (OtherRootNodeType &other, VisitorOp &) |
template<typename OtherRootNodeType , typename VisitorOp > | |
void | visit2 (OtherRootNodeType &other, VisitorOp &) const |
template<typename OtherChildType > | |
bool | hasSameConfiguration (const RootNode< OtherChildType > &) |
template<typename OtherChildType > | |
void | enforceSameConfiguration (const RootNode< OtherChildType > &) |
template<typename AccessorT > | |
const ChildT::ValueType & | getValueAndCache (const Coord &xyz, AccessorT &acc) const |
template<typename AccessorT > | |
const ChildT::ValueType & | getValue (const Coord &xyz, bool &state, int &level, AccessorT &acc) const |
template<typename ProbeT , typename AccessorT > | |
const ChildT::ValueType & | probe (const Coord &xyz, ProbeT &p, AccessorT &acc) const |
template<bool State, bool Level, typename AccessorT > | |
const ChildT::ValueType & | probe (const Coord &xyz, bool &state, int &level, AccessorT &acc) const |
template<typename AccessorT > | |
void | updateCache (const Coord &xyz, AccessorT &acc) const |
template<typename AccessorT > | |
ChildT::LeafNodeType * | touchLeafAndCache (const Coord &xyz, AccessorT &acc) |
template<typename AccessorT > | |
ChildT::LeafNodeType * | probeLeafAndCache (const Coord &xyz, AccessorT &acc) |
template<typename AccessorT > | |
const ChildT::LeafNodeType * | probeConstLeafAndCache (const Coord &xyz, AccessorT &acc) const |
template<typename RootNodeT , typename VisitorOp , typename ChildAllIterT > | |
void | doVisit (RootNodeT &self, VisitorOp &op) |
template<typename RootNodeT , typename OtherRootNodeT , typename VisitorOp , typename ChildAllIterT , typename OtherChildAllIterT > | |
void | doVisit2 (RootNodeT &self, OtherRootNodeT &other, VisitorOp &op) |
bool | isBackgroundTile (const MapIter &) const |
Return true if the given iterator points to an inactive tile with the background value. More... | |
bool | isBackgroundTile (const MapCIter &) const |
Return true if the given iterator points to an inactive tile with the background value. More... | |
Static Public Member Functions | |
static CoordBBox | getNodeBoundingBox () |
Return the bounding box of this RootNode, i.e., an infinite bounding box. More... | |
static Index | getLevel () |
static void | getNodeLog2Dims (std::vector< Index > &dims) |
static Index | getChildDim () |
template<typename OtherChildType > | |
static bool | hasSameConfiguration (const RootNode< OtherChildType > &other) |
Return false if the other node's dimensions don't match this node's. More... | |
Static Public Attributes | |
static const Index | LEVEL = 1 + ChildType::LEVEL |
Friends | |
template<typename > | |
class | RootNode |
typedef DenseIter<const RootNode, MapCIter, const ChildType, const ValueType> ChildAllCIter |
typedef DenseIter<RootNode, MapIter, ChildType, ValueType> ChildAllIter |
typedef ChildType ChildNodeType |
typedef ValueIter<const RootNode, MapCIter, ChildOffPred, ValueType> ChildOffCIter |
typedef ValueIter<RootNode, MapIter, ChildOffPred, const ValueType> ChildOffIter |
typedef ChildIter<const RootNode, MapCIter, ChildOnPred, const ChildType> ChildOnCIter |
typedef ChildIter<RootNode, MapIter, ChildOnPred, ChildType> ChildOnIter |
typedef ChildType::LeafNodeType LeafNodeType |
typedef ValueIter<const RootNode, MapCIter, ValueAllPred, const ValueType> ValueAllCIter |
typedef ValueIter<RootNode, MapIter, ValueAllPred, ValueType> ValueAllIter |
typedef ValueIter<const RootNode, MapCIter, ValueOffPred, const ValueType> ValueOffCIter |
typedef ValueIter<RootNode, MapIter, ValueOffPred, ValueType> ValueOffIter |
typedef ValueIter<const RootNode, MapCIter, ValueOnPred, const ValueType> ValueOnCIter |
typedef ValueIter<RootNode, MapIter, ValueOnPred, ValueType> ValueOnIter |
typedef ChildType::ValueType ValueType |
|
inline |
Construct a new tree with a background value of 0.
Construct a new tree with the given background value.
|
inline |
Topology copy constructor that guarantees the configuration of the constructed tree is topologically identical to the other tree.
Reproduce the topology and active states of the other tree (which may have a different ValueType), but don't copy values. All values that are active in the other tree are set to the foreground value and all other values to the background value.
other | the root node of a tree having (possibly) a different ValueType |
background | the value to which inactive tiles and voxels are initialized |
foreground | the value to which active tiles and voxels are initialized |
|
inline |
Topology copy constructor that guarantees the configuration of the constructed tree is topologically identical to the other tree.
Reproduce the topology and active states of the other node (which may have a different ValueType), but don't copy values. All values in the constructed tree are set to the background value regardless of their active states.
other | the root node of a tree having (possibly) a different ValueType |
background | the value to which inactive tiles and voxels are initialized |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return true
if this node's table is either empty or contains only background tiles.
|
inline |
|
inline |
Remove all background tiles.
|
inline |
Expand the specified bbox so it includes the active tiles of this root node as well as all the active values in its child nodes.
|
inline |
Expand this node's table so that (x, y, z) is included in the index range.
true
if an expansion was performed (i.e., if (x, y, z) was not already included in the index range). Set all voxels within a given box to a constant value, if necessary subdividing tiles that intersect the box.
bbox | inclusive coordinates of opposite corners of an axis-aligned box |
value | the value to which to set voxels within the box |
active | if true, mark voxels within the box as active, otherwise mark them as inactive |
|
inline |
|
inlinestatic |
|
inline |
|
inline |
|
inline |
Return the current index range. Both min and max are inclusive.
|
inlinestatic |
|
inline |
Return the largest index of the current tree.
|
inline |
Return the smallest index of the current tree.
|
inlinestatic |
Return the bounding box of this RootNode, i.e., an infinite bounding box.
|
inlinestatic |
|
inline |
Return the number of entries in this node's table.
|
inline |
OPENVDB_DEPRECATED const ValueType& getValue | ( | const Coord & | xyz, |
bool & | state, | ||
int & | level, | ||
AccessorT & | |||
) | const |
|
inline |
Return the value of the voxel at the given coordinates and, if necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
|
inline |
Return the tree depth (0 = root) at which the value of voxel (x, y, z) resides.
If (x, y, z) isn't explicitly represented in the tree (i.e., it is implicitly a background voxel), return -1.
|
inline |
Return the tree depth (0 = root) at which the value of voxel (x, y, z) resides. If (x, y, z) isn't explicitly represented in the tree (i.e., it is implicitly a background voxel), return -1. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
|
inline |
|
static |
Return false
if the other node's dimensions don't match this node's.
|
inline |
|
inline |
Return true
if the given tree has the same node and active value.
topology as this tree (but possibly a different ValueType
).
|
inline |
Return true
if the given tile is inactive and has the background value.
|
inline |
Return true
if the given iterator points to an inactive tile with the background value.
|
inline |
Return true
if the given iterator points to an inactive tile with the background value.
|
inline |
|
inline |
Return true
if the voxel at the given coordinates is active and, if necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
|
inline |
Return the total amount of memory in bytes occupied by this node and its children.
|
inline |
Move child nodes from the other tree into this tree wherever those nodes correspond to constant-value tiles in this tree, and replace leaf-level inactive voxels in this tree with corresponding voxels in the other tree that are active.
|
inline |
|
inline |
Return the number of background tiles.
|
inline |
|
inline |
|
inline |
|
inline |
OPENVDB_DEPRECATED const ValueType& probe | ( | const Coord & | xyz, |
ProbeType & | p, | ||
AccessorT & | |||
) | const |
OPENVDB_DEPRECATED const ValueType& probe | ( | const Coord & | xyz, |
bool & | state, | ||
int & | level, | ||
AccessorT & | |||
) | const |
|
inline |
|
inline |
|
inline |
Return a const pointer to the leaf node that contains voxel (x, y, z). If no such node exists, return NULL.
const LeafNodeType* probeConstLeafAndCache | ( | const Coord & | xyz, |
AccessorT & | |||
) | const |
Same as probeConstLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate.
|
inline |
|
inline |
Return a pointer to the leaf node that contains voxel (x, y, z). If no such node exists, return NULL.
LeafNodeType* probeLeafAndCache | ( | const Coord & | xyz, |
AccessorT & | |||
) |
Same as probeLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate.
|
inline |
Return true
if the voxel at the given coordinates is active, assigns the voxel value, and, if necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
Reduce the memory footprint of this tree by replacing with tiles any nodes whose values are all the same (optionally to within a tolerance) and have the same active state.
|
inline |
Reduce the memory footprint of this tree by replacing with tiles of the given value any nodes whose values are all inactive.
|
inline |
Reduce the memory footprint of this tree by replacing with background tiles any nodes whose values are all inactive.
|
inline |
Call the PruneOp
functor for each child node and, if the functor returns true
, prune the node and replace it with a tile.
This method is used to implement all of the various pruning algorithms (prune(), pruneInactive(), etc.). It should rarely be called directly.
PruneOp
functor
|
inline |
|
inline |
|
inline |
Set the active state of the voxel at the given coordinates, but don't change its value.
|
inline |
Set the active state of the voxel at the given coordinates without changing its value. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
Change the value of the voxel at the given coordinates and mark it as active. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
Mark the voxel at the given coordinates as inactive, but don't change its value.
Change the value of the voxel at the given coordinates and mark the voxel as inactive.
Change the value of the voxel at the given coordinates and mark it as inactive. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
Set the value of the voxel at the given coordinate but preserves its active state. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
Set the value of the voxel at the given coordinates to the sum of its current value and the given value, and mark the voxel as active. If necessary, update the accessor with pointers to the nodes along the path from the root node to the node containing the voxel.
|
inline |
Propagate the sign from a narrow-band level set into inactive voxels and tiles.
|
inline |
Union this tree's set of active values with the other tree's active values. The value type of the other tree can be different.
|
inline |
Return the leaf node that contains voxel (x, y, z). If no such node exists, create one, but preserve the values and active states of all voxels.
Use this method to preallocate a static tree topology over which to safely perform multithreaded processing.
LeafNodeType* touchLeafAndCache | ( | const Coord & | xyz, |
AccessorT & | |||
) |
Same as touchLeaf except, if necessary, it update the accessor with pointers to the nodes along the path from the root node to the node containing the coordinate.
|
inline |
OPENVDB_DEPRECATED void updateCache | ( | const Coord & | xyz, |
AccessorT & | |||
) | const |
Update the given accessor with pointers to the nodes along the path from the root node to the node containing voxel (x, y, z).
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Calls the templated functor BBoxOp with bounding box information for all active tiles and leaf nodes in the tree. An additional level argument is provided for each callback.
|
inline |
Turn active tiles into dense voxels, i.e., into leaf nodes that are entirely active.
|
inline |
|
inline |
|
friend |
During topology-only construction, access is needed to protected/private members of other template instances.
|
static |