OpenVDB 12.0.0
 
Loading...
Searching...
No Matches
MultiResGrid< TreeType >::ProlongateOp Struct Reference

#include <openvdb/tools/MultiResGrid.h>

Inheritance diagram for MultiResGrid< TreeType >::ProlongateOp:
MetaMap

Public Types

using Ptr
 
using ConstPtr
 
using ValueType
 
using ValueOnCIter
 
using ValueOnIter
 
using TreePtr
 
using ConstTreePtr
 
using GridPtr
 
using ConstGridPtr
 
using MetadataMap
 
using MetaIterator
 
using ConstMetaIterator
 

Public Member Functions

Grid< TreeType >::Ptr createGrid (float level, size_t grainSize) const
 
TreeType::ValueType sampleValue (const Coord &in_ijk, size_t in_level, size_t out_level) const
 
TreeType::ValueType sampleValue (const Vec3R &in_xyz, size_t in_level, size_t out_level) const
 
TreeType::ValueType sampleValue (const Coord &ijk, double level) const
 
TreeType::ValueType sampleValue (const Vec3R &xyz, double level) const
 
 MultiResGrid (size_t levels, ValueType background, double voxelSize=1.0)
 Constructor of empty grids.
 
 MultiResGrid (size_t levels, const Grid< TreeType > &grid, bool useInjection=false)
 Given an initial high-resolution grid this constructor generates all the coarser grids by means of restriction.
 
 MultiResGrid (size_t levels, GridPtr grid, bool useInjection=false)
 Given an initial high-resolution grid this constructor generates all the coarser grids by means of restriction.
 
size_t numLevels () const
 Return the number of levels, i.e. trees, in this MultiResGrid.
 
size_t coarsestLevel () const
 Return the level of the coarsest grid, i.e. numLevels()-1.
 
TreeType & tree (size_t level)
 Return a reference to the tree at the specified level.
 
const TreeType & constTree (size_t level) const
 Return a const reference to the tree at the specified level.
 
TreePtr treePtr (size_t level)
 Return a shared pointer to the tree at the specified level.
 
ConstTreePtr constTreePtr (size_t level) const
 Return a const shared pointer to the tree at the specified level.
 
TreeType & finestTree ()
 Return a reference to the tree at the finest level.
 
const TreeType & finestConstTree () const
 Return a const reference to the tree at the finest level.
 
TreePtr finestTreePtr ()
 Return a shared pointer to the tree at the finest level.
 
ConstTreePtr finestConstTreePtr () const
 Return a const shared pointer to the tree at the finest level.
 
TreeType & coarsestTree ()
 Return a reference to the tree at the coarsest level.
 
const TreeType & coarsestConstTree () const
 Return a const reference to the tree at the coarsest level.
 
TreePtr coarsestTreePtr ()
 Return a shared pointer to the tree at the coarsest level.
 
ConstTreePtr coarsestConstTreePtr () const
 Return a const shared pointer to the tree at the coarsest level.
 
GridPtr grid (size_t level)
 Return a shared pointer to the grid at the specified integer level.
 
ConstGridPtr grid (size_t level) const
 Return a const shared pointer to the grid at the specified level.
 
GridPtr createGrid (float level, size_t grainSize=1) const
 Return a shared pointer to a new grid at the specified floating-point level.
 
Grid< TreeType >::Ptr createGrid (float level, size_t grainSize) const
 
GridPtrVecPtr grids ()
 Return a shared pointer to a vector of all the base grids in this instance of the MultiResGrid.
 
GridCPtrVecPtr grids () const
 Return a const shared pointer to a vector of all the base grids in this instance of the MultiResGrid.
 
math::Transformtransform ()
 Return a reference to the finest grid's transform, which might be shared with other grids.
 
const math::Transformtransform () const
 
const math::TransformconstTransform () const
 
ValueType sampleValue (const Coord &in_ijk, size_t in_level, size_t out_level) const
 Return the value at the specified coordinate position using interpolation of the specified order into the tree at the out_level.
 
ValueType sampleValue (const Vec3R &in_ijk, size_t in_level, size_t out_level) const
 
ValueType sampleValue (const Coord &ijk, double level) const
 Return the value at the specified integer coordinate position and level using interpolation of the specified order.
 
ValueType sampleValue (const Vec3R &xyz, double level) const
 Return the value at the specified floating-point coordinate position and level using interpolation of the specified order.
 
TreeType::ValueType sampleValue (const Coord &in_ijk, size_t in_level, size_t out_level) const
 
TreeType::ValueType sampleValue (const Vec3R &in_xyz, size_t in_level, size_t out_level) const
 
TreeType::ValueType sampleValue (const Coord &ijk, double level) const
 
TreeType::ValueType sampleValue (const Vec3R &xyz, double level) const
 
ValueType prolongateVoxel (const Coord &coords, const size_t level) const
 Return the value at coordinate location in level tree from the coarser tree at level+1 using trilinear interpolation.
 
void prolongateActiveVoxels (size_t destlevel, size_t grainSize=1)
 
ValueType restrictVoxel (Coord ijk, const size_t level, bool useInjection=false) const
 
void restrictActiveVoxels (size_t destlevel, size_t grainSize=1)
 
void print (std::ostream &=std::cout, int verboseLevel=1) const
 Output a human-readable description of this MultiResGrid.
 
std::string getName () const
 Return a string with the name of this MultiResGrid.
 
void setName (const std::string &name)
 Set the name of this MultiResGrid.
 
GridClass getGridClass () const
 Return the class of volumetric data (level set, fog volume, etc.) stored in this grid.
 
void setGridClass (GridClass cls)
 Specify the class of volumetric data (level set, fog volume, etc.) stored in this grid.
 
void clearGridClass ()
 Remove the setting specifying the class of this grid's volumetric data.
 
MetaMap::Ptr copyMeta () const
 Return a copy of this map whose fields are shared with this map.
 
MetaMap::Ptr deepCopyMeta () const
 Return a deep copy of this map that shares no data with this map.
 
void readMeta (std::istream &)
 Unserialize metadata from the given stream.
 
void writeMeta (std::ostream &) const
 Serialize metadata to the given stream.
 
void insertMeta (const Name &, const Metadata &value)
 Insert a new metadata field or overwrite the value of an existing field.
 
void insertMeta (const MetaMap &)
 Deep copy all of the metadata fields from the given map into this map.
 
void removeMeta (const Name &)
 Remove the given metadata field if it exists.
 
Metadata::Ptr operator[] (const Name &)
 Return a pointer to the metadata with the given name. If no such field exists, return a null pointer.
 
Metadata::ConstPtr operator[] (const Name &) const
 
T::Ptr getMetadata (const Name &)
 Return a pointer to a TypedMetadata object of type T and with the given name. If no such field exists or if there is a type mismatch, return a null pointer.
 
T::ConstPtr getMetadata (const Name &) const
 
T & metaValue (const Name &)
 Return a reference to the value of type T stored in the given metadata field.
 
const T & metaValue (const Name &) const
 
MetaIterator beginMeta ()
 
ConstMetaIterator beginMeta () const
 
MetaIterator endMeta ()
 
ConstMetaIterator endMeta () const
 
void clearMetadata ()
 
size_t metaCount () const
 
std::string str (const std::string &indent="") const
 Return a string describing this metadata map. Prefix each line with indent.
 
bool operator== (const MetaMap &other) const
 Return true if the given map is equivalent to this map.
 
bool operator!= (const MetaMap &other) const
 Return true if the given map is different from this map.
 

Static Public Member Functions

static ValueType run (const Coord &ijk, const ConstAccessor &acc)
 Interpolate values from a coarse grid (acc) into the index space (ijk) of a fine grid.
 
static size_t finestLevel ()
 Return the level of the finest grid (always 0)
 
static Vec3R xyz (const Coord &in_ijk, size_t in_level, size_t out_level)
 Return the floating-point index coordinate at out_level given the index coordinate in_xyz at in_level.
 
static Vec3R xyz (const Vec3R &in_xyz, size_t in_level, size_t out_level)
 
static Vec3R xyz (const Vec3R &in_xyz, double in_level, double out_level)
 

Member Typedef Documentation

◆ ConstGridPtr

using ConstGridPtr

◆ ConstMetaIterator

◆ ConstPtr

using ConstPtr

◆ ConstTreePtr

using ConstTreePtr

◆ GridPtr

using GridPtr

◆ MetadataMap

using MetadataMap

◆ MetaIterator

using MetaIterator

◆ Ptr

using Ptr

◆ TreePtr

using TreePtr

◆ ValueOnCIter

using ValueOnCIter

◆ ValueOnIter

using ValueOnIter

◆ ValueType

using ValueType

Member Function Documentation

◆ beginMeta() [1/2]

MetaIterator beginMeta ( )
inline

◆ beginMeta() [2/2]

ConstMetaIterator beginMeta ( ) const
inline

◆ clearGridClass()

void clearGridClass ( )
inline

Remove the setting specifying the class of this grid's volumetric data.

◆ clearMetadata()

void clearMetadata ( )
inline

◆ coarsestConstTree()

const TreeType & coarsestConstTree ( ) const
inline

Return a const reference to the tree at the coarsest level.

◆ coarsestConstTreePtr()

ConstTreePtr coarsestConstTreePtr ( ) const
inline

Return a const shared pointer to the tree at the coarsest level.

◆ coarsestLevel()

size_t coarsestLevel ( ) const
inline

Return the level of the coarsest grid, i.e. numLevels()-1.

◆ coarsestTree()

TreeType & coarsestTree ( )
inline

Return a reference to the tree at the coarsest level.

◆ coarsestTreePtr()

TreePtr coarsestTreePtr ( )
inline

Return a shared pointer to the tree at the coarsest level.

◆ constTransform()

const math::Transform & constTransform ( ) const
inline

◆ constTree()

const TreeType & constTree ( size_t level) const
inline

Return a const reference to the tree at the specified level.

Parameters
levelThe level of the tree to be returned
Note
Level 0 is by definition the finest tree.

◆ constTreePtr()

TreeType::ConstPtr constTreePtr ( size_t level) const
inline

Return a const shared pointer to the tree at the specified level.

Parameters
levelThe level of the tree to be returned
Note
Level 0 is by definition the finest tree.

◆ copyMeta()

MetaMap::Ptr copyMeta ( ) const

Return a copy of this map whose fields are shared with this map.

◆ createGrid() [1/3]

Grid< TreeType >::Ptr createGrid ( float level,
size_t grainSize ) const

◆ createGrid() [2/3]

Grid< TreeType >::Ptr createGrid ( float level,
size_t grainSize ) const

◆ createGrid() [3/3]

GridPtr createGrid ( float level,
size_t grainSize = 1 ) const

Return a shared pointer to a new grid at the specified floating-point level.

Parameters
levelFloating-point level of the grid to be returned
grainSizeGrain size for the multi-threading

Interpolation of the specified order is performed between the bracketing integer levels.

Note
Level 0 is by definition the finest grid.

◆ deepCopyMeta()

MetaMap::Ptr deepCopyMeta ( ) const

Return a deep copy of this map that shares no data with this map.

◆ endMeta() [1/2]

MetaIterator endMeta ( )
inline

◆ endMeta() [2/2]

ConstMetaIterator endMeta ( ) const
inline

◆ finestConstTree()

const TreeType & finestConstTree ( ) const
inline

Return a const reference to the tree at the finest level.

◆ finestConstTreePtr()

ConstTreePtr finestConstTreePtr ( ) const
inline

Return a const shared pointer to the tree at the finest level.

◆ finestLevel()

static size_t finestLevel ( )
inlinestatic

Return the level of the finest grid (always 0)

◆ finestTree()

TreeType & finestTree ( )
inline

Return a reference to the tree at the finest level.

◆ finestTreePtr()

TreePtr finestTreePtr ( )
inline

Return a shared pointer to the tree at the finest level.

◆ getGridClass()

GridClass getGridClass ( ) const
inline

Return the class of volumetric data (level set, fog volume, etc.) stored in this grid.

◆ getMetadata() [1/2]

T::Ptr getMetadata ( const Name & name)
inline

Return a pointer to a TypedMetadata object of type T and with the given name. If no such field exists or if there is a type mismatch, return a null pointer.

◆ getMetadata() [2/2]

T::ConstPtr getMetadata ( const Name & name) const
inline

◆ getName()

std::string getName ( ) const
inline

Return a string with the name of this MultiResGrid.

◆ grid() [1/2]

Grid< TreeType >::Ptr grid ( size_t level)

Return a shared pointer to the grid at the specified integer level.

Parameters
levelInteger level of the grid to be returned
Note
Level 0 is by definition the finest grid.

◆ grid() [2/2]

Grid< TreeType >::ConstPtr grid ( size_t level) const
inline

Return a const shared pointer to the grid at the specified level.

Parameters
levelThe level of the grid to be returned
Note
Level 0 is by definition the finest grid.

◆ grids() [1/2]

GridPtrVecPtr grids ( )

Return a shared pointer to a vector of all the base grids in this instance of the MultiResGrid.

This method is useful for I/O

◆ grids() [2/2]

GridCPtrVecPtr grids ( ) const

Return a const shared pointer to a vector of all the base grids in this instance of the MultiResGrid.

This method is useful for I/O

◆ insertMeta() [1/2]

void insertMeta ( const MetaMap & )

Deep copy all of the metadata fields from the given map into this map.

Exceptions
TypeErrorif any field in the given map has the same name as but a different value type than one of this map's fields.

◆ insertMeta() [2/2]

void insertMeta ( const Name & ,
const Metadata & value )

Insert a new metadata field or overwrite the value of an existing field.

If a field with the given name doesn't already exist, add a new field. Otherwise, if the new value's type is the same as the existing field's value type, overwrite the existing value with new value.

Exceptions
TypeErrorif a field with the given name already exists, but its value type is not the same as the new value's
ValueErrorif the given field name is empty.

◆ metaCount()

size_t metaCount ( ) const
inline

◆ metaValue() [1/2]

T & metaValue ( const Name & name)
inline

Return a reference to the value of type T stored in the given metadata field.

Exceptions
LookupErrorif no field with the given name exists.
TypeErrorif the given field is not of type T.

◆ metaValue() [2/2]

const T & metaValue ( const Name & name) const
inline

◆ MultiResGrid() [1/3]

MultiResGrid ( size_t levels,
const Grid< TreeType > & grid,
bool useInjection = false )

Given an initial high-resolution grid this constructor generates all the coarser grids by means of restriction.

Parameters
levelsThe number of trees in this MultiResGrid
gridHigh-resolution input grid
useInjectionUse restriction by injection, vs full-weighting. It defaults to false and should rarely be used.
Note
This constructor will perform a deep copy of the input grid and use it as the highest level grid.

◆ MultiResGrid() [2/3]

MultiResGrid ( size_t levels,
GridPtr grid,
bool useInjection = false )

Given an initial high-resolution grid this constructor generates all the coarser grids by means of restriction.

Parameters
levelsThe number of trees in this MultiResGrid
gridHigh-resolution input grid
useInjectionUse restriction by injection, vs full-weighting. It defaults to false and should rarely be used.
Note
This constructor will steal the input grid and use it as the highest level grid. On output the grid is empty.

◆ MultiResGrid() [3/3]

MultiResGrid ( size_t levels,
ValueType background,
double voxelSize = 1.0 )

Constructor of empty grids.

Parameters
levelsThe number of trees in this MultiResGrid
backgroundBackground value
voxelSizeSize of a (uniform voxel). Defaults to one.
Note
The multiple grids are all empty.

◆ numLevels()

size_t numLevels ( ) const
inline

Return the number of levels, i.e. trees, in this MultiResGrid.

Note
level 0 is the finest level and numLevels()-1 is the coarsest level.

◆ operator!=()

bool operator!= ( const MetaMap & other) const
inline

Return true if the given map is different from this map.

◆ operator==()

bool operator== ( const MetaMap & other) const

Return true if the given map is equivalent to this map.

◆ operator[]() [1/2]

Metadata::Ptr operator[] ( const Name & name)
inline

Return a pointer to the metadata with the given name. If no such field exists, return a null pointer.

◆ operator[]() [2/2]

Metadata::ConstPtr operator[] ( const Name & name) const
inline

◆ print()

void print ( std::ostream & os = std::cout,
int verboseLevel = 1 ) const

Output a human-readable description of this MultiResGrid.

◆ prolongateActiveVoxels()

void prolongateActiveVoxels ( size_t destlevel,
size_t grainSize = 1 )

(coarse->fine) Populates all the active voxel values in a fine (level) tree from the coarse (level+1) tree using linear interpolation This transforms multiple values of the tree in parallel

◆ prolongateVoxel()

TreeType::ValueType prolongateVoxel ( const Coord & coords,
const size_t level ) const

Return the value at coordinate location in level tree from the coarser tree at level+1 using trilinear interpolation.

Parameters
coordsinput coords relative to the fine tree at level
levelThe fine level to receive values from the coarser level-1
Note
Prolongation means to interpolation from coarse -> fine

◆ readMeta()

void readMeta ( std::istream & )

Unserialize metadata from the given stream.

◆ removeMeta()

void removeMeta ( const Name & )

Remove the given metadata field if it exists.

◆ restrictActiveVoxels()

void restrictActiveVoxels ( size_t destlevel,
size_t grainSize = 1 )

(fine->coarse) Populates all the active voxel values in the coarse (level) tree from the fine (level-1) tree using trilinear interpolation. For cell-centered data, this is equivalent to an average For vertex-centered data this is equivalent to transferring the data from the fine vertex directly above the coarse vertex. This transforms multiple values of the tree in parallel

◆ restrictVoxel()

TreeType::ValueType restrictVoxel ( Coord ijk,
const size_t level,
bool useInjection = false ) const

Populate a coordinate location in level (coarse) tree from the level-1 (fine) tree using trilinear interpolation input coords are relative to the mTree[level] (coarse)

Note
Restriction means remapping from fine -> coarse

◆ run()

template<typename TreeType>
static ValueType run ( const Coord & ijk,
const ConstAccessor & acc )
inlinestatic

Interpolate values from a coarse grid (acc) into the index space (ijk) of a fine grid.

Parameters
ijkCoordinate location on the fine tree
accValueAccessor to the coarse tree

◆ sampleValue() [1/12]

ValueType sampleValue ( const Coord & ijk,
double level ) const

Return the value at the specified integer coordinate position and level using interpolation of the specified order.

Parameters
ijkInteger coordinate position relative to the highest level (=0) grid
levelFloating-point level from which to interpolate the value.

Non-integer values of the level will use linear-interpolation between the neighboring integer levels.

◆ sampleValue() [2/12]

TreeType::ValueType sampleValue ( const Coord & ijk,
double level ) const

◆ sampleValue() [3/12]

TreeType::ValueType sampleValue ( const Coord & ijk,
double level ) const

◆ sampleValue() [4/12]

ValueType sampleValue ( const Coord & in_ijk,
size_t in_level,
size_t out_level ) const

Return the value at the specified coordinate position using interpolation of the specified order into the tree at the out_level.

First in_ijk is mapped from index space at in_level to out_level, and then a value is interpolated from the tree at out_level.

Parameters
in_ijkIndex coordinate position relative to tree at in_level
in_levelInteger level of the input coordinate in_ijk
out_levelInteger level of the interpolated value

◆ sampleValue() [5/12]

TreeType::ValueType sampleValue ( const Coord & in_ijk,
size_t in_level,
size_t out_level ) const

◆ sampleValue() [6/12]

TreeType::ValueType sampleValue ( const Coord & in_ijk,
size_t in_level,
size_t out_level ) const

◆ sampleValue() [7/12]

ValueType sampleValue ( const Vec3R & in_ijk,
size_t in_level,
size_t out_level ) const

◆ sampleValue() [8/12]

TreeType::ValueType sampleValue ( const Vec3R & in_xyz,
size_t in_level,
size_t out_level ) const

◆ sampleValue() [9/12]

TreeType::ValueType sampleValue ( const Vec3R & in_xyz,
size_t in_level,
size_t out_level ) const

◆ sampleValue() [10/12]

ValueType sampleValue ( const Vec3R & xyz,
double level ) const

Return the value at the specified floating-point coordinate position and level using interpolation of the specified order.

Parameters
xyzFloating-point coordinate position relative to the highest level grid
levelFloating-point level from which to interpolate the value.

Non-integer values of the level will use linear-interpolation between the neighboring integer levels.

◆ sampleValue() [11/12]

TreeType::ValueType sampleValue ( const Vec3R & xyz,
double level ) const

◆ sampleValue() [12/12]

TreeType::ValueType sampleValue ( const Vec3R & xyz,
double level ) const

◆ setGridClass()

void setGridClass ( GridClass cls)
inline

Specify the class of volumetric data (level set, fog volume, etc.) stored in this grid.

◆ setName()

void setName ( const std::string & name)
inline

Set the name of this MultiResGrid.

◆ str()

std::string str ( const std::string & indent = "") const

Return a string describing this metadata map. Prefix each line with indent.

◆ transform() [1/2]

math::Transform & transform ( )
inline

Return a reference to the finest grid's transform, which might be shared with other grids.

Note
Calling setTransform() on this grid invalidates all references previously returned by this method.
Warning
The transform is relative to the finest level (=0) grid!

◆ transform() [2/2]

const math::Transform & transform ( ) const
inline

◆ tree()

TreeType & tree ( size_t level)
inline

Return a reference to the tree at the specified level.

Parameters
levelThe level of the tree to be returned
Note
Level 0 is by definition the finest tree.

◆ treePtr()

TreeType::Ptr treePtr ( size_t level)
inline

Return a shared pointer to the tree at the specified level.

Parameters
levelThe level of the tree to be returned
Note
Level 0 is by definition the finest tree.

◆ writeMeta()

void writeMeta ( std::ostream & ) const

Serialize metadata to the given stream.

◆ xyz() [1/3]

Vec3R xyz ( const Coord & in_ijk,
size_t in_level,
size_t out_level )
static

Return the floating-point index coordinate at out_level given the index coordinate in_xyz at in_level.

◆ xyz() [2/3]

Vec3R xyz ( const Vec3R & in_xyz,
double in_level,
double out_level )
static

◆ xyz() [3/3]

Vec3R xyz ( const Vec3R & in_xyz,
size_t in_level,
size_t out_level )
static