OpenVDB  12.0.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
ClosestSurfacePoint< GridT > Class Template Reference

Accelerated closest surface point queries for narrow band level sets. More...

#include <openvdb/tools/VolumeToSpheres.h>

Public Types

using Ptr = std::unique_ptr< ClosestSurfacePoint >
 
using TreeT = typename GridT::TreeType
 
using BoolTreeT = typename TreeT::template ValueConverter< bool >::Type
 
using Index32TreeT = typename TreeT::template ValueConverter< Index32 >::Type
 
using Int16TreeT = typename TreeT::template ValueConverter< Int16 >::Type
 

Public Member Functions

bool search (const std::vector< Vec3R > &points, std::vector< float > &distances)
 Compute the distance from each input point to its closest surface point. More...
 
bool searchAndReplace (std::vector< Vec3R > &points, std::vector< float > &distances)
 Overwrite each input point with its closest surface point. More...
 
const Index32TreeTindexTree () const
 Tree accessor. More...
 
const Int16TreeTsignTree () const
 Tree accessor. More...
 

Static Public Member Functions

template<typename InterrupterT = util::NullInterrupter>
static Ptr create (const GridT &grid, float isovalue=0.0, InterrupterT *interrupter=nullptr)
 Extract surface points and construct a spatial acceleration structure. More...
 

Detailed Description

template<typename GridT>
class openvdb::v12_0::tools::ClosestSurfacePoint< GridT >

Accelerated closest surface point queries for narrow band level sets.

Supports queries that originate at arbitrary world-space locations, is not confined to the narrow band region of the input volume geometry.

Member Typedef Documentation

using BoolTreeT = typename TreeT::template ValueConverter<bool>::Type
using Index32TreeT = typename TreeT::template ValueConverter<Index32>::Type
using Int16TreeT = typename TreeT::template ValueConverter<Int16>::Type
using Ptr = std::unique_ptr<ClosestSurfacePoint>
using TreeT = typename GridT::TreeType

Member Function Documentation

ClosestSurfacePoint< GridT >::Ptr create ( const GridT &  grid,
float  isovalue = 0.0,
InterrupterT *  interrupter = nullptr 
)
static

Extract surface points and construct a spatial acceleration structure.

Returns
a null pointer if the initialization fails for any reason, otherwise a unique pointer to a newly-allocated ClosestSurfacePoint object.
Parameters
grida scalar level set or fog volume
isovaluethe voxel value that determines the surface of the volume The default value of zero works for signed distance fields, while fog volumes require a larger positive value (0.5 is a good initial guess).
interrupterpointer to an object adhering to the util::NullInterrupter interface.
const Index32TreeT& indexTree ( ) const
inline

Tree accessor.

bool search ( const std::vector< Vec3R > &  points,
std::vector< float > &  distances 
)

Compute the distance from each input point to its closest surface point.

Parameters
pointsinput list of points in world space
distancesoutput list of closest surface point distances
bool searchAndReplace ( std::vector< Vec3R > &  points,
std::vector< float > &  distances 
)

Overwrite each input point with its closest surface point.

Parameters
pointsinput/output list of points in world space
distancesoutput list of closest surface point distances
const Int16TreeT& signTree ( ) const
inline

Tree accessor.