Loading...
Searching...
No Matches
Grid< TreeT > Class Template Reference

Highest level of the data structure. Contains a tree and a world->index transform (that currently only supports uniform scaling and translation). More...

`#include <nanovdb/NanoVDB.h>`

Inheritance diagram for Grid< TreeT >:

## Public Types

using | TreeType = TreeT
using | RootType = typename TreeT::RootType
using | RootNodeType = RootType
using | UpperNodeType = typename RootNodeType::ChildNodeType
using | LowerNodeType = typename UpperNodeType::ChildNodeType
using | LeafNodeType = typename RootType::LeafNodeType
using | DataType = GridData
using | ValueType = typename TreeT::ValueType
using | BuildType = typename TreeT::BuildType
using | CoordType = typename TreeT::CoordType
using | AccessorType = DefaultReadAccessor<BuildType>

## Public Member Functions

| Grid (const Grid &)=delete
| Disallow constructions, copy and assignment.
Grid & | operator= (const Grid &)=delete
| ~Grid ()=delete
Version | version () const
DataType * | data ()
const DataType * | data () const
uint64_t | gridSize () const
| Return memory usage in bytes for this class only.
uint32_t | gridIndex () const
| Return index of this grid in the buffer.
uint32_t | gridCount () const
| Return total number of grids in the buffer.
template<typename T = BuildType>
enable_if< BuildTraits< T >::is_index, constuint64_t & >::type | valueCount () const
| Return the total number of values indexed by this IndexGrid.
template<typename T = BuildType>
enable_if< is_same< T, Point >::value, constuint64_t & >::type | pointCount () const
| Return the total number of points indexed by this PointGrid.
const TreeT & | tree () const
| Return a const reference to the tree.
TreeT & | tree ()
| Return a non-const reference to the tree.
AccessorType | getAccessor () const
| Return a new instance of a ReadAccessor used to access values in this grid.
const Vec3d & | voxelSize () const
| Return a const reference to the size of a voxel in world units.
const Map & | map () const
| Return a const reference to the Map for this grid.
template<typename Vec3T>
Vec3T | worldToIndex (const Vec3T &xyz) const
| world to index space transformation
template<typename Vec3T>
Vec3T | indexToWorld (const Vec3T &xyz) const
| index to world space transformation
template<typename Vec3T>
Vec3T | indexToWorldDir (const Vec3T &dir) const
| transformation from index space direction to world space direction
template<typename Vec3T>
Vec3T | worldToIndexDir (const Vec3T &dir) const
| transformation from world space direction to index space direction
template<typename Vec3T>
Vec3T | indexToWorldGrad (const Vec3T &grad) const
| transform the gradient from index space to world space.
template<typename Vec3T>
Vec3T | worldToIndexF (const Vec3T &xyz) const
| world to index space transformation
template<typename Vec3T>
Vec3T | indexToWorldF (const Vec3T &xyz) const
| index to world space transformation
template<typename Vec3T>
Vec3T | indexToWorldDirF (const Vec3T &dir) const
| transformation from index space direction to world space direction
template<typename Vec3T>
Vec3T | worldToIndexDirF (const Vec3T &dir) const
| transformation from world space direction to index space direction
template<typename Vec3T>
Vec3T | indexToWorldGradF (const Vec3T &grad) const
| Transforms the gradient from index space to world space.
uint64_t | activeVoxelCount () const
| Computes a AABB of active values in world space.
bool | isValid () const
| Methods related to the classification of this grid.
const GridType & | gridType () const
const GridClass & | gridClass () const
bool | isLevelSet () const
bool | isFogVolume () const
bool | isStaggered () const
bool | isPointIndex () const
bool | isGridIndex () const
bool | isPointData () const
bool | isMask () const
bool | isUnknown () const
bool | hasMinMax () const
bool | hasBBox () const
bool | hasLongGridName () const
bool | hasAverage () const
bool | hasStdDeviation () const
bool | isBreadthFirst () const
template<typename NodeT>
bool | isSequential () const
| return true if the specified node type is layed out breadth-first in memory and has a fixed size. This allows for sequential access to the nodes.
template<int LEVEL>
bool | isSequential () const
| return true if the specified node level is layed out breadth-first in memory and has a fixed size. This allows for sequential access to the nodes.
bool | isSequential () const
| return true if nodes at all levels can safely be accessed with simple linear offsets
const char * | gridName () const
| Return a c-string with the name of this grid.
const char * | shortGridName () const
| Return a c-string with the name of this grid, truncated to 255 characters.
uint64_t | checksum () const
| Return checksum of the grid buffer.
uint32_t | blindDataCount () const
| Return true if this grid is empty, i.e. contains no values or nodes.
int | findBlindData (const char *name) const
| Return the index of the first blind data with specified name if found, otherwise -1.
int | findBlindDataForSemantic (GridBlindDataSemantic semantic) const
| Return the index of the first blind data with specified semantic if found, otherwise -1.
const void * | blindData (uint32_t n) const
| Returns a const pointer to the blindData at the specified linear offset.
template<typename BlindDataT>
const BlindDataT * | getBlindData (uint32_t n) const
template<typename BlindDataT>
BlindDataT * | getBlindData (uint32_t n)
const GridBlindMetaData & | blindMetaData (uint32_t n) const
void | init (std::initializer_list< GridFlags > list={GridFlags::IsBreadthFirst}, uint64_t gridSize=0u, const Map &map=Map(), GridType gridType=GridType::Unknown, GridClass gridClass=GridClass::Unknown)
void | setMinMaxOn (bool on=true)
void | setBBoxOn (bool on=true)
void | setLongGridNameOn (bool on=true)
void | setAverageOn (bool on=true)
void | setStdDeviationOn (bool on=true)
bool | setGridName (const char *src)
template<typename Vec3T>
Vec3T | applyMap (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyInverseMap (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyJacobian (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyInverseJacobian (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyIJT (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyMapF (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyInverseMapF (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyJacobianF (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyInverseJacobianF (const Vec3T &xyz) const
template<typename Vec3T>
Vec3T | applyIJTF (const Vec3T &xyz) const
uint8_t * | treePtr ()
const uint8_t * | treePtr () const
template<uint32_t LEVEL>
const uint8_t * | nodePtr () const
| Return a non-const uint8_t pointer to the first node at `LEVEL`.
template<uint32_t LEVEL>
uint8_t * | nodePtr ()
| Return a non-const uint8_t pointer to the first node at `LEVEL`.
const BBox< Vec3d > & | worldBBox () const
| return AABB of active values in world space
const CoordBBox & | indexBBox () const
| return AABB of active values in index space
uint32_t | rootTableSize () const
| return the root table has size
bool | isEmpty () const
| test if the grid is empty, e.i the root table has size 0
bool | isRootConnected () const
| return true if RootData follows TreeData in memory without any extra padding

## Static Public Member Functions

static uint64_t | memUsage ()
| Return memory usage in bytes for this class only.

## Public Attributes

uint64_t | mMagic
uint64_t | mChecksum
Version | mVersion
BitFlags< 32 > | mFlags
uint32_t | mGridIndex
uint32_t | mGridCount
uint64_t | mGridSize
char | mGridName [MaxNameSize]
Map | mMap
BBox< Vec3d > | mWorldBBox
Vec3d | mVoxelSize
GridClass | mGridClass
GridType | mGridType
int64_t | mBlindMetadataOffset
uint32_t | mBlindMetadataCount
uint32_t | mData0
uint64_t | mData1
uint64_t | mData2

## Static Public Attributes

static const int | MaxNameSize = 256

## Detailed Description

template<typename TreeT>
class nanovdb::Grid< TreeT >

Highest level of the data structure. Contains a tree and a world->index transform (that currently only supports uniform scaling and translation).

Note
  This the API of this class to interface with client code

## Member Typedef Documentation

## AccessorType

template<typename TreeT>

using AccessorType = DefaultReadAccessor<BuildType>

## BuildType

template<typename TreeT>

using BuildType = typename TreeT::BuildType

## CoordType

template<typename TreeT>

using CoordType = typename TreeT::CoordType

## DataType

template<typename TreeT>

using DataType = GridData

## LeafNodeType

template<typename TreeT>

using LeafNodeType = typename RootType::LeafNodeType

## LowerNodeType

template<typename TreeT>

using LowerNodeType = typename UpperNodeType::ChildNodeType

## RootNodeType

template<typename TreeT>

using RootNodeType = RootType

## RootType

template<typename TreeT>

using RootType = typename TreeT::RootType

## TreeType

template<typename TreeT>

using TreeType = TreeT

## UpperNodeType

template<typename TreeT>

using UpperNodeType = typename RootNodeType::ChildNodeType

## ValueType

template<typename TreeT>

using ValueType = typename TreeT::ValueType

## Constructor & Destructor Documentation

## Grid()

template<typename TreeT>

Grid | ( | const Grid< TreeT > & |  | ) |

delete

Disallow constructions, copy and assignment.

Note
  Only a Serializer, defined elsewhere, can instantiate this class

## ~Grid()

template<typename TreeT>

~Grid | ( |  | ) |

delete

## Member Function Documentation

## activeVoxelCount()

template<typename TreeT>

uint64_t activeVoxelCount | ( |  | ) | const

inline

Computes a AABB of active values in world space.

Computes a AABB of active values in index space

Note
  This method is returning a floating point bounding box and not a CoordBBox. This makes it more useful for clipping rays.

Return the total number of active voxels in this tree.

## applyIJT()

template<typename Vec3T>

Vec3T applyIJT | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyIJTF()

template<typename Vec3T>

Vec3T applyIJTF | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyInverseJacobian()

template<typename Vec3T>

Vec3T applyInverseJacobian | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyInverseJacobianF()

template<typename Vec3T>

Vec3T applyInverseJacobianF | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyInverseMap()

template<typename Vec3T>

Vec3T applyInverseMap | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyInverseMapF()

template<typename Vec3T>

Vec3T applyInverseMapF | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyJacobian()

template<typename Vec3T>

Vec3T applyJacobian | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyJacobianF()

template<typename Vec3T>

Vec3T applyJacobianF | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyMap()

template<typename Vec3T>

Vec3T applyMap | ( | const Vec3T & | xyz | ) | const

inlineinherited

## applyMapF()

template<typename Vec3T>

Vec3T applyMapF | ( | const Vec3T & | xyz | ) | const

inlineinherited

## blindData()

template<typename TreeT>

const void * blindData | ( | uint32_t | n | ) | const

inline

Returns a const pointer to the blindData at the specified linear offset.

Warning
  Pointer might be NULL and the linear offset is assumed to be in the valid range

## blindDataCount()

template<typename TreeT>

uint32_t blindDataCount | ( |  | ) | const

inline

Return true if this grid is empty, i.e. contains no values or nodes.

Return the count of blind-data encoded in this grid

## blindMetaData()

template<typename TreeT>

const GridBlindMetaData & blindMetaData | ( | uint32_t | n | ) | const

inline

## checksum()

template<typename TreeT>

uint64_t checksum | ( |  | ) | const

inline

Return checksum of the grid buffer.

## data() [1/2]

template<typename TreeT>

DataType * data | ( |  | ) |

inline

## data() [2/2]

template<typename TreeT>

const DataType * data | ( |  | ) | const

inline

## findBlindData()

template<typename TreeT>

int findBlindData | ( | const char * | name | ) | const

Return the index of the first blind data with specified name if found, otherwise -1.

## findBlindDataForSemantic()

template<typename TreeT>

int findBlindDataForSemantic | ( | GridBlindDataSemantic | semantic | ) | const

Return the index of the first blind data with specified semantic if found, otherwise -1.

## getAccessor()

template<typename TreeT>

AccessorType getAccessor | ( |  | ) | const

inline

Return a new instance of a ReadAccessor used to access values in this grid.

## getBlindData() [1/2]

template<typename TreeT>
template<typename BlindDataT>

BlindDataT * getBlindData | ( | uint32_t | n | ) |

inline

## getBlindData() [2/2]

template<typename TreeT>
template<typename BlindDataT>

const BlindDataT * getBlindData | ( | uint32_t | n | ) | const

inline

## gridClass()

template<typename TreeT>

const GridClass & gridClass | ( |  | ) | const

inline

## gridCount()

template<typename TreeT>

uint32_t gridCount | ( |  | ) | const

inline

Return total number of grids in the buffer.

## gridIndex()

template<typename TreeT>

uint32_t gridIndex | ( |  | ) | const

inline

Return index of this grid in the buffer.

## gridName()

template<typename TreeT>

const char * gridName | ( |  | ) | const

inline

Return a c-string with the name of this grid.

## gridSize()

template<typename TreeT>

uint64_t gridSize | ( |  | ) | const

inline

Return memory usage in bytes for this class only.

Return the memory footprint of the entire grid, i.e. including all nodes and blind data

## gridType()

template<typename TreeT>

const GridType & gridType | ( |  | ) | const

inline

## hasAverage()

template<typename TreeT>

bool hasAverage | ( |  | ) | const

inline

## hasBBox()

template<typename TreeT>

bool hasBBox | ( |  | ) | const

inline

## hasLongGridName()

template<typename TreeT>

bool hasLongGridName | ( |  | ) | const

inline

## hasMinMax()

template<typename TreeT>

bool hasMinMax | ( |  | ) | const

inline

## hasStdDeviation()

template<typename TreeT>

bool hasStdDeviation | ( |  | ) | const

inline

## indexBBox()

const CoordBBox & indexBBox | ( |  | ) | const

inlineinherited

return AABB of active values in index space

## indexToWorld()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorld | ( | const Vec3T & | xyz | ) | const

inline

index to world space transformation

## indexToWorldDir()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorldDir | ( | const Vec3T & | dir | ) | const

inline

transformation from index space direction to world space direction

Warning
  assumes dir to be normalized

## indexToWorldDirF()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorldDirF | ( | const Vec3T & | dir | ) | const

inline

transformation from index space direction to world space direction

Warning
  assumes dir to be normalized

## indexToWorldF()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorldF | ( | const Vec3T & | xyz | ) | const

inline

index to world space transformation

## indexToWorldGrad()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorldGrad | ( | const Vec3T & | grad | ) | const

inline

transform the gradient from index space to world space.

Applies the inverse jacobian transform map.

## indexToWorldGradF()

template<typename TreeT>
template<typename Vec3T>

Vec3T indexToWorldGradF | ( | const Vec3T & | grad | ) | const

inline

Transforms the gradient from index space to world space.

Applies the inverse jacobian transform map.

## init()

void init | ( | std::initializer_list< GridFlags > | list = {GridFlags::IsBreadthFirst},
|  | uint64_t | gridSize = 0u,
|  | const Map & | map = Map(),
|  | GridType | gridType = GridType::Unknown,
|  | GridClass | gridClass = GridClass::Unknown )

inlineinherited

## isBreadthFirst()

template<typename TreeT>

bool isBreadthFirst | ( |  | ) | const

inline

## isEmpty()

bool isEmpty | ( |  | ) | const

inlineinherited

test if the grid is empty, e.i the root table has size 0

Returns
  true if this grid contains not data whatsoever

## isFogVolume()

template<typename TreeT>

bool isFogVolume | ( |  | ) | const

inline

## isGridIndex()

template<typename TreeT>

bool isGridIndex | ( |  | ) | const

inline

## isLevelSet()

template<typename TreeT>

bool isLevelSet | ( |  | ) | const

inline

## isMask()

template<typename TreeT>

bool isMask | ( |  | ) | const

inline

## isPointData()

template<typename TreeT>

bool isPointData | ( |  | ) | const

inline

## isPointIndex()

template<typename TreeT>

bool isPointIndex | ( |  | ) | const

inline

## isRootConnected()

bool isRootConnected | ( |  | ) | const

inlineinherited

return true if RootData follows TreeData in memory without any extra padding

TreeData is always following right after GridData, but the same might not be true for RootData

## isSequential() [1/3]

template<typename TreeT>
template<typename NodeT>

bool isSequential | ( |  | ) | const

inline

return true if the specified node type is layed out breadth-first in memory and has a fixed size. This allows for sequential access to the nodes.

## isSequential() [2/3]

template<typename TreeT>
template<int LEVEL>

bool isSequential | ( |  | ) | const

inline

return true if the specified node level is layed out breadth-first in memory and has a fixed size. This allows for sequential access to the nodes.

## isSequential() [3/3]

template<typename TreeT>

bool isSequential | ( |  | ) | const

inline

return true if nodes at all levels can safely be accessed with simple linear offsets

## isStaggered()

template<typename TreeT>

bool isStaggered | ( |  | ) | const

inline

## isUnknown()

template<typename TreeT>

bool isUnknown | ( |  | ) | const

inline

## isValid()

template<typename TreeT>

bool isValid | ( |  | ) | const

inline

Methods related to the classification of this grid.

## map()

template<typename TreeT>

const Map & map | ( |  | ) | const

inline

Return a const reference to the Map for this grid.

## memUsage()

uint64_t memUsage | ( |  | ) |

inlinestaticinherited

Return memory usage in bytes for this class only.

## nodePtr() [1/2]

template<uint32_t LEVEL>

uint8_t * nodePtr | ( |  | ) |

inlineinherited

Return a non-const uint8_t pointer to the first node at `LEVEL`.

Template Parameters

  LEVEL | of the node. LEVEL 0 means leaf node and LEVEL 3 means root node

Warning
  If not nodes exist at `LEVEL` NULL is returned

## nodePtr() [2/2]

template<uint32_t LEVEL>

const uint8_t * nodePtr | ( |  | ) | const

inlineinherited

Return a non-const uint8_t pointer to the first node at `LEVEL`.

Template Parameters

  LEVEL | of the node. LEVEL 0 means leaf node and LEVEL 3 means root node

Warning
  If not nodes exist at `LEVEL` NULL is returned

## operator=()

template<typename TreeT>

Grid & operator= | ( | const Grid< TreeT > & |  | ) |

delete

## pointCount()

template<typename TreeT>
template<typename T = BuildType>

enable_if< is_same< T, Point >::value, constuint64_t & >::type pointCount | ( |  | ) | const

inline

Return the total number of points indexed by this PointGrid.

Note
  This method is only defined for PointGrid = NanoGrid<Point>

## rootTableSize()

uint32_t rootTableSize | ( |  | ) | const

inlineinherited

return the root table has size

## setAverageOn()

void setAverageOn | ( | bool | on = true | ) |

inlineinherited

## setBBoxOn()

void setBBoxOn | ( | bool | on = true | ) |

inlineinherited

## setGridName()

bool setGridName | ( | const char * | src | ) |

inlineinherited

## setLongGridNameOn()

void setLongGridNameOn | ( | bool | on = true | ) |

inlineinherited

## setMinMaxOn()

void setMinMaxOn | ( | bool | on = true | ) |

inlineinherited

## setStdDeviationOn()

void setStdDeviationOn | ( | bool | on = true | ) |

inlineinherited

## shortGridName()

template<typename TreeT>

const char * shortGridName | ( |  | ) | const

inline

Return a c-string with the name of this grid, truncated to 255 characters.

## tree() [1/2]

template<typename TreeT>

TreeT & tree | ( |  | ) |

inline

Return a non-const reference to the tree.

## tree() [2/2]

template<typename TreeT>

const TreeT & tree | ( |  | ) | const

inline

Return a const reference to the tree.

## treePtr() [1/2]

uint8_t * treePtr | ( |  | ) |

inlineinherited

## treePtr() [2/2]

const uint8_t * treePtr | ( |  | ) | const

inlineinherited

## valueCount()

template<typename TreeT>
template<typename T = BuildType>

enable_if< BuildTraits< T >::is_index, constuint64_t & >::type valueCount | ( |  | ) | const

inline

Return the total number of values indexed by this IndexGrid.

Note
  This method is only defined for IndexGrid = NanoGrid<ValueIndex || ValueOnIndex || ValueIndexMask || ValueOnIndexMask>

## version()

template<typename TreeT>

Version version | ( |  | ) | const

inline

## voxelSize()

template<typename TreeT>

const Vec3d & voxelSize | ( |  | ) | const

inline

Return a const reference to the size of a voxel in world units.

## worldBBox()

const BBox< Vec3d > & worldBBox | ( |  | ) | const

inlineinherited

return AABB of active values in world space

## worldToIndex()

template<typename TreeT>
template<typename Vec3T>

Vec3T worldToIndex | ( | const Vec3T & | xyz | ) | const

inline

world to index space transformation

## worldToIndexDir()

template<typename TreeT>
template<typename Vec3T>

Vec3T worldToIndexDir | ( | const Vec3T & | dir | ) | const

inline

transformation from world space direction to index space direction

Warning
  assumes dir to be normalized

## worldToIndexDirF()

template<typename TreeT>
template<typename Vec3T>

Vec3T worldToIndexDirF | ( | const Vec3T & | dir | ) | const

inline

transformation from world space direction to index space direction

Warning
  assumes dir to be normalized

## worldToIndexF()

template<typename TreeT>
template<typename Vec3T>

Vec3T worldToIndexF | ( | const Vec3T & | xyz | ) | const

inline

world to index space transformation

## Member Data Documentation

## MaxNameSize

const int MaxNameSize = 256

staticinherited

## mBlindMetadataCount

uint32_t mBlindMetadataCount

inherited

## mBlindMetadataOffset

int64_t mBlindMetadataOffset

inherited

## mChecksum

uint64_t mChecksum

inherited

## mData0

uint32_t mData0

inherited

## mData1

uint64_t mData1

inherited

## mData2

uint64_t mData2

inherited

## mFlags

BitFlags<32> mFlags

inherited

## mGridClass

GridClass mGridClass

inherited

## mGridCount

uint32_t mGridCount

inherited

## mGridIndex

uint32_t mGridIndex

inherited

## mGridName

char mGridName[MaxNameSize]

inherited

## mGridSize

uint64_t mGridSize

inherited

## mGridType

GridType mGridType

inherited

## mMagic

uint64_t mMagic

inherited

## mMap

Map mMap

inherited

## mVersion

Version mVersion

inherited

## mVoxelSize

Vec3d mVoxelSize

inherited

## mWorldBBox

BBox<Vec3d> mWorldBBox

inherited