OpenVDB  9.0.1
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
LeafNode< BuildT, CoordT, MaskT, Log2Dim > Class Template Reference

Leaf nodes of the VDB tree. (defaults to 8x8x8 = 512 voxels) More...

#include <nanovdb/NanoVDB.h>

Inherits LeafData< BuildT, CoordT, MaskT, Log2Dim >.

Classes

struct  ChildNodeType
 

Public Types

using LeafNodeType = LeafNode< BuildT, CoordT, MaskT, Log2Dim >
 
using DataType = LeafData< BuildT, CoordT, MaskT, Log2Dim >
 
using ValueType = typename DataType::ValueType
 
using FloatType = typename DataType::FloatType
 
using BuildType = typename DataType::BuildType
 
using CoordType = CoordT
 
template<uint32_t LOG2>
using MaskType = MaskT< LOG2 >
 

Public Member Functions

DataTypedata ()
 
const DataTypedata () const
 
const MaskType< LOG2DIM > & valueMask () const
 Return a const reference to the bit mask of active voxels in this leaf node. More...
 
ValueType minimum () const
 Return a const reference to the minimum active value encoded in this leaf node. More...
 
ValueType maximum () const
 Return a const reference to the maximum active value encoded in this leaf node. More...
 
FloatType average () const
 Return a const reference to the average of all the active values encoded in this leaf node. More...
 
FloatType variance () const
 Return the variance of all the active values encoded in this leaf node. More...
 
FloatType stdDeviation () const
 Return a const reference to the standard deviation of all the active values encoded in this leaf node. More...
 
uint8_t flags () const
 
CoordT origin () const
 Return the origin in index space of this leaf node. More...
 
void localToGlobalCoord (Coord &ijk) const
 Converts (in place) a local index coordinate to a global index coordinate. More...
 
CoordT offsetToGlobalCoord (uint32_t n) const
 
BBox< CoordT > bbox () const
 Return the bounding box in index space of active values in this leaf node. More...
 
 LeafNode ()=delete
 This class cannot be constructed or deleted. More...
 
 LeafNode (const LeafNode &)=delete
 
LeafNodeoperator= (const LeafNode &)=delete
 
 ~LeafNode ()=delete
 
ValueType getValue (uint32_t offset) const
 Return the voxel value at the given offset. More...
 
ValueType getValue (const CoordT &ijk) const
 Return the voxel value at the given coordinate. More...
 
void setValue (const CoordT &ijk, const ValueType &v)
 Sets the value at the specified location and activate its state. More...
 
void setValueOnly (uint32_t offset, const ValueType &v)
 Sets the value at the specified location but leaves its state unchanged. More...
 
void setValueOnly (const CoordT &ijk, const ValueType &v)
 
bool isActive (const CoordT &ijk) const
 Return true if the voxel value at the given coordinate is active. More...
 
bool isActive (uint32_t n) const
 
bool isActive () const
 Return true if any of the voxel value are active in this leaf node. More...
 
bool probeValue (const CoordT &ijk, ValueType &v) const
 Return true if the voxel value at the given coordinate is active and updates v with the value. More...
 
const LeafNodeprobeLeaf (const CoordT &) const
 
void updateBBox ()
 Updates the local bounding box of active voxels in this node. More...
 

Static Public Member Functions

static CoordT OffsetToLocalCoord (uint32_t n)
 
static uint32_t dim ()
 Return the dimension, in index space, of this leaf node (typically 8 as for openvdb leaf nodes!) More...
 
static uint32_t voxelCount ()
 Return the total number of voxels (e.g. values) encoded in this leaf node. More...
 
static uint64_t memUsage ()
 return memory usage in bytes for the class More...
 
static uint32_t CoordToOffset (const CoordT &ijk)
 Return the linear offset corresponding to the given coordinate. More...
 

Static Public Attributes

static constexpr bool FIXED_SIZE = DataType::FIXED_SIZE
 
static constexpr uint32_t LOG2DIM = Log2Dim
 
static constexpr uint32_t TOTAL = LOG2DIM
 
static constexpr uint32_t DIM = 1u << TOTAL
 
static constexpr uint32_t SIZE = 1u << 3 * LOG2DIM
 
static constexpr uint32_t MASK = (1u << LOG2DIM) - 1u
 
static constexpr uint32_t LEVEL = 0
 
static constexpr uint64_t NUM_VALUES = uint64_t(1) << (3 * TOTAL)
 

Private Types

using ArrayType = BuildT
 

Private Member Functions

void setValueOnly (uint32_t offset, const ValueType &value)
 
void setValue (uint32_t offset, const ValueType &value)
 
ValueType getMin () const
 
ValueType getMax () const
 
FloatType getAvg () const
 
FloatType getDev () const
 
void setMin (const ValueType &v)
 
void setMax (const ValueType &v)
 
void setAvg (const FloatType &v)
 
void setDev (const FloatType &v)
 
void setOrigin (const T &ijk)
 

Private Attributes

CoordT mBBoxMin
 
uint8_t mBBoxDif [3]
 
uint8_t mFlags
 
MaskT< LOG2DIMmValueMask
 
ValueType mMinimum
 
ValueType mMaximum
 
FloatType mAverage
 
FloatType mStdDevi
 
ValueType mValues [1u<< 3 *LOG2DIM]
 

Friends

template<typename , int , int , int >
class ReadAccessor
 
template<typename >
class RootNode
 
template<typename , uint32_t >
class InternalNode
 

Detailed Description

template<typename BuildT, typename CoordT = Coord, template< uint32_t > class MaskT = Mask, uint32_t Log2Dim = 3>
class nanovdb::LeafNode< BuildT, CoordT, MaskT, Log2Dim >

Leaf nodes of the VDB tree. (defaults to 8x8x8 = 512 voxels)

Member Typedef Documentation

using BuildType = typename DataType::BuildType
using CoordType = CoordT
using DataType = LeafData<BuildT, CoordT, MaskT, Log2Dim>
using FloatType = typename DataType::FloatType
using LeafNodeType = LeafNode<BuildT, CoordT, MaskT, Log2Dim>
using MaskType = MaskT<LOG2>
using ValueType = typename DataType::ValueType

Constructor & Destructor Documentation

LeafNode ( )
delete

This class cannot be constructed or deleted.

LeafNode ( const LeafNode< BuildT, CoordT, MaskT, Log2Dim > &  )
delete
~LeafNode ( )
delete

Member Function Documentation

FloatType average ( ) const
inline

Return a const reference to the average of all the active values encoded in this leaf node.

BBox<CoordT> bbox ( ) const
inline

Return the bounding box in index space of active values in this leaf node.

static uint32_t CoordToOffset ( const CoordT &  ijk)
inlinestatic

Return the linear offset corresponding to the given coordinate.

DataType* data ( )
inline
const DataType* data ( ) const
inline
static uint32_t dim ( )
inlinestatic

Return the dimension, in index space, of this leaf node (typically 8 as for openvdb leaf nodes!)

uint8_t flags ( ) const
inline
ValueType getValue ( uint32_t  offset) const
inline

Return the voxel value at the given offset.

ValueType getValue ( const CoordT &  ijk) const
inline

Return the voxel value at the given coordinate.

bool isActive ( const CoordT &  ijk) const
inline

Return true if the voxel value at the given coordinate is active.

bool isActive ( uint32_t  n) const
inline
bool isActive ( ) const
inline

Return true if any of the voxel value are active in this leaf node.

void localToGlobalCoord ( Coord ijk) const
inline

Converts (in place) a local index coordinate to a global index coordinate.

ValueType maximum ( ) const
inline

Return a const reference to the maximum active value encoded in this leaf node.

static uint64_t memUsage ( )
inlinestatic

return memory usage in bytes for the class

ValueType minimum ( ) const
inline

Return a const reference to the minimum active value encoded in this leaf node.

CoordT offsetToGlobalCoord ( uint32_t  n) const
inline
static CoordT OffsetToLocalCoord ( uint32_t  n)
inlinestatic
LeafNode& operator= ( const LeafNode< BuildT, CoordT, MaskT, Log2Dim > &  )
delete
CoordT origin ( ) const
inline

Return the origin in index space of this leaf node.

const LeafNode* probeLeaf ( const CoordT &  ) const
inline
bool probeValue ( const CoordT &  ijk,
ValueType v 
) const
inline

Return true if the voxel value at the given coordinate is active and updates v with the value.

void setValue ( const CoordT &  ijk,
const ValueType v 
)
inline

Sets the value at the specified location and activate its state.

Note
This is safe since it does not change the topology of the tree (unlike setValue methods on the other nodes)
void setValueOnly ( uint32_t  offset,
const ValueType v 
)
inline

Sets the value at the specified location but leaves its state unchanged.

Note
This is safe since it does not change the topology of the tree (unlike setValue methods on the other nodes)
void setValueOnly ( const CoordT &  ijk,
const ValueType v 
)
inline
FloatType stdDeviation ( ) const
inline

Return a const reference to the standard deviation of all the active values encoded in this leaf node.

void updateBBox ( )
inline

Updates the local bounding box of active voxels in this node.

Warning
It assumes that the origin and value mask have already been set.

This method is based on few (intrinsic) bit operations and hence is relatively fast. However, it should only only be called of either the value mask has changed or if the active bounding box is still undefined. e.g. during constrution of this node.

const MaskType<LOG2DIM>& valueMask ( ) const
inline

Return a const reference to the bit mask of active voxels in this leaf node.

FloatType variance ( ) const
inline

Return the variance of all the active values encoded in this leaf node.

static uint32_t voxelCount ( )
inlinestatic

Return the total number of voxels (e.g. values) encoded in this leaf node.

Friends And Related Function Documentation

friend class InternalNode
friend
friend class ReadAccessor
friend
friend class RootNode
friend

Member Data Documentation

constexpr uint32_t DIM = 1u << TOTAL
static
constexpr bool FIXED_SIZE = DataType::FIXED_SIZE
static
constexpr uint32_t LEVEL = 0
static
constexpr uint32_t LOG2DIM = Log2Dim
static
constexpr uint32_t MASK = (1u << LOG2DIM) - 1u
static
constexpr uint64_t NUM_VALUES = uint64_t(1) << (3 * TOTAL)
static
constexpr uint32_t SIZE = 1u << 3 * LOG2DIM
static
constexpr uint32_t TOTAL = LOG2DIM
static