OpenVDB  12.0.0
Public Types | Public Member Functions | List of all members
TreeBase Class Referenceabstract

Base class for typed trees. More...

#include <openvdb/tree/Tree.h>

Inherited by Tree< _RootNodeType >.

Public Types

using Ptr = SharedPtr< TreeBase >
 
using ConstPtr = SharedPtr< const TreeBase >
 

Public Member Functions

 TreeBase ()=default
 
 TreeBase (const TreeBase &)=default
 
TreeBaseoperator= (const TreeBase &)=delete
 
virtual ~TreeBase ()=default
 
virtual const Nametype () const =0
 Return the name of this tree's type. More...
 
virtual Name valueType () const =0
 Return the name of the type of a voxel's value (e.g., "float" or "vec3d"). More...
 
template<typename TreeType >
bool isType () const
 Return true if this tree is of the same type as the template parameter. More...
 
virtual TreeBase::Ptr copy () const =0
 Return a pointer to a deep copy of this tree. More...
 
virtual Metadata::Ptr getBackgroundValue () const
 Return this tree's background value wrapped as metadata. More...
 
virtual bool evalLeafBoundingBox (CoordBBox &bbox) const =0
 Return in bbox the axis-aligned bounding box of all active tiles and leaf nodes with active values. More...
 
virtual bool evalLeafDim (Coord &dim) const =0
 Return in dim the dimensions of the axis-aligned bounding box of all leaf nodes. More...
 
virtual bool evalActiveVoxelBoundingBox (CoordBBox &bbox) const =0
 Return in bbox the axis-aligned bounding box of all active voxels and tiles. More...
 
virtual bool evalActiveVoxelDim (Coord &dim) const =0
 Return in dim the dimensions of the axis-aligned bounding box of all active voxels. This is a tighter bounding box than the leaf node bounding box. More...
 
virtual void getIndexRange (CoordBBox &bbox) const =0
 
virtual void clipUnallocatedNodes ()=0
 Replace with background tiles any nodes whose voxel buffers have not yet been allocated. More...
 
virtual Index64 unallocatedLeafCount () const =0
 Return the total number of unallocated leaf nodes residing in this tree. More...
 
virtual Index treeDepth () const =0
 Return the depth of this tree. More...
 
virtual Index64 leafCount () const =0
 Return the number of leaf nodes. More...
 
virtual std::vector< Index64nodeCount () const =0
 
virtual Index64 nonLeafCount () const =0
 Return the number of non-leaf nodes. More...
 
virtual Index64 activeLeafVoxelCount () const =0
 Return the number of active voxels stored in leaf nodes. More...
 
virtual Index64 inactiveLeafVoxelCount () const =0
 Return the number of inactive voxels stored in leaf nodes. More...
 
virtual Index64 activeVoxelCount () const =0
 Return the total number of active voxels. More...
 
virtual Index64 inactiveVoxelCount () const =0
 Return the number of inactive voxels within the bounding box of all active voxels. More...
 
virtual Index64 activeTileCount () const =0
 Return the total number of active tiles. More...
 
virtual Index64 memUsage () const
 Return the total amount of memory in bytes occupied by this tree. More...
 
virtual void readTopology (std::istream &, bool saveFloatAsHalf=false)
 Read the tree topology from a stream. More...
 
virtual void writeTopology (std::ostream &, bool saveFloatAsHalf=false) const
 Write the tree topology to a stream. More...
 
virtual void readBuffers (std::istream &, bool saveFloatAsHalf=false)=0
 Read all data buffers for this tree. More...
 
virtual void readBuffers (std::istream &, const CoordBBox &, bool saveFloatAsHalf=false)=0
 Read all of this tree's data buffers that intersect the given bounding box. More...
 
virtual void readNonresidentBuffers () const =0
 Read all of this tree's data buffers that are not yet resident in memory (because delayed loading is in effect). More...
 
virtual void writeBuffers (std::ostream &, bool saveFloatAsHalf=false) const =0
 Write out all the data buffers for this tree. More...
 
virtual void print (std::ostream &os=std::cout, int verboseLevel=1) const
 Print statistics, memory usage and other information about this tree. More...
 

Detailed Description

Base class for typed trees.

Member Typedef Documentation

using ConstPtr = SharedPtr<const TreeBase>

Constructor & Destructor Documentation

TreeBase ( )
default
TreeBase ( const TreeBase )
default
virtual ~TreeBase ( )
virtualdefault

Member Function Documentation

virtual Index64 activeLeafVoxelCount ( ) const
pure virtual

Return the number of active voxels stored in leaf nodes.

Implemented in Tree< _RootNodeType >.

virtual Index64 activeTileCount ( ) const
pure virtual

Return the total number of active tiles.

Implemented in Tree< _RootNodeType >.

virtual Index64 activeVoxelCount ( ) const
pure virtual

Return the total number of active voxels.

Implemented in Tree< _RootNodeType >.

virtual void clipUnallocatedNodes ( )
pure virtual

Replace with background tiles any nodes whose voxel buffers have not yet been allocated.

Typically, unallocated nodes are leaf nodes whose voxel buffers are not yet resident in memory because delayed loading is in effect.

See also
readNonresidentBuffers, io::File::open

Implemented in Tree< _RootNodeType >.

virtual TreeBase::Ptr copy ( ) const
pure virtual

Return a pointer to a deep copy of this tree.

Implemented in Tree< _RootNodeType >.

virtual bool evalActiveVoxelBoundingBox ( CoordBBox &  bbox) const
pure virtual

Return in bbox the axis-aligned bounding box of all active voxels and tiles.

This method produces a more accurate, i.e. tighter, bounding box than evalLeafBoundingBox which is approximate but faster.

Returns
false if the bounding box is empty (in which case the bbox is set to its default value).

Implemented in Tree< _RootNodeType >.

virtual bool evalActiveVoxelDim ( Coord &  dim) const
pure virtual

Return in dim the dimensions of the axis-aligned bounding box of all active voxels. This is a tighter bounding box than the leaf node bounding box.

Returns
false if the bounding box is empty.

Implemented in Tree< _RootNodeType >.

virtual bool evalLeafBoundingBox ( CoordBBox &  bbox) const
pure virtual

Return in bbox the axis-aligned bounding box of all active tiles and leaf nodes with active values.

This is faster than calling evalActiveVoxelBoundingBox, which visits the individual active voxels, and hence evalLeafBoundingBox produces a less tight, i.e. approximate, bbox.

Returns
false if the bounding box is empty (in which case the bbox is set to its default value).

Implemented in Tree< _RootNodeType >.

virtual bool evalLeafDim ( Coord &  dim) const
pure virtual

Return in dim the dimensions of the axis-aligned bounding box of all leaf nodes.

Returns
false if the bounding box is empty.

Implemented in Tree< _RootNodeType >.

virtual Metadata::Ptr getBackgroundValue ( ) const
inlinevirtual

Return this tree's background value wrapped as metadata.

Note
Query the metadata object for the value's type.

Reimplemented in Tree< _RootNodeType >.

virtual void getIndexRange ( CoordBBox &  bbox) const
pure virtual

Implemented in Tree< _RootNodeType >.

virtual Index64 inactiveLeafVoxelCount ( ) const
pure virtual

Return the number of inactive voxels stored in leaf nodes.

Implemented in Tree< _RootNodeType >.

virtual Index64 inactiveVoxelCount ( ) const
pure virtual

Return the number of inactive voxels within the bounding box of all active voxels.

Implemented in Tree< _RootNodeType >.

bool isType ( ) const
inline

Return true if this tree is of the same type as the template parameter.

virtual Index64 leafCount ( ) const
pure virtual

Return the number of leaf nodes.

Implemented in Tree< _RootNodeType >.

virtual Index64 memUsage ( ) const
inlinevirtual

Return the total amount of memory in bytes occupied by this tree.

Reimplemented in Tree< _RootNodeType >.

virtual std::vector<Index64> nodeCount ( ) const
pure virtual

Return a vector with node counts. The number of nodes of type NodeType is given as element NodeType::LEVEL in the return vector. Thus, the size of this vector corresponds to the height (or depth) of this tree.

Implemented in Tree< _RootNodeType >.

virtual Index64 nonLeafCount ( ) const
pure virtual

Return the number of non-leaf nodes.

Implemented in Tree< _RootNodeType >.

TreeBase& operator= ( const TreeBase )
delete
void print ( std::ostream &  os = std::cout,
int  verboseLevel = 1 
) const
inlinevirtual

Print statistics, memory usage and other information about this tree.

Parameters
osa stream to which to write textual information
verboseLevel1: print tree configuration only; 2: include node and voxel statistics; 3: include memory usage; 4: include minimum and maximum voxel values
Warning
verboseLevel 4 forces loading of any unallocated nodes.

Reimplemented in Tree< _RootNodeType >.

virtual void readBuffers ( std::istream &  ,
bool  saveFloatAsHalf = false 
)
pure virtual

Read all data buffers for this tree.

Implemented in Tree< _RootNodeType >.

virtual void readBuffers ( std::istream &  ,
const CoordBBox &  ,
bool  saveFloatAsHalf = false 
)
pure virtual

Read all of this tree's data buffers that intersect the given bounding box.

Implemented in Tree< _RootNodeType >.

virtual void readNonresidentBuffers ( ) const
pure virtual

Read all of this tree's data buffers that are not yet resident in memory (because delayed loading is in effect).

If this tree was read from a memory-mapped file, this operation disconnects the tree from the file.

See also
clipUnallocatedNodes, io::File::open, io::MappedFile

Implemented in Tree< _RootNodeType >.

void readTopology ( std::istream &  is,
bool  saveFloatAsHalf = false 
)
inlinevirtual

Read the tree topology from a stream.

This will read the tree structure and tile values, but not voxel data.

Reimplemented in Tree< _RootNodeType >.

virtual Index treeDepth ( ) const
pure virtual

Return the depth of this tree.

A tree with only a root node and leaf nodes has depth 2, for example.

Implemented in Tree< _RootNodeType >.

virtual const Name& type ( ) const
pure virtual

Return the name of this tree's type.

Implemented in Tree< _RootNodeType >.

virtual Index64 unallocatedLeafCount ( ) const
pure virtual

Return the total number of unallocated leaf nodes residing in this tree.

Implemented in Tree< _RootNodeType >.

virtual Name valueType ( ) const
pure virtual

Return the name of the type of a voxel's value (e.g., "float" or "vec3d").

Implemented in Tree< _RootNodeType >.

virtual void writeBuffers ( std::ostream &  ,
bool  saveFloatAsHalf = false 
) const
pure virtual

Write out all the data buffers for this tree.

Implemented in Tree< _RootNodeType >.

void writeTopology ( std::ostream &  os,
bool  saveFloatAsHalf = false 
) const
inlinevirtual

Write the tree topology to a stream.

This will write the tree structure and tile values, but not voxel data.

Reimplemented in Tree< _RootNodeType >.