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

Space-partitioning acceleration structure for particles, points with radius. Partitions particle indices into voxels to accelerate range and nearest neighbor searches. More...

#include "PointIndexGrid.h"
#include <openvdb/Grid.h>
#include <openvdb/Types.h>
#include <openvdb/math/Transform.h>
#include <openvdb/tree/Tree.h>
#include <openvdb/tree/LeafNode.h>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include <tbb/parallel_reduce.h>
#include <algorithm>
#include <cmath>
#include <deque>
#include <limits>
#include <memory>
#include <utility>
#include <vector>
+ Include dependency graph for ParticleAtlas.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::tools::ParticleAtlas< PointIndexGridType >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::ParticleAtlas< PointIndexGridType >::Iterator
 Provides accelerated range and nearest-neighbor searches for particles that are partitioned using the ParticleAtlas. More...
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal::ComputeExtremas< ParticleArrayT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal::SplittableParticleArray< ParticleArrayT, PointIndex >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal::RemapIndices< ParticleArrayType, PointIndexLeafNodeType >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal::RadialRangeFilter< ParticleArrayType, IndexT >
 
struct  openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal::BBoxFilter< ParticleArrayType, IndexT >
 

Namespaces

 openvdb
 
 openvdb::OPENVDB_VERSION_NAME
 
 openvdb::OPENVDB_VERSION_NAME::tools
 
 openvdb::OPENVDB_VERSION_NAME::tools::particle_atlas_internal
 

Typedefs

using openvdb::OPENVDB_VERSION_NAME::tools::ParticleIndexAtlas = ParticleAtlas< PointIndexGrid >
 

Detailed Description

Space-partitioning acceleration structure for particles, points with radius. Partitions particle indices into voxels to accelerate range and nearest neighbor searches.

Note
  This acceleration structure only stores integer offsets into an external particle data structure that conforms to the ParticleArray interface. 

Constructs and maintains a sequence of PointIndexGrids each of progressively lower resolution. Particles are uniquely assigned to a particular resolution level based on their radius. This strategy has proven efficient for accelerating spatial queries on particle data sets with varying radii.

The data structure automatically detects and adapts to particle data sets with uniform radii. The construction is simplified and spatial queries pre-cache the uniform particle radius to avoid redundant access calls to the ParticleArray::getRadius method.

Author
Mihai Alden

Definition in file ParticleAtlas.h.