OpenVDB 12.1.0

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

## 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.