40#ifndef OPENVDB_POINTS_RASTERIZE_SDF_HAS_BEEN_INCLUDED
41#define OPENVDB_POINTS_RASTERIZE_SDF_HAS_BEEN_INCLUDED
51#include <openvdb/thread/Threading.h>
55#include <unordered_map>
57#include <tbb/task_group.h>
58#include <tbb/parallel_reduce.h>
77template <
typename PointDataGridT,
78 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
79 typename FilterT = NullFilter,
80 typename InterrupterT = util::NullInterrupter>
84 const Real halfband = LEVEL_SET_HALF_WIDTH,
85 math::Transform::Ptr transform =
nullptr,
86 const FilterT& filter = NullFilter(),
87 InterrupterT* interrupter =
nullptr);
101template <
typename PointDataGridT,
102 typename RadiusT = float,
103 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
104 typename FilterT = NullFilter,
105 typename InterrupterT = util::NullInterrupter>
108 const std::string& radius,
109 const Real scale = 1.0,
110 const Real halfband = LEVEL_SET_HALF_WIDTH,
111 math::Transform::Ptr transform =
nullptr,
112 const FilterT& filter = NullFilter(),
113 InterrupterT* interrupter =
nullptr);
139template <
typename PointDataGridT,
141 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
142 typename FilterT = NullFilter,
143 typename InterrupterT = util::NullInterrupter>
147 const std::vector<std::string>& attributes,
148 const Real halfband = LEVEL_SET_HALF_WIDTH,
149 math::Transform::Ptr transform =
nullptr,
150 const FilterT& filter = NullFilter(),
151 InterrupterT* interrupter =
nullptr);
177template <
typename PointDataGridT,
179 typename RadiusT = float,
180 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
181 typename FilterT = NullFilter,
182 typename InterrupterT = util::NullInterrupter>
185 const std::string& radius,
186 const std::vector<std::string>& attributes,
187 const Real scale = 1.0,
188 const Real halfband = LEVEL_SET_HALF_WIDTH,
189 math::Transform::Ptr transform =
nullptr,
190 const FilterT& filter = NullFilter(),
191 InterrupterT* interrupter =
nullptr);
211template <
typename PointDataGridT,
212 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
213 typename FilterT = NullFilter,
214 typename InterrupterT = util::NullInterrupter>
218 const Real searchRadius,
219 const Real halfband = LEVEL_SET_HALF_WIDTH,
220 math::Transform::Ptr transform =
nullptr,
221 const FilterT& filter = NullFilter(),
222 InterrupterT* interrupter =
nullptr);
247template <
typename PointDataGridT,
248 typename RadiusT = float,
249 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
250 typename FilterT = NullFilter,
251 typename InterrupterT = util::NullInterrupter>
254 const std::string& radius,
255 const Real radiusScale,
256 const Real searchRadius,
257 const Real halfband = LEVEL_SET_HALF_WIDTH,
258 math::Transform::Ptr transform =
nullptr,
259 const FilterT& filter = NullFilter(),
260 InterrupterT* interrupter =
nullptr);
293template <
typename PointDataGridT,
295 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
296 typename FilterT = NullFilter,
297 typename InterrupterT = util::NullInterrupter>
301 const Real searchRadius,
302 const std::vector<std::string>& attributes,
303 const Real halfband = LEVEL_SET_HALF_WIDTH,
304 math::Transform::Ptr transform =
nullptr,
305 const FilterT& filter = NullFilter(),
306 InterrupterT* interrupter =
nullptr);
343template <
typename PointDataGridT,
345 typename RadiusT = float,
346 typename SdfT =
typename PointDataGridT::template ValueConverter<float>::Type,
347 typename FilterT = NullFilter,
348 typename InterrupterT = util::NullInterrupter>
351 const std::string& radius,
352 const Real radiusScale,
353 const Real searchRadius,
354 const std::vector<std::string>& attributes,
355 const Real halfband = LEVEL_SET_HALF_WIDTH,
356 math::Transform::Ptr transform =
nullptr,
357 const FilterT& filter = NullFilter(),
358 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:178
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:218