40#ifndef OPENVDB_POINTS_RASTERIZE_SDF_HAS_BEEN_INCLUDED
41#define OPENVDB_POINTS_RASTERIZE_SDF_HAS_BEEN_INCLUDED
51#include <openvdb/thread/Threading.h>
54#include <unordered_map>
56#include <tbb/task_group.h>
57#include <tbb/parallel_reduce.h>
76template <
typename PointDataGridT,
77 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
78 typename FilterT = NullFilter,
79 typename InterrupterT = util::NullInterrupter>
83 const Real halfband = LEVEL_SET_HALF_WIDTH,
84 math::Transform::Ptr transform =
nullptr,
85 const FilterT& filter = NullFilter(),
86 InterrupterT* interrupter =
nullptr);
100template <
typename PointDataGridT,
101 typename RadiusT = float,
102 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
103 typename FilterT = NullFilter,
104 typename InterrupterT = util::NullInterrupter>
107 const std::string& radius,
108 const Real scale = 1.0,
109 const Real halfband = LEVEL_SET_HALF_WIDTH,
110 math::Transform::Ptr transform =
nullptr,
111 const FilterT& filter = NullFilter(),
112 InterrupterT* interrupter =
nullptr);
138template <
typename PointDataGridT,
140 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
141 typename FilterT = NullFilter,
142 typename InterrupterT = util::NullInterrupter>
146 const std::vector<std::string>& attributes,
147 const Real halfband = LEVEL_SET_HALF_WIDTH,
148 math::Transform::Ptr transform =
nullptr,
149 const FilterT& filter = NullFilter(),
150 InterrupterT* interrupter =
nullptr);
176template <
typename PointDataGridT,
178 typename RadiusT = float,
179 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
180 typename FilterT = NullFilter,
181 typename InterrupterT = util::NullInterrupter>
184 const std::string& radius,
185 const std::vector<std::string>& attributes,
186 const Real scale = 1.0,
187 const Real halfband = LEVEL_SET_HALF_WIDTH,
188 math::Transform::Ptr transform =
nullptr,
189 const FilterT& filter = NullFilter(),
190 InterrupterT* interrupter =
nullptr);
210template <
typename PointDataGridT,
211 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
212 typename FilterT = NullFilter,
213 typename InterrupterT = util::NullInterrupter>
217 const Real searchRadius,
218 const Real halfband = LEVEL_SET_HALF_WIDTH,
219 math::Transform::Ptr transform =
nullptr,
220 const FilterT& filter = NullFilter(),
221 InterrupterT* interrupter =
nullptr);
246template <
typename PointDataGridT,
247 typename RadiusT = float,
248 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
249 typename FilterT = NullFilter,
250 typename InterrupterT = util::NullInterrupter>
253 const std::string& radius,
254 const Real radiusScale,
255 const Real searchRadius,
256 const Real halfband = LEVEL_SET_HALF_WIDTH,
257 math::Transform::Ptr transform =
nullptr,
258 const FilterT& filter = NullFilter(),
259 InterrupterT* interrupter =
nullptr);
292template <
typename PointDataGridT,
294 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
295 typename FilterT = NullFilter,
296 typename InterrupterT = util::NullInterrupter>
300 const Real searchRadius,
301 const std::vector<std::string>& attributes,
302 const Real halfband = LEVEL_SET_HALF_WIDTH,
303 math::Transform::Ptr transform =
nullptr,
304 const FilterT& filter = NullFilter(),
305 InterrupterT* interrupter =
nullptr);
342template <
typename PointDataGridT,
344 typename RadiusT = float,
345 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
346 typename FilterT = NullFilter,
347 typename InterrupterT = util::NullInterrupter>
350 const std::string& radius,
351 const Real radiusScale,
352 const Real searchRadius,
353 const std::vector<std::string>& attributes,
354 const Real halfband = LEVEL_SET_HALF_WIDTH,
355 math::Transform::Ptr transform =
nullptr,
356 const FilterT& filter = NullFilter(),
357 InterrupterT* interrupter =
nullptr);
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
Functions to perform multi threaded reductions and analysis of arbitrary point attribute types....
Framework methods for rasterizing PointDataGrid data to Trees.
Defined various multi-threaded utility functions for trees.
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.
Definition PointRasterizeSDFImpl.h:1209
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.
Definition PointRasterizeSDFImpl.h:1061
std::vector< GridBase::Ptr > GridPtrVec
Definition Grid.h:508
NumericAttributeTypes::Append< Vec3AttributeTypes >::Append< Mat3AttributeTypes >::Append< Mat4AttributeTypes >::Append< QuatAttributeTypes >::Append< points::GroupAttributeArray >::Append< points::StringAttributeArray >::Append< points::TypedAttributeArray< bool > > AttributeTypes
The attribute array types which OpenVDB will register by default.
Definition openvdb.h:186
Definition Exceptions.h:13
#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:212