OpenVDB 12.1.0

Loading...
Searching...
No Matches
Interpolation.h File Reference
`#include <openvdb/version.h>`
`#include <openvdb/Platform.h>`
`#include <openvdb/math/Math.h>`
`#include <openvdb/math/Transform.h>`
`#include <openvdb/Grid.h>`
`#include <openvdb/tree/ValueAccessor.h>`
`#include <openvdb/util/Assert.h>`
`#include <cmath>`
`#include <type_traits>`

Go to the source code of this file.

## Classes
struct | Sampler< Order, Staggered >
| Provises a unified interface for sampling, i.e. interpolation. More...
struct | PointSampler
struct | BoxSampler
struct | QuadraticSampler
struct | StaggeredPointSampler
struct | StaggeredBoxSampler
struct | StaggeredQuadraticSampler
class | GridSampler< GridOrTreeType, SamplerType >
| Class that provides the interface for continuous sampling of values in a tree. More...
class | GridSampler< tree::ValueAccessor< TreeT >, SamplerType >
| Specialization of GridSampler for construction from a ValueAccessor type. More...
class | DualGridSampler< GridOrTreeT, SamplerT >
| This is a simple convenience class that allows for sampling from a source grid into the index space of a target grid. At construction the source and target grids are checked for alignment which potentially renders interpolation unnecessary. Else interpolation is performed according to the templated Sampler type. More...
class | DualGridSampler< tree::ValueAccessor< TreeT >, SamplerT >
| Specialization of DualGridSampler for construction from a ValueAccessor type. More...
class | AlphaMask< GridT, MaskT, SamplerT, FloatT >
struct | Sampler< 0, false >
struct | Sampler< 1, false >
struct | Sampler< 2, false >
struct | Sampler< 0, true >
struct | Sampler< 1, true >
struct | Sampler< 2, true >

## Namespaces
namespace | openvdb
namespace | openvdb::v12_1
namespace | openvdb::v12_1::tools
namespace | openvdb::v12_1::tools::local_util

## Functions
Vec3i | floorVec3 (const Vec3R &v)
Vec3i | ceilVec3 (const Vec3R &v)
Vec3i | roundVec3 (const Vec3R &v)

## Detailed Description

Sampler classes such as PointSampler and BoxSampler that are intended for use with tools::GridTransformer should operate in voxel space and must adhere to the interface described in the example below:

struct MySampler
{
// Return a short name that can be used to identify this sampler
// in error messages and elsewhere.
const char* name() { return "mysampler"; }
// Return the radius of the sampling kernel in voxels, not including
// the center voxel. This is the number of voxels of padding that
// are added to all sides of a volume as a result of resampling.
int radius() { return 2; }
// Return true if scaling by a factor smaller than 0.5 (along any axis)
// should be handled via a mipmapping-like scheme of successive halvings
// of a grid's resolution, until the remaining scale factor is
// greater than or equal to 1/2. Set this to false only when high-quality
// scaling is not required.
bool mipmap() { return true; }
// Specify if sampling at a location that is collocated with a grid point
// is guaranteed to return the exact value at that grid point.
// For most sampling kernels, this should be false.
bool consistent() { return false; }
// Sample the tree at the given coordinates and return the result in val.
// Return true if the sampled value is active.
template<class TreeT>
bool sample(const TreeT& tree, const Vec3R& coord, typename TreeT::ValueType& val);
};