#include <MRMeshOrPoints.h>
Classes | |
struct | ProjectionResult |
Public Types | |
using | LimitedProjectorFunc = std::function<void( const Vector3f& p, ProjectionResult& res )> |
Public Member Functions | |
MeshOrPoints (const Mesh &mesh) | |
MeshOrPoints (const MeshPart &mp) | |
MeshOrPoints (const PointCloud &pc) | |
MRMESH_API Box3f | computeBoundingBox (const AffineXf3f *toWorld=nullptr) const |
MRMESH_API void | accumulate (PointAccumulator &accum, const AffineXf3f *xf=nullptr) const |
Adds in existing PointAccumulator the elements of the contained object. | |
MRMESH_API std::optional< VertBitSet > | pointsGridSampling (float voxelSize, size_t maxVoxels=500000, const ProgressCallback &cb={}) const |
MRMESH_API const VertCoords & | points () const |
gives access to points-vector (which can include invalid points as well) | |
MRMESH_API const VertBitSet & | validPoints () const |
gives access to bit set of valid points | |
MRMESH_API std::function< Vector3f(VertId)> | normals () const |
returns normals generating function: VertId->normal (or empty for point cloud without normals) | |
MRMESH_API std::function< float(VertId)> | weights () const |
MRMESH_API LimitedProjectorFunc | limitedProjector () const |
Public Attributes | |
MRMESH_API std::function< ProjectionResult(const Vector3f &) | projector )() const |
returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult | |
This class can hold either mesh part or point cloud. It is used for generic algorithms operating with either of them
using MR::MeshOrPoints::LimitedProjectorFunc = std::function<void( const Vector3f& p, ProjectionResult& res )> |
|
inline |
|
inline |
|
inline |
MRMESH_API void MR::MeshOrPoints::accumulate | ( | PointAccumulator & | accum, |
const AffineXf3f * | xf = nullptr ) const |
Adds in existing PointAccumulator the elements of the contained object.
MRMESH_API Box3f MR::MeshOrPoints::computeBoundingBox | ( | const AffineXf3f * | toWorld = nullptr | ) | const |
passes through all valid vertices and finds the minimal bounding box containing all of them; if toWorld transformation is given then returns minimal bounding box in world space
MRMESH_API LimitedProjectorFunc MR::MeshOrPoints::limitedProjector | ( | ) | const |
returns a function that updates projection (closest) points on this, the update takes place only if res.distSq on input is more than squared distance to the closest point
MRMESH_API std::function< Vector3f(VertId)> MR::MeshOrPoints::normals | ( | ) | const |
returns normals generating function: VertId->normal (or empty for point cloud without normals)
MRMESH_API const VertCoords & MR::MeshOrPoints::points | ( | ) | const |
gives access to points-vector (which can include invalid points as well)
MRMESH_API std::optional< VertBitSet > MR::MeshOrPoints::pointsGridSampling | ( | float | voxelSize, |
size_t | maxVoxels = 500000, | ||
const ProgressCallback & | cb = {} ) const |
performs sampling of vertices or points; subdivides bounding box of the object on voxels of approximately given size and returns at most one vertex per voxel; voxelSize is automatically increased to avoid more voxels than
maxVoxels; | returns std::nullopt if it was terminated by the callback |
MRMESH_API const VertBitSet & MR::MeshOrPoints::validPoints | ( | ) | const |
gives access to bit set of valid points
MRMESH_API std::function< float(VertId)> MR::MeshOrPoints::weights | ( | ) | const |
returns weights generating function: VertId->float: for mesh it is double area of surrounding triangles, and for point cloud - nothing
MRMESH_API std::function< ProjectionResult(const Vector3f &) MR::MeshOrPoints::projector) () const |
returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult