10#ifndef OPENVDB_POINTS_POINT_CONVERSION_HAS_BEEN_INCLUDED 
   11#define OPENVDB_POINTS_POINT_CONVERSION_HAS_BEEN_INCLUDED 
   27#include <tbb/parallel_reduce.h> 
   40template<
typename ValueType>
 
   47                         const Index stride = 1)
 
 
   51    size_t size()
 const { 
return mData.size(); }
 
   52    void getPos(
size_t n, ValueType& xyz)
 const { xyz = mData[n]; }
 
   53    void get(ValueType& value, 
size_t n)
 const { value = mData[n]; }
 
   54    void get(ValueType& value, 
size_t n, 
openvdb::Index m)
 const { value = mData[n * mStride + m]; }
 
   57    const std::vector<value_type>& mData;
 
 
   82    typename CompressionT,
 
   83    typename PointDataGridT,
 
   84    typename PositionArrayT,
 
   85    typename PointIndexGridT>
 
   86inline typename PointDataGridT::Ptr
 
   87createPointDataGrid(
const PointIndexGridT& pointIndexGrid,
 
   88                    const PositionArrayT& positions,
 
   90                    const Metadata* positionDefaultValue = 
nullptr);
 
  103template <
typename CompressionT, 
typename Po
intDataGr
idT, 
typename ValueT>
 
  104inline typename PointDataGridT::Ptr
 
  105createPointDataGrid(
const std::vector<ValueT>& positions,
 
  107                    const Metadata* positionDefaultValue = 
nullptr);
 
  121template <
typename Po
intDataTreeT, 
typename Po
intIndexTreeT, 
typename Po
intArrayT>
 
  123populateAttribute(  PointDataTreeT& 
tree,
 
  124                    const PointIndexTreeT& pointIndexTree,
 
  126                    const PointArrayT& data,
 
  127                    const Index stride = 1,
 
  128                    const bool insertMetadata = 
true);
 
  140template <
typename PositionAttribute, 
typename Po
intDataGr
idT, 
typename FilterT = NullFilter>
 
  142convertPointDataGridPosition(   PositionAttribute& positionAttribute,
 
  143                                const PointDataGridT& grid,
 
  144                                const std::vector<Index64>& pointOffsets,
 
  146                                const FilterT& filter = NullFilter(),
 
  147                                const bool inCoreOnly = 
false);
 
  160template <
typename TypedAttribute, 
typename Po
intDataTreeT, 
typename FilterT = NullFilter>
 
  162convertPointDataGridAttribute(  TypedAttribute& attribute,
 
  163                                const PointDataTreeT& 
tree,
 
  164                                const std::vector<Index64>& pointOffsets,
 
  166                                const unsigned arrayIndex,
 
  167                                const Index stride = 1,
 
  168                                const FilterT& filter = NullFilter(),
 
  169                                const bool inCoreOnly = 
false);
 
  183template <
typename Group, 
typename Po
intDataTreeT, 
typename FilterT = NullFilter>
 
  185convertPointDataGridGroup(  Group& group,
 
  186                            const PointDataTreeT& 
tree,
 
  187                            const std::vector<Index64>& pointOffsets,
 
  189                            const AttributeSet::Descriptor::GroupIndex index,
 
  190                            const FilterT& filter = NullFilter(),
 
  191                            const bool inCoreOnly = 
false);
 
  196template <
typename...> 
using void_t = void;
 
  197template <
typename T, 
typename = 
void>
 
  200struct ValueTypeTraits <T, void_t<typename T::value_type>> { 
using Type = 
typename T::value_type; };
 
 
  217template<   
typename PositionWrapper,
 
  218            typename InterrupterT = openvdb::util::NullInterrupter,
 
  222                   const uint32_t pointsPerVoxel,
 
  224                   const Index decimalPlaces = 5,
 
  225                   InterrupterT* 
const interrupter = 
nullptr);
 
Attribute array storage for string data using Descriptor Metadata.
Set of Attribute Arrays which tracks metadata about each array.
Index filters primarily designed to be used with a FilterIndexIter.
Point attribute manipulation in a VDB Point Grid.
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
Point group manipulation in a VDB Point Grid.
Space-partitioning acceleration structure for points. Partitions the points into voxels to accelerate...
This tool produces a grid where every voxel that contains a point is active. It employs thread-local ...
static const Mat4< double > & identity()
Definition Mat4.h:117
size_t size() const
Definition PointConversion.h:51
void get(ValueType &value, size_t n, openvdb::Index m) const
Definition PointConversion.h:54
void get(ValueType &value, size_t n) const
Definition PointConversion.h:53
ValueType value_type
Definition PointConversion.h:44
PointAttributeVector(const std::vector< value_type > &data, const Index stride=1)
Definition PointConversion.h:46
void getPos(size_t n, ValueType &xyz) const
Definition PointConversion.h:52
ValueType PosType
Definition PointConversion.h:43
Mat4< double > Mat4d
Definition Mat4.h:1355
Definition PointConversion.h:195
void void_t
Definition PointConversion.h:196
float computeVoxelSize(const PositionWrapper &positions, const uint32_t pointsPerVoxel, const math::Mat4d transform=math::Mat4d::identity(), const Index decimalPlaces=5, InterrupterT *const interrupter=nullptr)
Definition PointConversionImpl.h:675
Definition PointDataGrid.h:170
std::string Name
Definition Name.h:19
Index32 Index
Definition Types.h:54
math::Vec3< Real > Vec3R
Definition Types.h:72
uint64_t Index64
Definition Types.h:53
Definition Exceptions.h:13
typename T::value_type Type
Definition PointConversion.h:200
Definition PointConversion.h:198
Vec3R Type
Definition PointConversion.h:198
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218