OpenVDB  12.1.0
Classes | Namespaces | Functions
PointTransfer.h File Reference

Framework methods for rasterizing PointDataGrid data to Trees. More...

#include <openvdb/openvdb.h>
#include <openvdb/Types.h>
#include <openvdb/Grid.h>
#include <openvdb/math/Transform.h>
#include <openvdb/util/NullInterrupter.h>
#include <openvdb/util/Assert.h>
#include <openvdb/thread/Threading.h>
#include <type_traits>
#include <tuple>

Go to the source code of this file.

Classes

struct  TransformTransfer
 The TransformTransfer module should be used if the source transform of the input points and the target transforms of the destination volumes differ. The default rasterizer will skip index to world (and vice versa) transformations unless a transfer scheme derives from a TransformTransfer. More...
 
struct  InterruptableTransfer
 InterruptableTransfer module, when derived from allows for schemes to callback into a interrupter, derived from util::NullInterrupter. More...
 
struct  FilteredTransfer< FilterT >
 FilteredTransfer module, when derived from allows for schemes to apply point filtering. Note that this module handles the thread safe intialization and storage of the filter, but derived schemes must call FilteredTransfer::filter() per point id and handle the result. More...
 
struct  FilteredTransfer< NullFilter >
 Specialization of FilteredTransfer for NullFilters which do nothing. More...
 
struct  VolumeTransfer< TreeTypes >
 The VolumeTransfer module provides methods to automatically setup and access destination buffers for multiple target volumes of arbitrary types. Deriving from a VolumeTransfer ensures that the available buffers correlate to the order of the provided tree arguments. More...
 
struct  VolumeTransfer< TreeTypes >::TypeResolver< T >
 
struct  VolumeTransfer< TreeT >
 VolumeTransfer specialization for a single target volume. More...
 
struct  RasterizePoints< TransferT, TopologyT, PointFilterT, InterrupterT >
 

Namespaces

 openvdb
 
 openvdb::v12_1
 
 openvdb::v12_1::points
 
 openvdb::v12_1::points::transfer_internal
 

Functions

template<typename PointDataTreeOrGridT , typename TransferT >
void rasterize (const PointDataTreeOrGridT &points, TransferT &transfer)
 Perform potentially complex rasterization from a user defined transfer scheme. See below comments for the transfer scheme API. More...
 
template<typename T , typename F , size_t... Is>
void foreach (T &&t, const F &func, std::integer_sequence< size_t, Is... >)
 
template<typename T , typename F , size_t... Is>
void foreach (void **buffers, const F &func, std::integer_sequence< size_t, Is... >)
 
template<typename T , template< typename > class R, typename F , size_t... Is>
void foreach (void **buffers, const F &func, std::integer_sequence< size_t, Is... >)
 
template<typename PointDataTreeOrGridT , typename TransferT , typename FilterT , typename InterrupterT = util::NullInterrupter>
void rasterize (const PointDataTreeOrGridT &points, TransferT &transfer, const FilterT &filter, InterrupterT *interrupter=nullptr)
 Perform potentially complex rasterization from a user defined transfer scheme. More...
 

Detailed Description

Framework methods for rasterizing PointDataGrid data to Trees.

Author
Nick Avramoussis

Provides a generic inherited interface for deriving transfer schemes that represent how point data should be rasterized. The provided components together support the transfer of multiple attributes to arbitrary and multiple grid types. Target grids must have the same transform, but this transform can differ from the source PointDataGrid (multiple instantiations of rasterize() should instead be invoked to transfer to grids of different transforms). Arbitrary attributes can be accessed and transfered to arbitrary trees.