OpenVDB  12.0.0
Classes | Namespaces | Typedefs
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>

Go to the source code of this file.

Classes

struct  ParticleAtlas< PointIndexGridType >
 
struct  ParticleAtlas< PointIndexGridType >::Iterator
 Provides accelerated range and nearest-neighbor searches for particles that are partitioned using the ParticleAtlas. More...
 

Namespaces

 openvdb
 
 openvdb::v12_0
 
 openvdb::v12_0::tools
 

Typedefs

using 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