HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::points Namespace Reference

Namespaces

 attribute_traits
 
 future
 A container for ABI=5 to help ease introduction of upcoming features.
 
 index
 
 internal
 
 point_attribute_internal
 
 point_move_internal
 
 point_rasterize_internal
 
 statistics_internal
 
 transfer_internal
 

Classes

class  AttributeArray
 Base class for storing attribute data. More...
 
struct  UnknownCodec
 
struct  NullCodec
 
struct  TruncateCodec
 
struct  PositionRange
 
struct  UnitRange
 
struct  FixedPointCodec
 
struct  UnitVecCodec
 
class  TypedAttributeArray
 Typed class for storing attribute data. More...
 
class  AttributeHandle
 
class  AttributeWriteHandle
 Write-able version of AttributeHandle. More...
 
struct  AccessorEval
 Accessor to call unsafe get and set methods based on templated Codec and Value. More...
 
struct  AccessorEval< UnknownCodec, ValueType >
 Partial specialization when Codec is not known at compile-time to use the supplied functor instead. More...
 
struct  StringCodec
 
class  StringMetaCache
 Class to compute a string->index map from all string:N metadata. More...
 
class  StringMetaInserter
 Class to help with insertion of keyed string values into metadata. More...
 
class  StringAttributeHandle
 
class  StringAttributeWriteHandle
 
struct  GroupCodec
 
class  GroupHandle
 
class  GroupWriteHandle
 
class  GroupFilter
 Index filtering on group membership. More...
 
class  AttributeSet
 Ordered collection of uniquely-named attribute arrays. More...
 
class  ValueMaskFilter
 Index filtering on active / inactive state of host voxel. More...
 
class  MultiGroupFilter
 
class  RandomLeafFilter
 
class  AttributeHashFilter
 
class  LevelSetFilter
 
class  BBoxFilter
 
class  BinaryFilter
 
struct  FilterTraits
 
struct  FilterTraits< BBoxFilter >
 
struct  FilterTraits< LevelSetFilter< T > >
 
struct  FilterTraits< BinaryFilter< T0, T1, And > >
 
class  NullFilter
 A no-op filter that can be used when iterating over all indices. More...
 
class  ValueVoxelCIter
 A forward iterator over array indices in a single voxel. More...
 
class  IndexIter
 A forward iterator over array indices with filtering IteratorT can be either IndexIter or ValueIndexIter (or some custom index iterator) FilterT should be a struct or class with a valid() method than can be evaluated per index Here's a simple filter example that only accepts even indices: More...
 
class  PointAttributeVector
 Point-partitioner compatible STL vector attribute wrapper for convenience. More...
 
class  PointDataLeafNode
 
struct  TreeConverter
 Similiar to ValueConverter, but allows for tree configuration conversion to a PointDataTree. ValueConverter<PointDataIndex32> cannot be used as a PointDataLeafNode is not a specialization of LeafNode. More...
 
struct  NullDeformer
 No-op deformer (adheres to the deformer interface documented in PointMove.h) More...
 
struct  DeformerTraits
 Deformer Traits for optionally configuring deformers to be applied in index-space. The default is world-space. More...
 
class  CachedDeformer
 A Deformer that caches the resulting positions from evaluating another Deformer. More...
 
class  RasterCamera
 A camera class that provides an interface for camera motion blur when rasterizing. More...
 
struct  FrustumRasterizerSettings
 A group of shared settings to be used in the Volume Rasterizer. More...
 
struct  FrustumRasterizerMask
 
class  FrustumRasterizer
 Efficient rasterization of one or more VDB Points grids into a linear or frustum volume with the option to bake in camera or geometry motion blur. More...
 
struct  RasterGroups
 A struct that stores all include/exclude attribute names as strings and is internally converted into the resolved MultiGroupFilter. More...
 
struct  TrilinearTraits
 
struct  TrilinearTraits< ValueT, false >
 
struct  SampleWithRounding
 
struct  DummySampleType
 
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  VolumeTransfer
 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< TreeT >
 VolumeTransfer specialization for a single target volume. More...
 

Typedefs

using StringAttributeArray = TypedAttributeArray< Index, StringCodec< false >>
 
using GroupAttributeArray = TypedAttributeArray< GroupType, GroupCodec >
 
using GroupType = uint8_t
 
using ActiveFilter = ValueMaskFilter< true >
 
using InactiveFilter = ValueMaskFilter< false >
 
using PointDataTree = tree::Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 >>>
 Point index tree configured to match the default VDB configurations. More...
 
using PointDataGrid = Grid< PointDataTree >
 Point data grid. More...
 

Enumerations

enum  RasterMode { RasterMode::ACCUMULATE = 0, RasterMode::MAXIMUM, RasterMode::AVERAGE }
 How to composite points into a volume. More...
 

Functions

template<typename IntegerT , typename FloatT >
IntegerT floatingPointToFixedPoint (const FloatT s)
 
template<typename FloatT , typename IntegerT >
FloatT fixedPointToFloatingPoint (const IntegerT s)
 
template<typename IntegerVectorT , typename FloatT >
IntegerVectorT floatingPointToFixedPoint (const math::Vec3< FloatT > &v)
 
template<typename FloatVectorT , typename IntegerT >
FloatVectorT fixedPointToFloatingPoint (const math::Vec3< IntegerT > &v)
 
bool isString (const AttributeArray &array)
 
bool isGroup (const AttributeArray &array)
 
template<typename PointDataGridT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr rasterizeSpheres (const PointDataGridT &points, const Real radius, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Narrow band sphere stamping with a uniform radius. More...
 
template<typename PointDataGridT , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr rasterizeSpheres (const PointDataGridT &points, const std::string &radius, const Real scale=1.0, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Narrow band sphere stamping with a varying radius. More...
 
template<typename PointDataGridT , typename AttributeTypes , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec rasterizeSpheres (const PointDataGridT &points, const Real radius, const std::vector< std::string > &attributes, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Narrow band sphere stamping with a uniform radius and closest point attribute transfer. More...
 
template<typename PointDataGridT , typename AttributeTypes , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec rasterizeSpheres (const PointDataGridT &points, const std::string &radius, const std::vector< std::string > &attributes, const Real scale=1.0, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Narrow band sphere stamping with a varying radius and closest point attribute transfer. More...
 
template<typename PointDataGridT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr rasterizeSmoothSpheres (const PointDataGridT &points, const Real radius, const Real searchRadius, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Smoothed point distribution based sphere stamping with a uniform radius. More...
 
template<typename PointDataGridT , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr rasterizeSmoothSpheres (const PointDataGridT &points, const std::string &radius, const Real radiusScale, const Real searchRadius, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Smoothed point distribution based sphere stamping with a varying radius. More...
 
template<typename PointDataGridT , typename AttributeTypes , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec rasterizeSmoothSpheres (const PointDataGridT &points, const Real radius, const Real searchRadius, const std::vector< std::string > &attributes, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Smoothed point distribution based sphere stamping with a uniform radius and closest point attribute transfer. More...
 
template<typename PointDataGridT , typename AttributeTypes , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec rasterizeSmoothSpheres (const PointDataGridT &points, const std::string &radius, const Real radiusScale, const Real searchRadius, const std::vector< std::string > &attributes, const Real halfband=LEVEL_SET_HALF_WIDTH, math::Transform::Ptr transform=nullptr, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Smoothed point distribution based sphere stamping with a varying radius and closest point attribute transfer. More...
 
template<bool Staggered, typename ValueT , typename FilterT , typename PointDataTreeT >
auto rasterizeTrilinear (const PointDataTreeT &points, const std::string &attribute, const FilterT &filter=NullFilter())
 Perform weighted trilinear rasterization of all points within a voxel. This method takes and returns a tree i.e. ignores grid transformations. More...
 
template<typename IterT >
Index64 iterCount (const IterT &iter)
 Count up the number of times the iterator can iterate. More...
 
template<typename PointDataGridT , typename VelGridT , typename AdvectFilterT = NullFilter, typename FilterT = NullFilter>
void advectPoints (PointDataGridT &points, const VelGridT &velocity, const Index integrationOrder, const double dt, const Index timeSteps, const AdvectFilterT &advectFilter=NullFilter(), const FilterT &filter=NullFilter(), const bool cached=true)
 Advect points in a PointDataGrid through a velocity grid. More...
 
template<typename PointDataTreeT >
void appendAttribute (PointDataTreeT &tree, const Name &name, const NamePair &type, const Index strideOrTotalSize=1, const bool constantStride=true, const Metadata *defaultValue=nullptr, const bool hidden=false, const bool transient=false)
 Appends a new attribute to the VDB tree (this method does not require a templated AttributeType) More...
 
template<typename ValueType , typename CodecType = NullCodec, typename PointDataTreeT >
void appendAttribute (PointDataTreeT &tree, const std::string &name, const ValueType &uniformValue=point_attribute_internal::Default< ValueType >::value(), const Index strideOrTotalSize=1, const bool constantStride=true, const TypedMetadata< ValueType > *defaultValue=nullptr, const bool hidden=false, const bool transient=false)
 Appends a new attribute to the VDB tree. More...
 
template<typename ValueType , typename PointDataTreeT >
void collapseAttribute (PointDataTreeT &tree, const Name &name, const ValueType &uniformValue=point_attribute_internal::Default< ValueType >::value())
 Collapse the attribute into a uniform value. More...
 
template<typename PointDataTreeT >
void dropAttributes (PointDataTreeT &tree, const std::vector< size_t > &indices)
 Drops attributes from the VDB tree. More...
 
template<typename PointDataTreeT >
void dropAttributes (PointDataTreeT &tree, const std::vector< Name > &names)
 Drops attributes from the VDB tree. More...
 
template<typename PointDataTreeT >
void dropAttribute (PointDataTreeT &tree, const size_t &index)
 Drop one attribute from the VDB tree (convenience method). More...
 
template<typename PointDataTreeT >
void dropAttribute (PointDataTreeT &tree, const Name &name)
 Drop one attribute from the VDB tree (convenience method). More...
 
template<typename PointDataTreeT >
void renameAttributes (PointDataTreeT &tree, const std::vector< Name > &oldNames, const std::vector< Name > &newNames)
 Rename attributes in a VDB tree. More...
 
template<typename PointDataTreeT >
void renameAttribute (PointDataTreeT &tree, const Name &oldName, const Name &newName)
 Rename an attribute in a VDB tree. More...
 
template<typename PointDataTreeT >
void compactAttributes (PointDataTreeT &tree)
 Compact attributes in a VDB tree (if possible). More...
 
template<typename CompressionT , typename PointDataGridT , typename PositionArrayT , typename PointIndexGridT >
PointDataGridT::Ptr createPointDataGrid (const PointIndexGridT &pointIndexGrid, const PositionArrayT &positions, const math::Transform &xform, const Metadata *positionDefaultValue=nullptr)
 Localises points with position into a PointDataGrid into two stages: allocation of the leaf attribute data and population of the positions. More...
 
template<typename CompressionT , typename PointDataGridT , typename ValueT >
PointDataGridT::Ptr createPointDataGrid (const std::vector< ValueT > &positions, const math::Transform &xform, const Metadata *positionDefaultValue=nullptr)
 Convenience method to create a PointDataGrid from a std::vector of point positions. More...
 
template<typename PointDataTreeT , typename PointIndexTreeT , typename PointArrayT >
void populateAttribute (PointDataTreeT &tree, const PointIndexTreeT &pointIndexTree, const openvdb::Name &attributeName, const PointArrayT &data, const Index stride=1, const bool insertMetadata=true)
 Stores point attribute data in an existing PointDataGrid attribute. More...
 
template<typename PositionAttribute , typename PointDataGridT , typename FilterT = NullFilter>
void convertPointDataGridPosition (PositionAttribute &positionAttribute, const PointDataGridT &grid, const std::vector< Index64 > &pointOffsets, const Index64 startOffset, const FilterT &filter=NullFilter(), const bool inCoreOnly=false)
 Convert the position attribute from a Point Data Grid. More...
 
template<typename TypedAttribute , typename PointDataTreeT , typename FilterT = NullFilter>
void convertPointDataGridAttribute (TypedAttribute &attribute, const PointDataTreeT &tree, const std::vector< Index64 > &pointOffsets, const Index64 startOffset, const unsigned arrayIndex, const Index stride=1, const FilterT &filter=NullFilter(), const bool inCoreOnly=false)
 Convert the attribute from a PointDataGrid. More...
 
template<typename Group , typename PointDataTreeT , typename FilterT = NullFilter>
void convertPointDataGridGroup (Group &group, const PointDataTreeT &tree, const std::vector< Index64 > &pointOffsets, const Index64 startOffset, const AttributeSet::Descriptor::GroupIndex index, const FilterT &filter=NullFilter(), const bool inCoreOnly=false)
 Convert the group from a PointDataGrid. More...
 
template<typename PositionWrapper , typename InterrupterT = openvdb::util::NullInterrupter, typename VecT = typename internal::ValueTypeTraits<PositionWrapper>::Type>
float computeVoxelSize (const PositionWrapper &positions, const uint32_t pointsPerVoxel, const math::Mat4d transform=math::Mat4d::identity(), const Index decimalPlaces=5, InterrupterT *const interrupter=nullptr)
 
template<typename PointDataTreeT , typename FilterT = NullFilter>
Index64 pointCount (const PointDataTreeT &tree, const FilterT &filter=NullFilter(), const bool inCoreOnly=false, const bool threaded=true)
 Count the total number of points in a PointDataTree. More...
 
template<typename PointDataTreeT , typename FilterT = NullFilter>
Index64 pointOffsets (std::vector< Index64 > &pointOffsets, const PointDataTreeT &tree, const FilterT &filter=NullFilter(), const bool inCoreOnly=false, const bool threaded=true)
 Populate an array of cumulative point offsets per leaf node. More...
 
template<typename PointDataGridT , typename GridT = typename PointDataGridT::template ValueConverter<Int32>::Type, typename FilterT = NullFilter>
GridT::Ptr pointCountGrid (const PointDataGridT &grid, const FilterT &filter=NullFilter())
 Generate a new grid with voxel values to store the number of points per voxel. More...
 
template<typename PointDataGridT , typename GridT = typename PointDataGridT::template ValueConverter<Int32>::Type, typename FilterT = NullFilter>
GridT::Ptr pointCountGrid (const PointDataGridT &grid, const openvdb::math::Transform &transform, const FilterT &filter=NullFilter())
 Generate a new grid that uses the supplied transform with voxel values to store the number of points per voxel. More...
 
template<typename PointDataTreeT >
AttributeSet::Descriptor::Ptr makeDescriptorUnique (PointDataTreeT &tree)
 Deep copy the descriptor across all leaf nodes. More...
 
template<typename PointDataTreeT >
void setStreamingMode (PointDataTreeT &tree, bool on=true)
 Toggle the streaming mode on all attributes in the tree to collapse the attributes after deconstructing a bound AttributeHandle to each array. This results in better memory efficiency when the data is streamed into another data structure (typically for rendering). More...
 
template<typename PointDataTreeT >
void prefetch (PointDataTreeT &tree, bool position=true, bool otherAttributes=true)
 Sequentially pre-fetch all delayed-load voxel and attribute data from disk in order to accelerate subsequent random access. More...
 
template<typename PointDataTreeT >
void deleteFromGroups (PointDataTreeT &pointTree, const std::vector< std::string > &groups, bool invert=false, bool drop=true)
 Delete points that are members of specific groups. More...
 
template<typename PointDataTreeT >
void deleteFromGroup (PointDataTreeT &pointTree, const std::string &group, bool invert=false, bool drop=true)
 Delete points that are members of a group. More...
 
void deleteMissingPointGroups (std::vector< std::string > &groups, const AttributeSet::Descriptor &descriptor)
 Delete any group that is not present in the Descriptor. More...
 
template<typename PointDataTreeT >
void appendGroup (PointDataTreeT &tree, const Name &group)
 Appends a new empty group to the VDB tree. More...
 
template<typename PointDataTreeT >
void appendGroups (PointDataTreeT &tree, const std::vector< Name > &groups)
 Appends new empty groups to the VDB tree. More...
 
template<typename PointDataTreeT >
void dropGroup (PointDataTreeT &tree, const Name &group, const bool compact=true)
 Drops an existing group from the VDB tree. More...
 
template<typename PointDataTreeT >
void dropGroups (PointDataTreeT &tree, const std::vector< Name > &groups)
 Drops existing groups from the VDB tree, the tree is compacted after dropping. More...
 
template<typename PointDataTreeT >
void dropGroups (PointDataTreeT &tree)
 Drops all existing groups from the VDB tree, the tree is compacted after dropping. More...
 
template<typename PointDataTreeT >
void compactGroups (PointDataTreeT &tree)
 Compacts existing groups of a VDB Tree to use less memory if possible. More...
 
template<typename PointDataTreeT , typename PointIndexTreeT >
void setGroup (PointDataTreeT &tree, const PointIndexTreeT &indexTree, const std::vector< short > &membership, const Name &group, const bool remove=false)
 Sets group membership from a PointIndexTree-ordered vector. More...
 
template<typename PointDataTreeT >
void setGroup (PointDataTreeT &tree, const Name &group, const bool member=true)
 Sets membership for the specified group for all points (on/off). More...
 
template<typename PointDataTreeT , typename FilterT >
void setGroupByFilter (PointDataTreeT &tree, const Name &group, const FilterT &filter)
 Sets group membership based on a provided filter. More...
 
template<typename PointDataTreeT >
void setGroupByRandomTarget (PointDataTreeT &tree, const Name &group, const Index64 targetPoints, const unsigned int seed=0)
 
template<typename PointDataTreeT >
void setGroupByRandomPercentage (PointDataTreeT &tree, const Name &group, const float percentage=10.0f, const unsigned int seed=0)
 
template<typename PointDataTreeT , typename MaskTreeT = typename PointDataTreeT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if
< std::is_base_of< TreeBase,
PointDataTreeT >::value
&&std::is_same< typename
MaskTreeT::ValueType, bool >
::value, typename
MaskTreeT::Ptr >::type 
convertPointsToMask (const PointDataTreeT &tree, const FilterT &filter=NullFilter(), bool threaded=true)
 Extract a Mask Tree from a Point Data Tree. More...
 
template<typename PointDataGridT , typename MaskGridT = typename PointDataGridT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if
< std::is_base_of< GridBase,
PointDataGridT >::value
&&std::is_same< typename
MaskGridT::ValueType, bool >
::value, typename
MaskGridT::Ptr >::type 
convertPointsToMask (const PointDataGridT &grid, const FilterT &filter=NullFilter(), bool threaded=true)
 Extract a Mask Grid from a Point Data Grid. More...
 
template<typename PointDataGridT , typename MaskT = typename PointDataGridT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if< std::is_same
< typename MaskT::ValueType,
bool >::value, typename
MaskT::Ptr >::type 
convertPointsToMask (const PointDataGridT &grid, const openvdb::math::Transform &transform, const FilterT &filter=NullFilter(), bool threaded=true)
 Extract a Mask Grid from a Point Data Grid using a new transform. More...
 
template<typename PointDataGridT , typename DeformerT , typename FilterT = NullFilter>
void movePoints (PointDataGridT &points, DeformerT &deformer, const FilterT &filter=NullFilter(), future::Advect *objectNotInUse=nullptr, bool threaded=true)
 Move points in a PointDataGrid using a custom deformer. More...
 
template<typename PointDataGridT , typename DeformerT , typename FilterT = NullFilter>
void movePoints (PointDataGridT &points, const math::Transform &transform, DeformerT &deformer, const FilterT &filter=NullFilter(), future::Advect *objectNotInUse=nullptr, bool threaded=true)
 Move points in a PointDataGrid using a custom deformer and a new transform. More...
 
template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void pointSample (PointDataGridT &points, const SourceGridT &sourceGrid, const Name &targetAttribute="", const FilterT &filter=NullFilter(), InterrupterT *const interrupter=nullptr)
 Performs closest point sampling from a VDB grid onto a VDB Points attribute. More...
 
template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void boxSample (PointDataGridT &points, const SourceGridT &sourceGrid, const Name &targetAttribute="", const FilterT &filter=NullFilter(), InterrupterT *const interrupter=nullptr)
 Performs tri-linear sampling from a VDB grid onto a VDB Points attribute. More...
 
template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void quadraticSample (PointDataGridT &points, const SourceGridT &sourceGrid, const Name &targetAttribute="", const FilterT &filter=NullFilter(), InterrupterT *const interrupter=nullptr)
 Performs tri-quadratic sampling from a VDB grid onto a VDB Points attribute. More...
 
template<typename PointDataGridT , typename SourceGridT , typename TargetValueT = DummySampleType, typename SamplerT = SampleWithRounding, typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void sampleGrid (size_t order, PointDataGridT &points, const SourceGridT &sourceGrid, const Name &targetAttribute, const FilterT &filter=NullFilter(), const SamplerT &sampler=SampleWithRounding(), InterrupterT *const interrupter=nullptr, const bool threaded=true)
 Performs sampling and conversion from a VDB grid onto a VDB Points attribute. More...
 
template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr uniformPointScatter (const GridT &grid, const Index64 count, const unsigned int seed=0, const float spread=1.0f, InterrupterT *interrupter=nullptr)
 The free functions depend on the following class: More...
 
template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr denseUniformPointScatter (const GridT &grid, const float pointsPerVoxel, const unsigned int seed=0, const float spread=1.0f, InterrupterT *interrupter=nullptr)
 Uniformly scatter a fixed number of points per active voxel. If the pointsPerVoxel value provided is a fractional value, each voxel calculates a delta value of how likely it is to contain an extra point. More...
 
template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr nonUniformPointScatter (const GridT &grid, const float pointsPerVoxel, const unsigned int seed=0, const float spread=1.0f, InterrupterT *interrupter=nullptr)
 Non uniformly scatter points per active voxel. The pointsPerVoxel value is used to weight each grids cell value to compute a fixed number of points for every active voxel. If the computed result is a fractional value, each voxel calculates a delta value of how likely it is to contain an extra point. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
std::pair< ValueT, ValueT > evalMinMax (const PointDataTreeT &points, const std::string &attribute, const FilterT &filter=NullFilter())
 Evaluates the minimum and maximum values of a point attribute. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
ConvertElementType< ValueT,
double >::Type 
evalAverage (const PointDataTreeT &points, const std::string &attribute, const FilterT &filter=NullFilter())
 Evaluates the average value of a point attribute. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
PromoteType< ValueT >::Highest accumulate (const PointDataTreeT &points, const std::string &attribute, const FilterT &filter=NullFilter())
 Evaluates the total value of a point attribute. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
bool evalMinMax (const PointDataTreeT &points, const std::string &attribute, ValueT &min, ValueT &max, const FilterT &filter=NullFilter(), typename PointDataTreeT::template ValueConverter< ValueT >::Type *minTree=nullptr, typename PointDataTreeT::template ValueConverter< ValueT >::Type *maxTree=nullptr)
 Evaluates the minimum and maximum values of a point attribute and returns whether the values are valid. Optionally constructs localised min and max value trees. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT , typename ResultTreeT = typename ConvertElementType<ValueT, double>::Type>
bool evalAverage (const PointDataTreeT &points, const std::string &attribute, typename ConvertElementType< ValueT, double >::Type &average, const FilterT &filter=NullFilter(), typename PointDataTreeT::template ValueConverter< ResultTreeT >::Type *averageTree=nullptr)
 Evaluates the average value of a point attribute and returns whether the value is valid. Optionally constructs localised average value trees. More...
 
template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT , typename ResultTreeT = typename PromoteType<ValueT>::Highest>
bool accumulate (const PointDataTreeT &points, const std::string &attribute, typename PromoteType< ValueT >::Highest &total, const FilterT &filter=NullFilter(), typename PointDataTreeT::template ValueConverter< ResultTreeT >::Type *totalTree=nullptr)
 Evaluates the total value of a point attribute and returns whether the value is valid. Optionally constructs localised total value trees. More...
 
template<typename PointDataTreeOrGridT , typename TransferT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void rasterize (const PointDataTreeOrGridT &points, TransferT &transfer, const FilterT &filter=NullFilter(), InterrupterT *interrupter=nullptr)
 Perform potentially complex rasterization from a user defined transfer scheme. More...
 
 mBuffers ()
 
 mMasks ()
 

Typedef Documentation

using openvdb::OPENVDB_VERSION_NAME::points::ActiveFilter = typedef ValueMaskFilter<true>

Definition at line 130 of file IndexFilter.h.

using openvdb::OPENVDB_VERSION_NAME::points::GroupAttributeArray = typedef TypedAttributeArray<GroupType, GroupCodec>

Definition at line 40 of file AttributeGroup.h.

using openvdb::OPENVDB_VERSION_NAME::points::GroupType = typedef uint8_t

Definition at line 31 of file AttributeSet.h.

using openvdb::OPENVDB_VERSION_NAME::points::InactiveFilter = typedef ValueMaskFilter<false>

Definition at line 131 of file IndexFilter.h.

using openvdb::OPENVDB_VERSION_NAME::points::PointDataGrid = typedef Grid<PointDataTree>

Point data grid.

Definition at line 194 of file PointDataGrid.h.

using openvdb::OPENVDB_VERSION_NAME::points::PointDataTree = typedef tree::Tree<tree::RootNode<tree::InternalNode<tree::InternalNode <PointDataLeafNode<PointDataIndex32, 3>, 4>, 5>>>

Point index tree configured to match the default VDB configurations.

Definition at line 190 of file PointDataGrid.h.

using openvdb::OPENVDB_VERSION_NAME::points::StringAttributeArray = typedef TypedAttributeArray<Index, StringCodec<false>>

Definition at line 49 of file AttributeArrayString.h.

Enumeration Type Documentation

enum openvdb::OPENVDB_VERSION_NAME::points::RasterMode
strong

How to composite points into a volume.

Enumerator
ACCUMULATE 
MAXIMUM 
AVERAGE 

Definition at line 29 of file PointRasterizeFrustum.h.

Function Documentation

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
PromoteType< ValueT >::Highest openvdb::OPENVDB_VERSION_NAME::points::accumulate ( const PointDataTreeT &  points,
const std::string attribute,
const FilterT &  filter = NullFilter() 
)

Evaluates the total value of a point attribute.

Performs parallel reduction by summing all values. The reduction arithmetic and return value precision evaluates to: PromoteType<ValueT>::Highest which, for POD and VDB math types, is ValueT at its highest bit precision. If the PointDataGrid is empty or the filter evalutes to empty, zeroVal<ValueT>() is returned.

Note
The PromoteType of the attribute must be copy constructible, support the same type + operator. This method will throw if ValueT does not match the given attribute. The function is deterministic.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
filtera filter to apply to points
Returns
the total value

Definition at line 729 of file PointStatistics.h.

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT , typename ResultTreeT = typename PromoteType<ValueT>::Highest>
bool openvdb::OPENVDB_VERSION_NAME::points::accumulate ( const PointDataTreeT &  points,
const std::string attribute,
typename PromoteType< ValueT >::Highest &  total,
const FilterT &  filter = NullFilter(),
typename PointDataTreeT::template ValueConverter< ResultTreeT >::Type *  totalTree = nullptr 
)

Evaluates the total value of a point attribute and returns whether the value is valid. Optionally constructs localised total value trees.

Performs parallel reduction by summing all values. The reduction arithmetic and return value precision evaluates to: PromoteType<ValueT>::Highest which, for POD and VDB math types, is ValueT at its highest bit precision. This method will return true total has been set, false otherwise (when no points existed or a filter evaluated to empty).

Note
The PromoteType of the attribute must be copy constructible, support the same type + operator. This method will throw if ValueT does not match the given attribute. The function is deterministic.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
totalthe computed total value
filtera filter to apply to points
totalTreeif provided, builds a tiled tree of localised total results.
Returns
true if total has been set, false otherwise. Can be false if no points were processed or if the tree was empty.
Example:
using namespace openvdb;
using namespace openvdb::points;
// accumulate and store per leaf values in a new tree
PromoteType<uint8_t>::Highest total; // evaluates to uint64_t
PointDataTree::ValueConverter<decltype(total)>::Type totalTree; // uint64_t tree of totals
bool success = accumulate<uint8_t>(tree, "attrib", total, NullFilter(), &totalTree);

Definition at line 608 of file PointStatistics.h.

template<typename PointDataGridT , typename VelGridT , typename AdvectFilterT = NullFilter, typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::advectPoints ( PointDataGridT &  points,
const VelGridT &  velocity,
const Index  integrationOrder,
const double  dt,
const Index  timeSteps,
const AdvectFilterT &  advectFilter = NullFilter(),
const FilterT &  filter = NullFilter(),
const bool  cached = true 
)
inline

Advect points in a PointDataGrid through a velocity grid.

Parameters
pointsthe PointDataGrid containing the points to be advected.
velocitya velocity grid to be sampled.
integrationOrderthe integration scheme to use (1 is forward euler, 4 is runge-kutta 4th)
dtdelta time.
timeStepsnumber of advection steps to perform.
advectFilteran optional advection index filter (moves a subset of the points)
filteran optional index filter (deletes a subset of the points)
cachedcaches velocity interpolation for faster performance, disable to use less memory (default is on).

Definition at line 218 of file PointAdvect.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::appendAttribute ( PointDataTreeT &  tree,
const Name name,
const NamePair &  type,
const Index  strideOrTotalSize = 1,
const bool  constantStride = true,
const Metadata *  defaultValue = nullptr,
const bool  hidden = false,
const bool  transient = false 
)
inline

Appends a new attribute to the VDB tree (this method does not require a templated AttributeType)

Parameters
treethe PointDataTree to be appended to.
namename for the new attribute.
typethe type of the attibute.
strideOrTotalSizethe stride of the attribute
constantStrideif false, stride is interpreted as total size of the array
defaultValuemetadata default attribute value
hiddenmark attribute as hidden
transientmark attribute as transient

Definition at line 245 of file PointAttribute.h.

template<typename ValueType , typename CodecType = NullCodec, typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::appendAttribute ( PointDataTreeT &  tree,
const std::string name,
const ValueType &  uniformValue = point_attribute_internal::Default<ValueType>::value(),
const Index  strideOrTotalSize = 1,
const bool  constantStride = true,
const TypedMetadata< ValueType > *  defaultValue = nullptr,
const bool  hidden = false,
const bool  transient = false 
)
inline

Appends a new attribute to the VDB tree.

Parameters
treethe PointDataTree to be appended to.
namename for the new attribute
uniformValuethe initial value of the attribute
strideOrTotalSizethe stride of the attribute
constantStrideif false, stride is interpreted as total size of the array
defaultValuemetadata default attribute value
hiddenmark attribute as hidden
transientmark attribute as transient

Definition at line 308 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::appendGroup ( PointDataTreeT &  tree,
const Name group 
)
inline

Appends a new empty group to the VDB tree.

Parameters
treethe PointDataTree to be appended to.
groupname of the new group.

Definition at line 319 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::appendGroups ( PointDataTreeT &  tree,
const std::vector< Name > &  groups 
)
inline

Appends new empty groups to the VDB tree.

Parameters
treethe PointDataTree to be appended to.
groupsnames of the new groups.

Definition at line 390 of file PointGroup.h.

template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::points::boxSample ( PointDataGridT &  points,
const SourceGridT &  sourceGrid,
const Name targetAttribute = "",
const FilterT &  filter = NullFilter(),
InterrupterT *const  interrupter = nullptr 
)
inline

Performs tri-linear sampling from a VDB grid onto a VDB Points attribute.

Parameters
pointsthe PointDataGrid whose points will be sampled on to
sourceGridVDB grid which will be sampled
targetAttributea target attribute on the points which will hold samples. This attribute will be created with the source grid type if it does not exist, and with the source grid name if the name is empty
filteran optional index filter
interrupteran optional interrupter
Note
The target attribute may exist provided it can be cast to the SourceGridT ValueType

Definition at line 538 of file PointSample.h.

template<typename ValueType , typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::collapseAttribute ( PointDataTreeT &  tree,
const Name name,
const ValueType &  uniformValue = point_attribute_internal::Default<ValueType>::value() 
)
inline

Collapse the attribute into a uniform value.

Parameters
treethe PointDataTree in which to collapse the attribute.
namename for the attribute.
uniformValuevalue of the attribute

Definition at line 344 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::compactAttributes ( PointDataTreeT &  tree)
inline

Compact attributes in a VDB tree (if possible).

Parameters
treethe PointDataTree.

Definition at line 527 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::compactGroups ( PointDataTreeT &  tree)
inline

Compacts existing groups of a VDB Tree to use less memory if possible.

Parameters
treethe PointDataTree to be compacted.

Definition at line 487 of file PointGroup.h.

template<typename PositionWrapper , typename InterrupterT = openvdb::util::NullInterrupter, typename VecT = typename internal::ValueTypeTraits<PositionWrapper>::Type>
float openvdb::OPENVDB_VERSION_NAME::points::computeVoxelSize ( const PositionWrapper &  positions,
const uint32_t  pointsPerVoxel,
const math::Mat4d  transform = math::Mat4d::identity(),
const Index  decimalPlaces = 5,
InterrupterT *const  interrupter = nullptr 
)
inline

@ brief Given a container of world space positions and a target points per voxel, compute a uniform voxel size that would best represent the storage of the points in a grid. This voxel size is typically used for conversion of the points into a PointDataGrid.

Parameters
positionsarray of world space positions
pointsPerVoxelthe target number of points per voxel, must be positive and non-zero
transformvoxel size will be computed using this optional transform if provided
decimalPlacesfor readability, truncate voxel size to this number of decimals
interrupteran optional interrupter
Note
VecT will be PositionWrapper::value_type or Vec3R (if there is no value_type defined)
if none or one point provided in positions, the default voxel size of 0.1 will be returned

Definition at line 886 of file PointConversion.h.

template<typename TypedAttribute , typename PointDataTreeT , typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::convertPointDataGridAttribute ( TypedAttribute attribute,
const PointDataTreeT &  tree,
const std::vector< Index64 > &  pointOffsets,
const Index64  startOffset,
const unsigned  arrayIndex,
const Index  stride = 1,
const FilterT &  filter = NullFilter(),
const bool  inCoreOnly = false 
)
inline

Convert the attribute from a PointDataGrid.

Parameters
attributethe attribute to be populated.
treethe PointDataTree to be converted.
pointOffsetsa vector of cumulative point offsets for each leaf.
startOffseta value to shift all the point offsets by
arrayIndexthe index in the Descriptor of the array to be converted.
stridethe stride of the attribute
filteran index filter
inCoreOnlytrue if out-of-core leaf nodes are to be ignored

Definition at line 826 of file PointConversion.h.

template<typename Group , typename PointDataTreeT , typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::convertPointDataGridGroup ( Group &  group,
const PointDataTreeT &  tree,
const std::vector< Index64 > &  pointOffsets,
const Index64  startOffset,
const AttributeSet::Descriptor::GroupIndex  index,
const FilterT &  filter = NullFilter(),
const bool  inCoreOnly = false 
)
inline

Convert the group from a PointDataGrid.

Parameters
groupthe group to be populated.
treethe PointDataTree to be converted.
pointOffsetsa vector of cumulative point offsets for each leaf
startOffseta value to shift all the point offsets by
indexthe group index to be converted.
filteran index filter
inCoreOnlytrue if out-of-core leaf nodes are to be ignored

Definition at line 858 of file PointConversion.h.

template<typename PositionAttribute , typename PointDataGridT , typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::convertPointDataGridPosition ( PositionAttribute &  positionAttribute,
const PointDataGridT &  grid,
const std::vector< Index64 > &  pointOffsets,
const Index64  startOffset,
const FilterT &  filter = NullFilter(),
const bool  inCoreOnly = false 
)
inline

Convert the position attribute from a Point Data Grid.

Parameters
positionAttributethe position attribute to be populated.
gridthe PointDataGrid to be converted.
pointOffsetsa vector of cumulative point offsets for each leaf
startOffseta value to shift all the point offsets by
filteran index filter
inCoreOnlytrue if out-of-core leaf nodes are to be ignored

Definition at line 792 of file PointConversion.h.

template<typename PointDataTreeT , typename MaskTreeT = typename PointDataTreeT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if< std::is_base_of< TreeBase, PointDataTreeT >::value &&std::is_same< typename MaskTreeT::ValueType, bool >::value, typename MaskTreeT::Ptr >::type openvdb::OPENVDB_VERSION_NAME::points::convertPointsToMask ( const PointDataTreeT &  tree,
const FilterT &  filter = NullFilter(),
bool  threaded = true 
)
inline

Extract a Mask Tree from a Point Data Tree.

Parameters
treethe PointDataTree to extract the mask from.
filteran optional index filter
threadedenable or disable threading (threading is enabled by default)

Definition at line 379 of file PointMask.h.

template<typename PointDataGridT , typename MaskGridT = typename PointDataGridT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if< std::is_base_of< GridBase, PointDataGridT >::value &&std::is_same< typename MaskGridT::ValueType, bool >::value, typename MaskGridT::Ptr >::type openvdb::OPENVDB_VERSION_NAME::points::convertPointsToMask ( const PointDataGridT &  grid,
const FilterT &  filter = NullFilter(),
bool  threaded = true 
)
inline

Extract a Mask Grid from a Point Data Grid.

Parameters
gridthe PointDataGrid to extract the mask from.
filteran optional index filter
threadedenable or disable threading (threading is enabled by default)
Note
this method is only available for Bool Grids and Mask Grids

Definition at line 391 of file PointMask.h.

template<typename PointDataGridT , typename MaskT = typename PointDataGridT::template ValueConverter<bool>::Type, typename FilterT = NullFilter>
std::enable_if< std::is_same< typename MaskT::ValueType, bool >::value, typename MaskT::Ptr >::type openvdb::OPENVDB_VERSION_NAME::points::convertPointsToMask ( const PointDataGridT &  grid,
const openvdb::math::Transform &  transform,
const FilterT &  filter = NullFilter(),
bool  threaded = true 
)
inline

Extract a Mask Grid from a Point Data Grid using a new transform.

Parameters
gridthe PointDataGrid to extract the mask from.
transformtarget transform for the mask.
filteran optional index filter
threadedenable or disable threading (threading is enabled by default)
Note
this method is only available for Bool Grids and Mask Grids

Definition at line 412 of file PointMask.h.

template<typename CompressionT , typename PointDataGridT , typename PositionArrayT , typename PointIndexGridT >
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::createPointDataGrid ( const PointIndexGridT &  pointIndexGrid,
const PositionArrayT &  positions,
const math::Transform xform,
const Metadata *  positionDefaultValue = nullptr 
)
inline

Localises points with position into a PointDataGrid into two stages: allocation of the leaf attribute data and population of the positions.

Parameters
pointIndexGrida PointIndexGrid into the points.
positionslist of world space point positions.
xformworld to index space transform.
positionDefaultValuemetadata default position value
Note
The position data must be supplied in a Point-Partitioner compatible data structure. A convenience PointAttributeVector class is offered.
The position data is populated separately to perform world space to voxel space conversion and apply quantisation.
A PointIndexGrid to the points must be supplied to perform this operation. Typically this is built implicitly by the PointDataGrid constructor.

Definition at line 632 of file PointConversion.h.

template<typename CompressionT , typename PointDataGridT , typename ValueT >
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::createPointDataGrid ( const std::vector< ValueT > &  positions,
const math::Transform xform,
const Metadata *  positionDefaultValue = nullptr 
)
inline

Convenience method to create a PointDataGrid from a std::vector of point positions.

Parameters
positionslist of world space point positions.
xformworld to index space transform.
positionDefaultValuemetadata default position value
Note
This method implicitly wraps the std::vector for a Point-Partitioner compatible data structure and creates the required PointIndexGrid to the points.

Definition at line 737 of file PointConversion.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::deleteFromGroup ( PointDataTreeT &  pointTree,
const std::string group,
bool  invert = false,
bool  drop = true 
)
inline

Delete points that are members of a group.

This method will delete points which are members of the supplied group and will optionally drop the group from the tree. An invert flag can be used to delete points that belong to none of the groups.

Parameters
pointTreethe point tree with the group to delete
groupthe name of the group to delete
invertif enabled, points not belonging to any of the groups will be deleted
dropif enabled and invert is disabled, the group will be dropped from the tree
Note
If the invert flag is true, the group will not be dropped after deleting points regardless of the value of the drop parameter.

Definition at line 251 of file PointDelete.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::deleteFromGroups ( PointDataTreeT &  pointTree,
const std::vector< std::string > &  groups,
bool  invert = false,
bool  drop = true 
)
inline

Delete points that are members of specific groups.

This method will delete points which are members of any of the supplied groups and will optionally drop the groups from the tree. An invert flag can be used to delete points that belong to none of the groups.

Parameters
pointTreethe point tree
groupsthe groups from which to delete points
invertif enabled, points not belonging to any of the groups will be deleted
dropif enabled and invert is disabled, the groups will be dropped from the tree
Note
If the invert flag is true, none of the groups will be dropped after deleting points regardless of the value of the drop parameter.

Definition at line 196 of file PointDelete.h.

void openvdb::OPENVDB_VERSION_NAME::points::deleteMissingPointGroups ( std::vector< std::string > &  groups,
const AttributeSet::Descriptor &  descriptor 
)
inline

Delete any group that is not present in the Descriptor.

Parameters
groupsthe vector of group names.
descriptorthe descriptor that holds the group map.

Definition at line 305 of file PointGroup.h.

template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::denseUniformPointScatter ( const GridT &  grid,
const float  pointsPerVoxel,
const unsigned int  seed = 0,
const float  spread = 1.0f,
InterrupterT *  interrupter = nullptr 
)
inline

Uniformly scatter a fixed number of points per active voxel. If the pointsPerVoxel value provided is a fractional value, each voxel calculates a delta value of how likely it is to contain an extra point.

Parameters
gridA source grid. The resulting PointDataGrid will copy this grids transform and scatter in its active voxelized topology.
pointsPerVoxelThe number of points to scatter per voxel
seedA seed for the RandGenT
spreadThe spread of points as a scale from each voxels center. A value of 1.0f indicates points can be placed anywhere within the voxel, where as a value of 0.0f will force all points to be created exactly at the centers of each voxel.
interrupterAn optional interrupter
Note
returns the scattered PointDataGrid

Definition at line 396 of file PointScatter.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropAttribute ( PointDataTreeT &  tree,
const size_t &  index 
)
inline

Drop one attribute from the VDB tree (convenience method).

Parameters
treethe PointDataTree to be dropped from.
indexindex of the attribute to drop.

Definition at line 447 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropAttribute ( PointDataTreeT &  tree,
const Name name 
)
inline

Drop one attribute from the VDB tree (convenience method).

Parameters
treethe PointDataTree to be dropped from.
namename of the attribute to drop.

Definition at line 456 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropAttributes ( PointDataTreeT &  tree,
const std::vector< size_t > &  indices 
)
inline

Drops attributes from the VDB tree.

Parameters
treethe PointDataTree to be dropped from.
indicesindices of the attributes to drop.

Definition at line 380 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropAttributes ( PointDataTreeT &  tree,
const std::vector< Name > &  names 
)
inline

Drops attributes from the VDB tree.

Parameters
treethe PointDataTree to be dropped from.
namesnames of the attributes to drop.

Definition at line 415 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropGroup ( PointDataTreeT &  tree,
const Name group,
const bool  compact = true 
)
inline

Drops an existing group from the VDB tree.

Parameters
treethe PointDataTree to be dropped from.
groupname of the group.
compactcompact attributes if possible to reduce memory - if dropping more than one group, compacting once at the end will be faster

Definition at line 406 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropGroups ( PointDataTreeT &  tree,
const std::vector< Name > &  groups 
)
inline

Drops existing groups from the VDB tree, the tree is compacted after dropping.

Parameters
treethe PointDataTree to be dropped from.
groupsnames of the groups.

Definition at line 439 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::dropGroups ( PointDataTreeT &  tree)
inline

Drops all existing groups from the VDB tree, the tree is compacted after dropping.

Parameters
treethe PointDataTree to be dropped from.

Definition at line 456 of file PointGroup.h.

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
ConvertElementType< ValueT, double >::Type openvdb::OPENVDB_VERSION_NAME::points::evalAverage ( const PointDataTreeT &  points,
const std::string attribute,
const FilterT &  filter = NullFilter() 
)

Evaluates the average value of a point attribute.

Performs parallel reduction by cumulative moving average. The reduction arithmetic and return value precision evaluates to: ConvertElementType<ValueT, double>::Type which, for POD and VDB math types, is ValueT at double precision. If the PointDataGrid is empty or the filter evalutes to empty, zeroVal<ValueT>() is returned.

Note
The ConvertElementType of the attribute must be copy constructible, support the same type + - * operators and * / operators from a double. This method will throw if ValueT does not match the given attribute. The function is deterministic.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
filtera filter to apply to points
Returns
the average value

Definition at line 714 of file PointStatistics.h.

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT , typename ResultTreeT = typename ConvertElementType<ValueT, double>::Type>
bool openvdb::OPENVDB_VERSION_NAME::points::evalAverage ( const PointDataTreeT &  points,
const std::string attribute,
typename ConvertElementType< ValueT, double >::Type &  average,
const FilterT &  filter = NullFilter(),
typename PointDataTreeT::template ValueConverter< ResultTreeT >::Type *  averageTree = nullptr 
)

Evaluates the average value of a point attribute and returns whether the value is valid. Optionally constructs localised average value trees.

Performs parallel reduction by cumulative moving average. The reduction arithmetic and return value precision evaluates to: ConvertElementType<ValueT, double>::Type which, for POD and VDB math types, is ValueT at double precision. This method will return true average has been set, false otherwise (when no points existed or a filter evaluated to empty).

Note
The ConvertElementType of the attribute must be copy constructible, support the same type + - * operators and * / operators from a double. This method will throw if ValueT does not match the given attribute. The function is deterministic.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
averagethe computed averaged value at double precision
filtera filter to apply to points
averageTreeif provided, builds a tiled tree of localised avg results.
Returns
true if average has been set, false otherwise. Can be false if no points were processed or if the tree was empty.
Example:
using namespace openvdb;
using namespace openvdb::points
// average and store per leaf values in a new tree
ConvertElementType<uint8_t, double>::Type avg; // evaluates to double
PointDataTree::ValueConverter<decltype(avg)>::Type avgTree; // double tree of averages
bool success = evalAverage<uint8_t>(tree, "attrib", avg, NullFilter(), &avgTree);

Definition at line 497 of file PointStatistics.h.

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
std::pair< ValueT, ValueT > openvdb::OPENVDB_VERSION_NAME::points::evalMinMax ( const PointDataTreeT &  points,
const std::string attribute,
const FilterT &  filter = NullFilter() 
)

Evaluates the minimum and maximum values of a point attribute.

Performs parallel reduction by comparing values using their less than and greater than operators. If the PointDataGrid is empty or the filter evalutes to empty, zeroVal<ValueT>() is returned for both values.

Note
The ValueT of the attribute must be copy constructible. This method will throw if the templated ValueT does not match the given attribute. For vectors and matrices, this results in per component comparisons. See evalExtents for magnitudes or more custom control.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
filtera filter to apply to points
Returns
min,max value pair

Definition at line 697 of file PointStatistics.h.

template<typename ValueT , typename CodecT = UnknownCodec, typename FilterT = NullFilter, typename PointDataTreeT >
bool openvdb::OPENVDB_VERSION_NAME::points::evalMinMax ( const PointDataTreeT &  points,
const std::string attribute,
ValueT &  min,
ValueT &  max,
const FilterT &  filter = NullFilter(),
typename PointDataTreeT::template ValueConverter< ValueT >::Type *  minTree = nullptr,
typename PointDataTreeT::template ValueConverter< ValueT >::Type *  maxTree = nullptr 
)

Evaluates the minimum and maximum values of a point attribute and returns whether the values are valid. Optionally constructs localised min and max value trees.

Performs parallel reduction by comparing values using their less than and greater than operators. This method will return true if min and max have been set, false otherwise (when no points existed or a filter evaluated to empty).

Note
The ValueT of the attribute must also be copy constructible. This method will throw if the templated ValueT does not match the given attribute. For vectors and matrices, this results in per component comparisons. See evalExtents for magnitudes or more custom control.
Warning
if "P" is provided, the result is undefined.
Parameters
pointsthe point tree
attributethe attribute to reduce
minthe computed min value
maxthe computed max value
filtera filter to apply to points
minTreeif provided, builds a tiled tree of localised min results
maxTreeif provided, builds a tiled tree of localised max results
Returns
true if min and max have been set, false otherwise. Can be false if no points were processed or if the tree was empty.

Definition at line 480 of file PointStatistics.h.

template<typename FloatT , typename IntegerT >
FloatT openvdb::OPENVDB_VERSION_NAME::points::fixedPointToFloatingPoint ( const IntegerT  s)
inline

Definition at line 61 of file AttributeArray.h.

template<typename FloatVectorT , typename IntegerT >
FloatVectorT openvdb::OPENVDB_VERSION_NAME::points::fixedPointToFloatingPoint ( const math::Vec3< IntegerT > &  v)
inline

Definition at line 79 of file AttributeArray.h.

template<typename IntegerT , typename FloatT >
IntegerT openvdb::OPENVDB_VERSION_NAME::points::floatingPointToFixedPoint ( const FloatT  s)
inline

Definition at line 50 of file AttributeArray.h.

template<typename IntegerVectorT , typename FloatT >
IntegerVectorT openvdb::OPENVDB_VERSION_NAME::points::floatingPointToFixedPoint ( const math::Vec3< FloatT > &  v)
inline

Definition at line 69 of file AttributeArray.h.

bool openvdb::OPENVDB_VERSION_NAME::points::isGroup ( const AttributeArray &  array)
inline

Definition at line 63 of file AttributeGroup.h.

bool openvdb::OPENVDB_VERSION_NAME::points::isString ( const AttributeArray &  array)
inline

Definition at line 144 of file AttributeArrayString.h.

template<typename IterT >
Index64 openvdb::OPENVDB_VERSION_NAME::points::iterCount ( const IterT &  iter)
inline

Count up the number of times the iterator can iterate.

Parameters
iterthe iterator.
Note
counting by iteration only performed where a dynamic filter is in use,

Definition at line 314 of file IndexIterator.h.

template<typename PointDataTreeT >
AttributeSet::Descriptor::Ptr openvdb::OPENVDB_VERSION_NAME::points::makeDescriptorUnique ( PointDataTreeT &  tree)
inline

Deep copy the descriptor across all leaf nodes.

Parameters
treethe PointDataTree.
Returns
the new descriptor.
Note
This method will fail if the Descriptors in the tree are not all identical.

Definition at line 1589 of file PointDataGrid.h.

openvdb::OPENVDB_VERSION_NAME::points::mBuffers ( )
openvdb::OPENVDB_VERSION_NAME::points::mMasks ( )

Definition at line 363 of file PointTransfer.h.

template<typename PointDataGridT , typename DeformerT , typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::movePoints ( PointDataGridT &  points,
DeformerT &  deformer,
const FilterT &  filter = NullFilter(),
future::Advect *  objectNotInUse = nullptr,
bool  threaded = true 
)
inline

Move points in a PointDataGrid using a custom deformer.

Parameters
pointsthe PointDataGrid containing the points to be moved.
deformera custom deformer that defines how to move the points.
filteran optional index filter
objectNotInUsefor future use, this object is currently ignored
threadedenable or disable threading (threading is enabled by default)

Definition at line 692 of file PointMove.h.

template<typename PointDataGridT , typename DeformerT , typename FilterT = NullFilter>
void openvdb::OPENVDB_VERSION_NAME::points::movePoints ( PointDataGridT &  points,
const math::Transform transform,
DeformerT &  deformer,
const FilterT &  filter = NullFilter(),
future::Advect *  objectNotInUse = nullptr,
bool  threaded = true 
)
inline

Move points in a PointDataGrid using a custom deformer and a new transform.

Parameters
pointsthe PointDataGrid containing the points to be moved.
transformtarget transform to use for the resulting points.
deformera custom deformer that defines how to move the points.
filteran optional index filter
objectNotInUsefor future use, this object is currently ignored
threadedenable or disable threading (threading is enabled by default)

Definition at line 529 of file PointMove.h.

template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::nonUniformPointScatter ( const GridT &  grid,
const float  pointsPerVoxel,
const unsigned int  seed = 0,
const float  spread = 1.0f,
InterrupterT *  interrupter = nullptr 
)
inline

Non uniformly scatter points per active voxel. The pointsPerVoxel value is used to weight each grids cell value to compute a fixed number of points for every active voxel. If the computed result is a fractional value, each voxel calculates a delta value of how likely it is to contain an extra point.

Parameters
gridA source grid. The resulting PointDataGrid will copy this grids transform, voxelized topology and use its values to compute a target points per voxel. The grids ValueType must be convertible to a scalar value. Only active and larger than zero values will contain points.
pointsPerVoxelThe number of points to scatter per voxel
seedA seed for the RandGenT
spreadThe spread of points as a scale from each voxels center. A value of 1.0f indicates points can be placed anywhere within the voxel, where as a value of 0.0f will force all points to be created exactly at the centers of each voxel.
interrupterAn optional interrupter
Note
returns the scattered PointDataGrid

Definition at line 478 of file PointScatter.h.

template<typename PointDataTreeT , typename FilterT = NullFilter>
Index64 openvdb::OPENVDB_VERSION_NAME::points::pointCount ( const PointDataTreeT &  tree,
const FilterT &  filter = NullFilter(),
const bool  inCoreOnly = false,
const bool  threaded = true 
)
inline

Count the total number of points in a PointDataTree.

Parameters
treethe PointDataTree in which to count the points
filteran optional index filter
inCoreOnlyif true, points in out-of-core leaf nodes are not counted
threadedenable or disable threading (threading is enabled by default)

Definition at line 88 of file PointCount.h.

template<typename PointDataGridT , typename GridT = typename PointDataGridT::template ValueConverter<Int32>::Type, typename FilterT = NullFilter>
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::pointCountGrid ( const PointDataGridT &  grid,
const FilterT &  filter = NullFilter() 
)
inline

Generate a new grid with voxel values to store the number of points per voxel.

Parameters
gridthe PointDataGrid to use to compute the count grid
filteran optional index filter
Note
The return type of the grid must be an integer or floating-point scalar grid.

Definition at line 165 of file PointCount.h.

template<typename PointDataGridT , typename GridT = typename PointDataGridT::template ValueConverter<Int32>::Type, typename FilterT = NullFilter>
GridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::pointCountGrid ( const PointDataGridT &  grid,
const openvdb::math::Transform &  transform,
const FilterT &  filter = NullFilter() 
)
inline

Generate a new grid that uses the supplied transform with voxel values to store the number of points per voxel.

Parameters
gridthe PointDataGrid to use to compute the count grid
transformthe transform to use to compute the count grid
filteran optional index filter
Note
The return type of the grid must be an integer or floating-point scalar grid.

Definition at line 187 of file PointCount.h.

template<typename PointDataTreeT , typename FilterT = NullFilter>
Index64 openvdb::OPENVDB_VERSION_NAME::points::pointOffsets ( std::vector< Index64 > &  pointOffsets,
const PointDataTreeT &  tree,
const FilterT &  filter = NullFilter(),
const bool  inCoreOnly = false,
const bool  threaded = true 
)
inline

Populate an array of cumulative point offsets per leaf node.

Parameters
pointOffsetsarray of offsets to be populated
treethe PointDataTree from which to populate the offsets
filteran optional index filter
inCoreOnlyif true, points in out-of-core leaf nodes are ignored
threadedenable or disable threading (threading is enabled by default)
Returns
The final cumulative point offset.

Definition at line 122 of file PointCount.h.

template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::points::pointSample ( PointDataGridT &  points,
const SourceGridT &  sourceGrid,
const Name targetAttribute = "",
const FilterT &  filter = NullFilter(),
InterrupterT *const  interrupter = nullptr 
)
inline

Performs closest point sampling from a VDB grid onto a VDB Points attribute.

Parameters
pointsthe PointDataGrid whose points will be sampled on to
sourceGridVDB grid which will be sampled
targetAttributea target attribute on the points which will hold samples. This attribute will be created with the source grid type if it does not exist, and with the source grid name if the name is empty
filteran optional index filter
interrupteran optional interrupter
Note
The target attribute may exist provided it can be cast to the SourceGridT ValueType

Definition at line 527 of file PointSample.h.

template<typename PointDataTreeT , typename PointIndexTreeT , typename PointArrayT >
void openvdb::OPENVDB_VERSION_NAME::points::populateAttribute ( PointDataTreeT &  tree,
const PointIndexTreeT &  pointIndexTree,
const openvdb::Name &  attributeName,
const PointArrayT &  data,
const Index  stride = 1,
const bool  insertMetadata = true 
)
inline

Stores point attribute data in an existing PointDataGrid attribute.

Parameters
treethe PointDataGrid to be populated.
pointIndexTreea PointIndexTree into the points.
attributeNamethe name of the VDB Points attribute to be populated.
dataa wrapper to the attribute data.
stridethe stride of the attribute
insertMetadatatrue if strings are to be automatically inserted as metadata.
Note
A PointIndexGrid to the points must be supplied to perform this operation. This is required to ensure the same point index ordering.

Definition at line 755 of file PointConversion.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::prefetch ( PointDataTreeT &  tree,
bool  position = true,
bool  otherAttributes = true 
)
inline

Sequentially pre-fetch all delayed-load voxel and attribute data from disk in order to accelerate subsequent random access.

Parameters
treethe PointDataTree.
positionif enabled, prefetch the position attribute (default is on)
otherAttributesif enabled, prefetch all other attributes (default is on)

Definition at line 1619 of file PointDataGrid.h.

template<typename PointDataGridT , typename SourceGridT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::points::quadraticSample ( PointDataGridT &  points,
const SourceGridT &  sourceGrid,
const Name targetAttribute = "",
const FilterT &  filter = NullFilter(),
InterrupterT *const  interrupter = nullptr 
)
inline

Performs tri-quadratic sampling from a VDB grid onto a VDB Points attribute.

Parameters
pointsthe PointDataGrid whose points will be sampled on to
sourceGridVDB grid which will be sampled
targetAttributea target attribute on the points which will hold samples. This attribute will be created with the source grid type if it does not exist, and with the source grid name if the name is empty
filteran optional index filter
interrupteran optional interrupter
Note
The target attribute may exist provided it can be cast to the SourceGridT ValueType

Definition at line 549 of file PointSample.h.

template<typename PointDataTreeOrGridT , typename TransferT , typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::points::rasterize ( const PointDataTreeOrGridT &  points,
TransferT &  transfer,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)
inline

Perform potentially complex rasterization from a user defined transfer scheme.

A transfer scheme must be configured to call the provided
rasterize methods. See below for an example or PointRasterizeSDF.h/PointRasterizeTrilinear.h for implementations.
struct Transfer
{
/// @return Returns the tree topology to loop over. This can be different
/// from the destination tree i.e. This can act as a mask.
inline auto& topology();
/// @brief The maximum lookup range of this transfer scheme in index
/// space of the source points.
/// @details The return value represent how far away from the destination
/// leaf node points should be accessed.
/// @param origin The leaf origin of the topology being accessed
/// @param idx The leaf index of the topology being accessed
inline Int32 range(const Coord& origin, size_t idx) const;
/// @brief The initialize function, called on each leaf which has valid
/// topology to write to.
/// @param origin The leaf origin of the topology being accessed
/// @param idx The leaf index of the topology being accessed
/// @param bounds The active voxel bounds of the leaf
inline void initialize(const Coord& origin, size_t idx, const CoordBBox& bounds);
/// @brief Run each time a point leaf is accessed. Typically this is
/// where attribute handles can be constructed
/// @param leaf The PointDataLeafNode which is being accessed.
/// @return Return true to continue rasterization, false to early exit
/// and skip the current leaf's contribution to the destination volume.
inline bool startPointLeaf(const PointDataTree::LeafNodeType& leaf);
/// @brief The point stamp function. Each point which contributes to
/// the current leaf will call this function exactly once.
/// @param ijk The current voxel containing the point being rasterized.
/// May be outside the destination leaf node depending on the range()
/// @param id The point index being rasterized
/// @param bounds The active bounds of the leaf node.
void rasterizePoint(const Coord& ijk,
const Index id,
const CoordBBox& bounds);
/// @brief Run each time a point leaf is finished with.
/// @param leaf The PointDataLeafNode which was being accessed.
/// @return Return true to continue rasterization, false to early exit
/// and stop rasterization to the destination leaf node.
inline bool endPointLeaf(const PointDataTree::LeafNodeType& leaf);
/// @brief The finalization function for the given destination tree(s).
/// @param origin The leaf origin of the topology being accessed
/// @param idx The leaf index of the topology being accessed
/// @return Return true to stop, false to recursively rasterize
inline bool finalize(const Coord& origin, size_t idx);
};

Below is a full example using the native components.

/// @brief Sum point distances into a target float tree
/// Note: Using TransformTransfer to handle different index spaces, and
/// VolumeTransfer for automatic buffer setup
struct MyTransfer :
public TransformTransfer,
public VolumeTransfer<FloatTree>
{
MyTransfer(FloatGrid& dest, const PointDataGrid& source)
: TransformTransfer(source.transform(), dest.transform())
, VolumeTransfer(dest.tree())
, mHandle(nullptr) {}
MyTransfer(const MyTransfer& other)
: TransformTransfer(other)
, VolumeTransfer(other)
, mHandle(nullptr) {}
/// @brief Range in index space of the source points
Int32 range(const Coord&, size_t) const { return Int32(1); }
/// @brief Every time we start a new point leaf, init the position array.
/// Always return true as we don't skip any leaf nodes.
bool startPointLeaf(const PointDataTree::LeafNodeType& leaf)
{
mHandle.reset(new AttributeHandle<Vec3f>(leaf.constAttributeArray("P"));
return true;
}
/// @brief For each point, compute its relative index space position in
/// the destination tree and sum the length of its distance
void rasterizePoint(const Coord& ijk, const Index id, const CoordBBox& bounds)
{
Vec3d P = ijk.asVec3d() + Vec3d(this->mHandle->get(id));
P = this->transformSourceToTarget(P); // TransformTransfer::transformSourceToTarget
// for each active voxel, accumulate distance
const auto* mask = this->mask(); // VolumeTransfer::mask
for (auto& coord : bounds) {
const Index voxel = FloatTree::LeafNodeType::coordToOffset(coord);
if (!mask->isOn(voxel)) continue;
Vec3d dist = coord.asVec3d() - P;
this->buffer()[voxel] += dist.length(); // VolumeTransfer::buffer
}
}
/// @brief Return true for endPointLeaf() to continue, false for finalize() so
/// we don't recurse.
bool endPointLeaf(const PointDataTree::LeafNodeType&) { return true; }
bool finalize(const Coord&, size_t) { return false; }
private:
std::unique_ptr<AttributeHandle<Vec3f>> mHandle;
};

The method works by looping over a single Tree topology, looking up point data at a position relative to that topology and passing that data to a transfer scheme TransferT.

Note
Each thread receives a copy of the transfer scheme object.
Parameters
pointsthe point data grid to rasterize
transferthe transfer scheme
filteroptional point filter
interrupteroptional interrupter

Definition at line 556 of file PointTransfer.h.

template<typename PointDataGridT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr openvdb::OPENVDB_VERSION_NAME::points::rasterizeSmoothSpheres ( const PointDataGridT &  points,
const Real  radius,
const Real  searchRadius,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Smoothed point distribution based sphere stamping with a uniform radius.

Rasterizes points into a level set using [Zhu Bridson 05] sphere stamping with a uniform radius. The radius and search radius parameters are given in world space units and are applied to every point to generate a fixed surface mask and consequent distance values. The search radius is each points points maximum contribution to the target level set. The search radius should always have a value equal to or larger than the point radius.

Warning
The width of the exterior half band may be smaller than the specified half band if the search radius is less than the equivalent world space halfband distance.
Parameters
pointsthe point data grid to rasterize
radiusthe world space radius of every point
searchRadiusthe maximum search distance of every point
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
The signed distance field.

Definition at line 1209 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr openvdb::OPENVDB_VERSION_NAME::points::rasterizeSmoothSpheres ( const PointDataGridT &  points,
const std::string radius,
const Real  radiusScale,
const Real  searchRadius,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Smoothed point distribution based sphere stamping with a varying radius.

Rasterizes points into a level set using [Zhu Bridson 05] sphere stamping with a variable radius. The radius string parameter expects a point attribute of type RadiusT to exist. The radiusScale parameter is multiplier for radius values held on the radius attribute. The searchRadius parameter remains a fixed size value which represents each points points maximum contribution to the target level set. The radius scale and search radius parameters are given in world space units and are applied to every point to generate a fixed surface mask and consequent distance values. The search radius should always have a value equal to or larger than the point radii.

Warning
The width of the exterior half band may be smaller than the specified half band if the search radius is less than the equivalent world space halfband distance.
Parameters
pointsthe point data grid to rasterize
radiusthe attribute containing the world space radius
radiusScalethe scale applied to every world space radius value
searchRadiusthe maximum search distance of every point
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
The signed distance field.

Definition at line 1229 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename AttributeTypes , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec openvdb::OPENVDB_VERSION_NAME::points::rasterizeSmoothSpheres ( const PointDataGridT &  points,
const Real  radius,
const Real  searchRadius,
const std::vector< std::string > &  attributes,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Smoothed point distribution based sphere stamping with a uniform radius and closest point attribute transfer.

Rasterizes points into a level set using [Zhu Bridson 05] sphere stamping with a uniform radius. The radius and search radius parameters are given in world space units and are applied to every point to generate a fixed surface mask and consequent distance values. The search radius is each points points maximum contribution to the target level set. The search radius should always be larger than the point radius. Every voxel's closest point is used to transfer each attribute in the attributes parameter to a new grid of matching topology. The destination types of these grids is equal to the ValueConverter result of the attribute type applied to the PointDataGridT.

Note
The AttributeTypes template parameter should be a TypeList of the required or possible attributes types. i.e. TypeList<int, float, double>. A runtime error will be thrown if no equivalent type for a given attribute is found in the AttributeTypes TypeList.
Warning
The width of the exterior half band may be smaller than the specified half band if the search radius is less than the equivalent world space halfband distance.
Parameters
pointsthe point data grid to rasterize
radiusthe world space radius of every point
searchRadiusthe maximum search distance of every point
attributeslist of attributes to transfer
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
A vector of grids. The signed distance field is guaranteed to be first and at the type specified by SdfT. Successive grids are the closest point attribute grids. These grids are guaranteed to have a topology and transform equal to the surface.

Definition at line 1250 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename AttributeTypes , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec openvdb::OPENVDB_VERSION_NAME::points::rasterizeSmoothSpheres ( const PointDataGridT &  points,
const std::string radius,
const Real  radiusScale,
const Real  searchRadius,
const std::vector< std::string > &  attributes,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Smoothed point distribution based sphere stamping with a varying radius and closest point attribute transfer.

Rasterizes points into a level set using [Zhu Bridson 05] sphere stamping with a variable radius. The radius string parameter expects a point attribute of type RadiusT to exist. The radiusScale parameter is multiplier for radius values held on the radius attribute. The searchRadius parameter remains a fixed size value which represents each points points maximum contribution to the target level set. The radius scale and search radius parameters are given in world space units and are applied to every point to generate a fixed surface mask and consequent distance values. The search radius should always have a value equal to or larger than the point radii. Every voxel's closest point is used to transfer each attribute in the attributes parameter to a new grid of matching topology. The destination types of these grids is equal to the ValueConverter result of the attribute type applied to the PointDataGridT.

Note
The AttributeTypes template parameter should be a TypeList of the required or possible attributes types. i.e. TypeList<int, float, double>. A runtime error will be thrown if no equivalent type for a given attribute is found in the AttributeTypes TypeList.
Warning
The width of the exterior half band may be smaller than the specified half band if the search radius is less than the equivalent world space halfband distance.
Parameters
pointsthe point data grid to rasterize
radiusthe attribute containing the world space radius
radiusScalethe scale applied to every world space radius value
searchRadiusthe maximum search distance of every point
attributeslist of attributes to transfer
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
A vector of grids. The signed distance field is guaranteed to be first and at the type specified by SdfT. Successive grids are the closest point attribute grids. These grids are guaranteed to have a topology and transform equal to the surface.

Definition at line 1299 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr openvdb::OPENVDB_VERSION_NAME::points::rasterizeSpheres ( const PointDataGridT &  points,
const Real  radius,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Narrow band sphere stamping with a uniform radius.

Rasterizes points into a level set using basic sphere stamping with a uniform radius. The radius parameter is given in world space units and is applied to every point to generate a fixed surface mask and consequent distance values.

Parameters
pointsthe point data grid to rasterize
radiusthe world space radius of every point
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
The signed distance field.

Definition at line 1061 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
SdfT::Ptr openvdb::OPENVDB_VERSION_NAME::points::rasterizeSpheres ( const PointDataGridT &  points,
const std::string radius,
const Real  scale = 1.0,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Narrow band sphere stamping with a varying radius.

Rasterizes points into a level set using basic sphere stamping with a variable radius. The radius string parameter expects a point attribute of type RadiusT to exist.

Parameters
pointsthe point data grid to rasterize
radiusthe name of the radius attribute
scalean optional scale to apply to each per point radius
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
The signed distance field.

Definition at line 1080 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename AttributeTypes , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec openvdb::OPENVDB_VERSION_NAME::points::rasterizeSpheres ( const PointDataGridT &  points,
const Real  radius,
const std::vector< std::string > &  attributes,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Narrow band sphere stamping with a uniform radius and closest point attribute transfer.

Rasterizes points into a level set using basic sphere stamping with a uniform radius. The radius parameter is given in world space units and is applied to every point to generate a fixed surface mask and consequent distance values. Every voxel's closest point is used to transfer each attribute in the attributes parameter to a new grid of matching topology. The destination types of these grids is equal to the ValueConverter result of the attribute type applied to the PointDataGridT.

Note
The AttributeTypes template parameter should be a TypeList of the required or possible attributes types. i.e. TypeList<int, float, double>. A runtime error will be thrown if no equivalent type for a given attribute is found in the AttributeTypes TypeList.
Parameters
pointsthe point data grid to rasterize
radiusthe world space radius of every point
attributeslist of attributes to transfer
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
A vector of grids. The signed distance field is guaranteed to be first and at the type specified by SdfT. Successive grids are the closest point attribute grids. These grids are guaranteed to have a topology and transform equal to the surface.

Definition at line 1100 of file PointRasterizeSDFImpl.h.

template<typename PointDataGridT , typename AttributeTypes , typename RadiusT , typename SdfT , typename FilterT , typename InterrupterT >
GridPtrVec openvdb::OPENVDB_VERSION_NAME::points::rasterizeSpheres ( const PointDataGridT &  points,
const std::string radius,
const std::vector< std::string > &  attributes,
const Real  scale = 1.0,
const Real  halfband = LEVEL_SET_HALF_WIDTH,
math::Transform::Ptr  transform = nullptr,
const FilterT &  filter = NullFilter(),
InterrupterT *  interrupter = nullptr 
)

Narrow band sphere stamping with a varying radius and closest point attribute transfer.

Rasterizes points into a level set using basic sphere stamping with a variable radius. The radius string parameter expects a point attribute of type RadiusT to exist. Every voxel's closest point is used to transfer each attribute in the attributes parameter to a new grid of matching topology. The destination types of these grids is equal to the ValueConverter result of the attribute type applied to the PointDataGridT.

Note
The AttributeTypes template parameter should be a TypeList of the required or possible attributes types. i.e. TypeList<int, float, double>. A runtime error will be thrown if no equivalent type for a given attribute is found in the AttributeTypes TypeList.
Parameters
pointsthe point data grid to rasterize
radiusthe name of the radius attribute
attributeslist of attributes to transfer
scalescale to apply to each per point radius
halfbandthe half band width
transformthe target transform for the surface
filtera filter to apply to points
interrupteroptional interrupter
Returns
A vector of grids. The signed distance field is guaranteed to be first and at the type specified by SdfT. Successive grids are the closest point attribute grids. These grids are guaranteed to have a topology and transform equal to the surface.

Definition at line 1145 of file PointRasterizeSDFImpl.h.

template<bool Staggered, typename ValueT , typename FilterT , typename PointDataTreeT >
auto openvdb::OPENVDB_VERSION_NAME::points::rasterizeTrilinear ( const PointDataTreeT &  points,
const std::string attribute,
const FilterT &  filter = NullFilter() 
)
inline

Perform weighted trilinear rasterization of all points within a voxel. This method takes and returns a tree i.e. ignores grid transformations.

Accumulates values and weights according to a simple 0-1-0 weighted hat function. This algorithm is an exact inverse of a trilinear interpolation and thus a key method used in PIC/FLIP style simulations. Returns a tree of the same precision as the input source attribute, but may be of a different math type depending on the value of the Staggered template attribute. If Staggered is true, this method produces values at each voxels negative faces, causing scalar attributes to produce math::Vec3<ValueT> tree types. The result Tree type is equal to: TrilinearTraits<ValueT, Staggered>::template TreeT<PointDataTreeT>

Template Parameters
Staggeredwhether to perform a staggered or collocated rasterization
ValueTthe value type of the point attribute to rasterize
Parameters
pointsthe point tree to be rasterized
attributethe name of the attribute to rasterize. Must be a scalar or Vec3 attribute.
filteran optional point filter to use

Definition at line 330 of file PointRasterizeTrilinearImpl.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::renameAttribute ( PointDataTreeT &  tree,
const Name oldName,
const Name newName 
)
inline

Rename an attribute in a VDB tree.

Parameters
treethe PointDataTree.
oldNamethe old attribute name to rename from.
newNamethe new attribute name to rename to.
Note
newName must not already exist and must not be a group attribute.

Definition at line 515 of file PointAttribute.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::renameAttributes ( PointDataTreeT &  tree,
const std::vector< Name > &  oldNames,
const std::vector< Name > &  newNames 
)
inline

Rename attributes in a VDB tree.

Parameters
treethe PointDataTree.
oldNamesa list of old attribute names to rename from.
newNamesa list of new attribute names to rename to.
Note
Number of oldNames must match the number of newNames.
Duplicate names and renaming group attributes are not allowed.

Definition at line 468 of file PointAttribute.h.

template<typename PointDataGridT , typename SourceGridT , typename TargetValueT = DummySampleType, typename SamplerT = SampleWithRounding, typename FilterT = NullFilter, typename InterrupterT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::points::sampleGrid ( size_t  order,
PointDataGridT &  points,
const SourceGridT &  sourceGrid,
const Name targetAttribute,
const FilterT &  filter = NullFilter(),
const SamplerT &  sampler = SampleWithRounding(),
InterrupterT *const  interrupter = nullptr,
const bool  threaded = true 
)
inline

Performs sampling and conversion from a VDB grid onto a VDB Points attribute.

Parameters
orderthe sampling order - 0 = closest-point, 1 = trilinear, 2 = triquadratic
pointsthe PointDataGrid whose points will be sampled on to
sourceGridVDB grid which will be sampled
targetAttributea target attribute on the points which will hold samples. This attribute will be created with the source grid type if it does not exist, and with the source grid name if the name is empty
filteran optional index filter
samplerhandles sampling and conversion into the target attribute type, which by default this uses the SampleWithRounding struct.
interrupteran optional interrupter
threadedenable or disable threading (threading is enabled by default)
Note
The target attribute may exist provided it can be cast to the SourceGridT ValueType

Definition at line 429 of file PointSample.h.

template<typename PointDataTreeT , typename PointIndexTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::setGroup ( PointDataTreeT &  tree,
const PointIndexTreeT &  indexTree,
const std::vector< short > &  membership,
const Name group,
const bool  remove = false 
)
inline

Sets group membership from a PointIndexTree-ordered vector.

Parameters
treethe PointDataTree.
indexTreethe PointIndexTree.
membership1 if the point is in the group, 0 otherwise.
groupthe name of the group.
removeif true also perform removal of points from the group.
Note
vector<bool> is not thread-safe on concurrent write, so use vector<short> instead

Definition at line 548 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::setGroup ( PointDataTreeT &  tree,
const Name group,
const bool  member = true 
)
inline

Sets membership for the specified group for all points (on/off).

Parameters
treethe PointDataTree.
groupthe name of the group.
membertrue / false for membership of the group.

Definition at line 618 of file PointGroup.h.

template<typename PointDataTreeT , typename FilterT >
void openvdb::OPENVDB_VERSION_NAME::points::setGroupByFilter ( PointDataTreeT &  tree,
const Name group,
const FilterT &  filter 
)
inline

Sets group membership based on a provided filter.

Parameters
treethe PointDataTree.
groupthe name of the group.
filterfilter data that is used to create a per-leaf filter

Definition at line 652 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::setGroupByRandomPercentage ( PointDataTreeT &  tree,
const Name group,
const float  percentage = 10.0f,
const unsigned int  seed = 0 
)
inline

Definition at line 704 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::setGroupByRandomTarget ( PointDataTreeT &  tree,
const Name group,
const Index64  targetPoints,
const unsigned int  seed = 0 
)
inline

Definition at line 687 of file PointGroup.h.

template<typename PointDataTreeT >
void openvdb::OPENVDB_VERSION_NAME::points::setStreamingMode ( PointDataTreeT &  tree,
bool  on = true 
)
inline

Toggle the streaming mode on all attributes in the tree to collapse the attributes after deconstructing a bound AttributeHandle to each array. This results in better memory efficiency when the data is streamed into another data structure (typically for rendering).

Parameters
treethe PointDataTree.
ontrue to enable streaming
Note
Multiple threads cannot safely access the same AttributeArray when using streaming.

Definition at line 1606 of file PointDataGrid.h.

template<typename GridT , typename RandGenT = std::mt19937, typename PositionArrayT = TypedAttributeArray<Vec3f, NullCodec>, typename PointDataGridT = Grid< typename points::TreeConverter<typename GridT::TreeType>::Type>, typename InterrupterT = util::NullInterrupter>
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::uniformPointScatter ( const GridT &  grid,
const Index64  count,
const unsigned int  seed = 0,
const float  spread = 1.0f,
InterrupterT *  interrupter = nullptr 
)
inline

The free functions depend on the following class:

The InterrupterT template argument below refers to any class with the following interface:

class Interrupter {
...
public:
void start(const char* name = nullptr) // called when computations begin
void end() // called when computations end
bool wasInterrupted(int percent=-1) // return true to break computation
};
Note
If no template argument is provided for this InterrupterT the util::NullInterrupter is used which implies that all interrupter calls are no-ops (i.e. incurs no computational overhead). Uniformly scatter a total amount of points in active regions
Parameters
gridA source grid. The resulting PointDataGrid will copy this grids transform and scatter in its active voxelized topology.
countThe total number of points to scatter
seedA seed for the RandGenT
spreadThe spread of points as a scale from each voxels center. A value of 1.0f indicates points can be placed anywhere within the voxel, where as a value of 0.0f will force all points to be created exactly at the centers of each voxel.
interrupterAn optional interrupter
Note
returns the scattered PointDataGrid

Get the prefixed voxel counts for each leaf node with an additional value to represent the end voxel count. See also LeafManager::getPrefixSum()

Get the prefixed voxel counts for each leaf node with an additional value to represent the end voxel count. See also LeafManager::getPrefixSum()

Definition at line 224 of file PointScatter.h.