HDK
|
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 | |
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 | CachedDeformer |
A Deformer that caches the resulting positions from evaluating another Deformer. 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 | 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 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 , 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 > | |
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 > | |
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 > | |
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 , typename VecT > | |
float | computeVoxelSize (const PositionWrapper &positions, const uint32_t pointsPerVoxel, const math::Mat4d transform, const Index decimalPlaces, InterrupterT *const interrupter) |
template<typename PointDataTreeT , typename FilterT > | |
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 > | |
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 FilterT > | |
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 FilterT > | |
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 > | |
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 FilterT > | |
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 FilterT > | |
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 FilterT > | |
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 > | |
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 DeformerT , typename FilterT > | |
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 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 PointDataGridT > | |
PointDataGridT::Ptr | replicate (const PointDataGridT &source, const Index multiplier, const std::vector< std::string > &attributes, const std::string &scaleAttribute, const std::string &replicationIndex) |
template<typename PointDataGridT > | |
PointDataGridT::Ptr | replicate (const PointDataGridT &source, const Index multiplier, const std::string &scaleAttribute, const std::string &replicationIndex) |
template<typename PointDataGridT , typename SourceGridT , typename TargetValueT , typename SamplerT , typename FilterT , typename InterrupterT > | |
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 PointDataGridT , typename SourceGridT , typename FilterT , typename InterrupterT > | |
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 , typename InterrupterT > | |
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 , typename InterrupterT > | |
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 GridT , typename RandGenT , typename PositionArrayT , typename PointDataGridT , typename InterrupterT > | |
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 , typename PositionArrayT , typename PointDataGridT , typename InterrupterT > | |
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 , typename PositionArrayT , typename PointDataGridT , typename InterrupterT > | |
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 , typename FilterT , 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 , typename FilterT , typename PointDataTreeT , typename ResultTreeT > | |
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 , typename FilterT , typename PointDataTreeT , typename ResultTreeT > | |
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 ValueT , typename CodecT , typename FilterT , 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 , typename FilterT , 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 , typename FilterT , 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 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 > | |
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 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 () | |
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.
|
strong |
How to composite points into a volume.
Enumerator | |
---|---|
ACCUMULATE | |
MAXIMUM | |
AVERAGE |
Definition at line 29 of file PointRasterizeFrustum.h.
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).
points | the point tree |
attribute | the attribute to reduce |
total | the computed total value |
filter | a filter to apply to points |
totalTree | if provided, builds a tiled tree of localised total results. |
Definition at line 409 of file PointStatisticsImpl.h.
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.
points | the point tree |
attribute | the attribute to reduce |
filter | a filter to apply to points |
Definition at line 530 of file PointStatisticsImpl.h.
|
inline |
Advect points in a PointDataGrid through a velocity grid.
points | the PointDataGrid containing the points to be advected. |
velocity | a velocity grid to be sampled. |
integrationOrder | the integration scheme to use (1 is forward euler, 4 is runge-kutta 4th) |
dt | delta time. |
timeSteps | number of advection steps to perform. |
advectFilter | an optional advection index filter (moves a subset of the points) |
filter | an optional index filter (deletes a subset of the points) |
cached | caches velocity interpolation for faster performance, disable to use less memory (default is on). |
Definition at line 218 of file PointAdvect.h.
|
inline |
Appends a new attribute to the VDB tree (this method does not require a templated AttributeType)
tree | the PointDataTree to be appended to. |
name | name for the new attribute. |
type | the type of the attibute. |
strideOrTotalSize | the stride of the attribute |
constantStride | if false , stride is interpreted as total size of the array |
defaultValue | metadata default attribute value |
hidden | mark attribute as hidden |
transient | mark attribute as transient |
Definition at line 103 of file PointAttributeImpl.h.
|
inline |
Appends a new attribute to the VDB tree.
tree | the PointDataTree to be appended to. |
name | name for the new attribute |
uniformValue | the initial value of the attribute |
strideOrTotalSize | the stride of the attribute |
constantStride | if false , stride is interpreted as total size of the array |
defaultValue | metadata default attribute value |
hidden | mark attribute as hidden |
transient | mark attribute as transient |
Definition at line 166 of file PointAttributeImpl.h.
|
inline |
Appends a new empty group to the VDB tree.
tree | the PointDataTree to be appended to. |
group | name of the new group. |
Definition at line 209 of file PointGroupImpl.h.
|
inline |
Appends new empty groups to the VDB tree.
tree | the PointDataTree to be appended to. |
groups | names of the new groups. |
Definition at line 280 of file PointGroupImpl.h.
|
inline |
Performs tri-linear sampling from a VDB grid onto a VDB Points attribute.
points | the PointDataGrid whose points will be sampled on to |
sourceGrid | VDB grid which will be sampled |
targetAttribute | a 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 |
filter | an optional index filter |
interrupter | an optional interrupter |
Definition at line 428 of file PointSampleImpl.h.
|
inline |
Collapse the attribute into a uniform value.
tree | the PointDataTree in which to collapse the attribute. |
name | name for the attribute. |
uniformValue | value of the attribute |
Definition at line 202 of file PointAttributeImpl.h.
|
inline |
Compact attributes in a VDB tree (if possible).
tree | the PointDataTree. |
Definition at line 385 of file PointAttributeImpl.h.
|
inline |
Compacts existing groups of a VDB Tree to use less memory if possible.
tree | the PointDataTree to be compacted. |
Definition at line 377 of file PointGroupImpl.h.
|
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.
positions | array of world space positions |
pointsPerVoxel | the target number of points per voxel, must be positive and non-zero |
transform | voxel size will be computed using this optional transform if provided |
decimalPlaces | for readability, truncate voxel size to this number of decimals |
interrupter | an optional interrupter |
Definition at line 675 of file PointConversionImpl.h.
|
inline |
Convert the attribute from a PointDataGrid.
attribute | the attribute to be populated. |
tree | the PointDataTree to be converted. |
pointOffsets | a vector of cumulative point offsets for each leaf. |
startOffset | a value to shift all the point offsets by |
arrayIndex | the index in the Descriptor of the array to be converted. |
stride | the stride of the attribute |
filter | an index filter |
inCoreOnly | true if out-of-core leaf nodes are to be ignored |
Definition at line 615 of file PointConversionImpl.h.
|
inline |
Convert the group from a PointDataGrid.
group | the group to be populated. |
tree | the PointDataTree to be converted. |
pointOffsets | a vector of cumulative point offsets for each leaf |
startOffset | a value to shift all the point offsets by |
index | the group index to be converted. |
filter | an index filter |
inCoreOnly | true if out-of-core leaf nodes are to be ignored |
Definition at line 647 of file PointConversionImpl.h.
|
inline |
Convert the position attribute from a Point Data Grid.
positionAttribute | the position attribute to be populated. |
grid | the PointDataGrid to be converted. |
pointOffsets | a vector of cumulative point offsets for each leaf |
startOffset | a value to shift all the point offsets by |
filter | an index filter |
inCoreOnly | true if out-of-core leaf nodes are to be ignored |
Definition at line 581 of file PointConversionImpl.h.
|
inline |
Extract a Mask Tree from a Point Data Tree.
tree | the PointDataTree to extract the mask from. |
filter | an optional index filter |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 302 of file PointMaskImpl.h.
|
inline |
Extract a Mask Grid from a Point Data Grid.
grid | the PointDataGrid to extract the mask from. |
filter | an optional index filter |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 314 of file PointMaskImpl.h.
|
inline |
Extract a Mask Grid from a Point Data Grid using a new transform.
grid | the PointDataGrid to extract the mask from. |
transform | target transform for the mask. |
filter | an optional index filter |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 335 of file PointMaskImpl.h.
|
inline |
Localises points with position into a PointDataGrid
into two stages: allocation of the leaf attribute data and population of the positions.
pointIndexGrid | a PointIndexGrid into the points. |
positions | list of world space point positions. |
xform | world to index space transform. |
positionDefaultValue | metadata default position value |
PointIndexGrid
to the points must be supplied to perform this operation. Typically this is built implicitly by the PointDataGrid constructor. Definition at line 421 of file PointConversionImpl.h.
|
inline |
Convenience method to create a PointDataGrid
from a std::vector of point positions.
positions | list of world space point positions. |
xform | world to index space transform. |
positionDefaultValue | metadata default position value |
PointIndexGrid
to the points. Definition at line 526 of file PointConversionImpl.h.
|
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.
pointTree | the point tree with the group to delete |
group | the name of the group to delete |
invert | if enabled, points not belonging to any of the groups will be deleted |
drop | if enabled and invert is disabled, the group will be dropped from the tree |
Definition at line 191 of file PointDeleteImpl.h.
|
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.
pointTree | the point tree |
groups | the groups from which to delete points |
invert | if enabled, points not belonging to any of the groups will be deleted |
drop | if enabled and invert is disabled, the groups will be dropped from the tree |
Definition at line 136 of file PointDeleteImpl.h.
|
inline |
Delete any group that is not present in the Descriptor.
groups | the vector of group names. |
descriptor | the descriptor that holds the group map. |
Definition at line 195 of file PointGroupImpl.h.
|
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.
grid | A source grid. The resulting PointDataGrid will copy this grids transform and scatter in its active voxelized topology. |
pointsPerVoxel | The number of points to scatter per voxel |
seed | A seed for the RandGenT |
spread | The 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. |
interrupter | An optional interrupter |
Definition at line 264 of file PointScatterImpl.h.
|
inline |
Drop one attribute from the VDB tree (convenience method).
tree | the PointDataTree to be dropped from. |
index | index of the attribute to drop. |
Definition at line 305 of file PointAttributeImpl.h.
|
inline |
Drop one attribute from the VDB tree (convenience method).
tree | the PointDataTree to be dropped from. |
name | name of the attribute to drop. |
Definition at line 314 of file PointAttributeImpl.h.
|
inline |
Drops attributes from the VDB tree.
tree | the PointDataTree to be dropped from. |
indices | indices of the attributes to drop. |
Definition at line 238 of file PointAttributeImpl.h.
|
inline |
Drops attributes from the VDB tree.
tree | the PointDataTree to be dropped from. |
names | names of the attributes to drop. |
Definition at line 273 of file PointAttributeImpl.h.
|
inline |
Drops an existing group from the VDB tree.
tree | the PointDataTree to be dropped from. |
group | name of the group. |
compact | compact attributes if possible to reduce memory - if dropping more than one group, compacting once at the end will be faster |
Definition at line 296 of file PointGroupImpl.h.
|
inline |
Drops existing groups from the VDB tree, the tree is compacted after dropping.
tree | the PointDataTree to be dropped from. |
groups | names of the groups. |
Definition at line 329 of file PointGroupImpl.h.
|
inline |
Drops all existing groups from the VDB tree, the tree is compacted after dropping.
tree | the PointDataTree to be dropped from. |
Definition at line 346 of file PointGroupImpl.h.
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).
points | the point tree |
attribute | the attribute to reduce |
average | the computed averaged value at double precision |
filter | a filter to apply to points |
averageTree | if provided, builds a tiled tree of localised avg results. |
Definition at line 298 of file PointStatisticsImpl.h.
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.
points | the point tree |
attribute | the attribute to reduce |
filter | a filter to apply to points |
Definition at line 515 of file PointStatisticsImpl.h.
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).
points | the point tree |
attribute | the attribute to reduce |
min | the computed min value |
max | the computed max value |
filter | a filter to apply to points |
minTree | if provided, builds a tiled tree of localised min results |
maxTree | if provided, builds a tiled tree of localised max results |
Definition at line 281 of file PointStatisticsImpl.h.
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.
points | the point tree |
attribute | the attribute to reduce |
filter | a filter to apply to points |
Definition at line 498 of file PointStatisticsImpl.h.
|
inline |
Definition at line 61 of file AttributeArray.h.
|
inline |
Definition at line 79 of file AttributeArray.h.
|
inline |
Definition at line 50 of file AttributeArray.h.
|
inline |
Definition at line 69 of file AttributeArray.h.
|
inline |
Definition at line 63 of file AttributeGroup.h.
|
inline |
Definition at line 144 of file AttributeArrayString.h.
|
inline |
Count up the number of times the iterator can iterate.
iter | the iterator. |
Definition at line 314 of file IndexIterator.h.
|
inline |
Deep copy the descriptor across all leaf nodes.
tree | the PointDataTree. |
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.
|
inline |
Move points in a PointDataGrid using a custom deformer and a new transform.
points | the PointDataGrid containing the points to be moved. |
transform | target transform to use for the resulting points. |
deformer | a custom deformer that defines how to move the points. |
filter | an optional index filter |
objectNotInUse | for future use, this object is currently ignored |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 456 of file PointMoveImpl.h.
|
inline |
Move points in a PointDataGrid using a custom deformer.
points | the PointDataGrid containing the points to be moved. |
deformer | a custom deformer that defines how to move the points. |
filter | an optional index filter |
objectNotInUse | for future use, this object is currently ignored |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 619 of file PointMoveImpl.h.
|
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.
grid | A 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. |
pointsPerVoxel | The number of points to scatter per voxel |
seed | A seed for the RandGenT |
spread | The 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. |
interrupter | An optional interrupter |
Definition at line 346 of file PointScatterImpl.h.
|
inline |
Count the total number of points in a PointDataTree.
tree | the PointDataTree in which to count the points |
filter | an optional index filter |
inCoreOnly | if true, points in out-of-core leaf nodes are not counted |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 18 of file PointCountImpl.h.
|
inline |
Generate a new grid with voxel values to store the number of points per voxel.
grid | the PointDataGrid to use to compute the count grid |
filter | an optional index filter |
Definition at line 95 of file PointCountImpl.h.
|
inline |
Generate a new grid that uses the supplied transform with voxel values to store the number of points per voxel.
grid | the PointDataGrid to use to compute the count grid |
transform | the transform to use to compute the count grid |
filter | an optional index filter |
Definition at line 117 of file PointCountImpl.h.
|
inline |
Populate an array of cumulative point offsets per leaf node.
pointOffsets | array of offsets to be populated |
tree | the PointDataTree from which to populate the offsets |
filter | an optional index filter |
inCoreOnly | if true, points in out-of-core leaf nodes are ignored |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 52 of file PointCountImpl.h.
|
inline |
Performs closest point sampling from a VDB grid onto a VDB Points attribute.
points | the PointDataGrid whose points will be sampled on to |
sourceGrid | VDB grid which will be sampled |
targetAttribute | a 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 |
filter | an optional index filter |
interrupter | an optional interrupter |
Definition at line 417 of file PointSampleImpl.h.
|
inline |
Stores point attribute data in an existing PointDataGrid
attribute.
tree | the PointDataGrid to be populated. |
pointIndexTree | a PointIndexTree into the points. |
attributeName | the name of the VDB Points attribute to be populated. |
data | a wrapper to the attribute data. |
stride | the stride of the attribute |
insertMetadata | true if strings are to be automatically inserted as metadata. |
PointIndexGrid
to the points must be supplied to perform this operation. This is required to ensure the same point index ordering. Definition at line 544 of file PointConversionImpl.h.
|
inline |
Sequentially pre-fetch all delayed-load voxel and attribute data from disk in order to accelerate subsequent random access.
tree | the PointDataTree. |
position | if enabled, prefetch the position attribute (default is on) |
otherAttributes | if enabled, prefetch all other attributes (default is on) |
Definition at line 1619 of file PointDataGrid.h.
|
inline |
Performs tri-quadratic sampling from a VDB grid onto a VDB Points attribute.
points | the PointDataGrid whose points will be sampled on to |
sourceGrid | VDB grid which will be sampled |
targetAttribute | a 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 |
filter | an optional index filter |
interrupter | an optional interrupter |
Definition at line 439 of file PointSampleImpl.h.
|
inline |
Perform potentially complex rasterization from a user defined transfer scheme.
Below is a full example using the native components.
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.
points | the point data grid to rasterize |
transfer | the transfer scheme |
filter | optional point filter |
interrupter | optional interrupter |
Definition at line 556 of file PointTransfer.h.
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.
points | the point data grid to rasterize |
radius | the world space radius of every point |
searchRadius | the maximum search distance of every point |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1209 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the attribute containing the world space radius |
radiusScale | the scale applied to every world space radius value |
searchRadius | the maximum search distance of every point |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1229 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the world space radius of every point |
searchRadius | the maximum search distance of every point |
attributes | list of attributes to transfer |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1250 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the attribute containing the world space radius |
radiusScale | the scale applied to every world space radius value |
searchRadius | the maximum search distance of every point |
attributes | list of attributes to transfer |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1299 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the world space radius of every point |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1061 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the name of the radius attribute |
scale | an optional scale to apply to each per point radius |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1080 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the world space radius of every point |
attributes | list of attributes to transfer |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1100 of file PointRasterizeSDFImpl.h.
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.
points | the point data grid to rasterize |
radius | the name of the radius attribute |
attributes | list of attributes to transfer |
scale | scale to apply to each per point radius |
halfband | the half band width |
transform | the target transform for the surface |
filter | a filter to apply to points |
interrupter | optional interrupter |
Definition at line 1145 of file PointRasterizeSDFImpl.h.
|
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>
Staggered | whether to perform a staggered or collocated rasterization |
ValueT | the value type of the point attribute to rasterize |
points | the point tree to be rasterized |
attribute | the name of the attribute to rasterize. Must be a scalar or Vec3 attribute. |
filter | an optional point filter to use |
Definition at line 330 of file PointRasterizeTrilinearImpl.h.
|
inline |
Rename an attribute in a VDB tree.
tree | the PointDataTree. |
oldName | the old attribute name to rename from. |
newName | the new attribute name to rename to. |
Definition at line 373 of file PointAttributeImpl.h.
|
inline |
Rename attributes in a VDB tree.
tree | the PointDataTree. |
oldNames | a list of old attribute names to rename from. |
newNames | a list of new attribute names to rename to. |
Definition at line 326 of file PointAttributeImpl.h.
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::replicate | ( | const PointDataGridT & | source, |
const Index | multiplier, | ||
const std::vector< std::string > & | attributes, | ||
const std::string & | scaleAttribute, | ||
const std::string & | replicationIndex | ||
) |
Definition at line 19 of file PointReplicateImpl.h.
PointDataGridT::Ptr openvdb::OPENVDB_VERSION_NAME::points::replicate | ( | const PointDataGridT & | source, |
const Index | multiplier, | ||
const std::string & | scaleAttribute, | ||
const std::string & | replicationIndex | ||
) |
Definition at line 262 of file PointReplicateImpl.h.
|
inline |
Performs sampling and conversion from a VDB grid onto a VDB Points attribute.
order | the sampling order - 0 = closest-point, 1 = trilinear, 2 = triquadratic |
points | the PointDataGrid whose points will be sampled on to |
sourceGrid | VDB grid which will be sampled |
targetAttribute | a 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 |
filter | an optional index filter |
sampler | handles sampling and conversion into the target attribute type, which by default this uses the SampleWithRounding struct. |
interrupter | an optional interrupter |
threaded | enable or disable threading (threading is enabled by default) |
Definition at line 319 of file PointSampleImpl.h.
|
inline |
Sets group membership from a PointIndexTree-ordered vector.
tree | the PointDataTree. |
indexTree | the PointIndexTree. |
membership | 1 if the point is in the group, 0 otherwise. |
group | the name of the group. |
remove | if true also perform removal of points from the group. |
Definition at line 438 of file PointGroupImpl.h.
|
inline |
Sets membership for the specified group for all points (on/off).
tree | the PointDataTree. |
group | the name of the group. |
member | true / false for membership of the group. |
Definition at line 508 of file PointGroupImpl.h.
|
inline |
Sets group membership based on a provided filter.
tree | the PointDataTree. |
group | the name of the group. |
filter | filter data that is used to create a per-leaf filter |
Definition at line 542 of file PointGroupImpl.h.
|
inline |
Definition at line 594 of file PointGroupImpl.h.
|
inline |
Definition at line 577 of file PointGroupImpl.h.
|
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).
tree | the PointDataTree. |
on | true to enable streaming |
Definition at line 1606 of file PointDataGrid.h.
|
inline |
The free functions depend on the following class:
The InterrupterT
template argument below refers to any class with the following interface:
grid | A source grid. The resulting PointDataGrid will copy this grids transform and scatter in its active voxelized topology. |
count | The total number of points to scatter |
seed | A seed for the RandGenT |
spread | The 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. |
interrupter | An optional interrupter |
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 92 of file PointScatterImpl.h.