HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PointIndexGrid.h File Reference

Space-partitioning acceleration structure for points. Partitions the points into voxels to accelerate range and nearest neighbor searches. More...

#include "PointPartitioner.h"
#include <openvdb/Exceptions.h>
#include <openvdb/Grid.h>
#include <openvdb/Types.h>
#include <openvdb/math/Transform.h>
#include <openvdb/tree/LeafManager.h>
#include <openvdb/tree/LeafNode.h>
#include <openvdb/tree/Tree.h>
#include <hboost/scoped_array.hpp>
#include <tbb/atomic.h>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include <algorithm>
#include <cmath>
#include <deque>
#include <iostream>
#include <type_traits>
#include <utility>
#include <vector>
+ Include dependency graph for PointIndexGrid.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openvdb::OPENVDB_VERSION_NAME::tree::SameLeafConfig< Index, typename >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::PointIndexLeafNode< T, Log2Dim >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::PointIndexIterator< TreeType >
 Accelerated range and nearest-neighbor searches for point index grids. More...
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::PointIndexFilter< PointArray, TreeType >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::ValidPartitioningOp< PointArrayT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::PopulateLeafNodesOp< LeafNodeT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::BBoxFilter< PointArray, IndexT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::RadialRangeFilter< PointArray, IndexT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::PointIndexLeafNode< T, Log2Dim >
 
struct  openvdb::OPENVDB_VERSION_NAME::tree::SameLeafConfig< Dim1, openvdb::tools::PointIndexLeafNode< T2, Dim1 > >
 

Namespaces

 openvdb
 
 openvdb::OPENVDB_VERSION_NAME
 
 openvdb::OPENVDB_VERSION_NAME::tree
 
 openvdb::OPENVDB_VERSION_NAME::tools
 
 openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal
 

Macros

#define VMASK_   this->getValueMask()
 

Typedefs

using openvdb::OPENVDB_VERSION_NAME::tools::PointIndexTree = tree::Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointIndexLeafNode< PointIndex32, 3 >, 4 >, 5 >>>
 Point index tree configured to match the default OpenVDB tree configuration. More...
 
using openvdb::OPENVDB_VERSION_NAME::tools::PointIndexGrid = Grid< PointIndexTree >
 Point index grid. More...
 

Functions

template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPointIndexGrid (const PointArrayT &points, double voxelSize)
 Partition points into a point index grid to accelerate range and nearest-neighbor searches. More...
 
template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::createPointIndexGrid (const PointArrayT &points, const math::Transform &xform)
 Partition points into a point index grid to accelerate range and nearest-neighbor searches. More...
 
template<typename PointArrayT , typename GridT >
bool openvdb::OPENVDB_VERSION_NAME::tools::isValidPartition (const PointArrayT &points, const GridT &grid)
 Return true if the given point index grid represents a valid partitioning of the given point array. More...
 
template<typename GridT , typename PointArrayT >
GridT::ConstPtr openvdb::OPENVDB_VERSION_NAME::tools::getValidPointIndexGrid (const PointArrayT &points, const typename GridT::ConstPtr &grid)
 Repartition the points if needed, otherwise return the input grid. More...
 
template<typename GridT , typename PointArrayT >
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::tools::getValidPointIndexGrid (const PointArrayT &points, const typename GridT::Ptr &grid)
 Repartition the points if needed, otherwise return the input grid. More...
 
template<typename TreeType , typename PointArray >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::constructPointTree (TreeType &tree, const math::Transform &xform, const PointArray &points)
 Construct a PointIndexTree. More...
 
template<typename T >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::dequeToArray (const std::deque< T > &d, hboost::scoped_array< T > &a, size_t &size)
 
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::constructExclusiveRegions (std::vector< CoordBBox > &regions, const CoordBBox &bbox, const CoordBBox &ibox)
 
template<typename RangeFilterType , typename LeafNodeType >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::filteredPointIndexSearchVoxels (RangeFilterType &filter, const LeafNodeType &leaf, const Coord &min, const Coord &max)
 
template<typename RangeFilterType , typename ConstAccessor >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::filteredPointIndexSearch (RangeFilterType &filter, ConstAccessor &acc, const CoordBBox &bbox)
 
template<typename RangeDeque , typename LeafNodeType >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::pointIndexSearchVoxels (RangeDeque &rangeList, const LeafNodeType &leaf, const Coord &min, const Coord &max)
 
template<typename RangeDeque , typename ConstAccessor >
void openvdb::OPENVDB_VERSION_NAME::tools::point_index_grid_internal::pointIndexSearch (RangeDeque &rangeList, ConstAccessor &acc, const CoordBBox &bbox)
 

Detailed Description

Space-partitioning acceleration structure for points. Partitions the points into voxels to accelerate range and nearest neighbor searches.

Note
Leaf nodes store a single point-index array and the voxels are only integer offsets into that array. The actual points are never stored in the acceleration structure, only offsets into an external array.
Author
Mihai Alden

Definition in file PointIndexGrid.h.

Macro Definition Documentation

#define VMASK_   this->getValueMask()

Definition at line 1635 of file PointIndexGrid.h.