OpenVDB 12.1.0

Loading...
Searching...
No Matches
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
namespace | openvdb
namespace | openvdb::v12_1
namespace | openvdb::v12_1::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