31 [[nodiscard]]
const MeshPart*
asMeshPart()
const;
55 [[nodiscard]] MRMESH_API std::optional<VertBitSet>
pointsGridSampling(
float voxelSize,
size_t maxVoxels = 500000,
56 const ProgressCallback & cb = {} )
const;
59 [[nodiscard]] MRMESH_API
const VertCoords &
points()
const;
62 [[nodiscard]] MRMESH_API
const VertBitSet&
validPoints()
const;
65 [[nodiscard]] MRMESH_API std::function<Vector3f(VertId)>
normals()
const;
69 [[nodiscard]] MRMESH_API std::function<float(VertId)>
weights()
const;
90 [[nodiscard]]
explicit operator bool()
const {
return valid(); }
104 std::variant<MeshPart, PointCloudPart> var_;
134 ObjId skipObjId = {} );
142 return mop->projector()( p );
151 const Object* root =
nullptr,
152 std::function<
bool(
const Object& )> projectPred =
nullptr,
153 std::function<
bool(
const Object& )> recursePred =
nullptr
158 return std::visit( overloaded{
159 [](
const MeshPart & mp ) {
return ∓ },
166 return std::visit( overloaded{
167 [](
const MeshPart & ) {
return (
const PointCloudPart *)
nullptr; },
Definition MRAABBTreeObjects.h:22
Definition MRMeshOrPoints.h:21
named object in the data model
Definition MRObject.h:62
Class to accumulate points and make best line / plane approximation.
Definition MRBestFit.h:20
MRMESH_API std::function< ProjectionResult(const Vector3f &)> projector() const
returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult
MRMESH_API void projectOnAll(const Vector3f &pt, const AABBTreeObjects &tree, float upDistLimitSq, const ProjectOnAllCallback &callback, ObjId skipObjId={})
finds closest point on every object within given distance
const MeshPart * asMeshPart() const
if this object holds a mesh part then returns pointer on it, otherwise returns nullptr
Definition MRMeshOrPoints.h:156
std::function< bool(const Vector3f &p, ProjectionResult &res)> LimitedProjectorFunc
Definition MRMeshOrPoints.h:97
MeshOrPoints::ProjectionResult projectWorldPointOntoObject(const Vector3f &p, const Object &obj)
Projects a point onto an object, in world space. Returns .valid() == false if this object type isn't ...
Definition MRMeshOrPoints.h:137
std::optional< Vector3f > normal
Definition MRMeshOrPoints.h:78
MRMESH_API std::function< float(VertId)> weights() const
MeshOrPoints(const PointCloudPart &pcp)
Definition MRMeshOrPoints.h:24
MRMESH_API std::function< MeshOrPoints::ProjectionResult(const Vector3f &)> projector() const
returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult
const PointCloudPart * asPointCloudPart() const
if this object holds a point cloud part then returns pointer on it, otherwise returns nullptr
Definition MRMeshOrPoints.h:164
MRMESH_API std::optional< MeshOrPoints > getMeshOrPoints(const Object *obj)
constructs MeshOrPoints from ObjectMesh or ObjectPoints, otherwise returns nullopt
MeshOrPoints(const MeshPart &mp)
Definition MRMeshOrPoints.h:23
std::function< void(ObjId, MeshOrPoints::ProjectionResult)> ProjectOnAllCallback
to receive object id + projection result on it
Definition MRMeshOrPoints.h:126
MRMESH_API MeshOrPoints::ProjectionResult projectWorldPointOntoObjectsRecursive(const Vector3f &p, const Object *root=nullptr, std::function< bool(const Object &)> projectPred=nullptr, std::function< bool(const Object &)> recursePred=nullptr)
MeshOrPoints obj
Definition MRMeshOrPoints.h:110
MRMESH_API const VertCoords & points() const
gives access to points-vector (which can include invalid points as well)
MRMESH_API Box3f getObjBoundingBox() const
bool valid() const
Definition MRMeshOrPoints.h:91
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)
Vector3f point
found closest point
Definition MRMeshOrPoints.h:74
MRMESH_API std::optional< VertBitSet > pointsGridSampling(float voxelSize, size_t maxVoxels=500000, const ProgressCallback &cb={}) const
float distSq
squared distance from query point to the closest point
Definition MRMeshOrPoints.h:84
MRMESH_API void accumulate(PointAccumulator &accum, const AffineXf3f *xf=nullptr) const
Adds in existing PointAccumulator the elements of the contained object.
MeshOrPoints(const PointCloud &pc)
Definition MRMeshOrPoints.h:28
bool isBd
can be true only for meshes, if the closest point is located on the boundary of the mesh (or the curr...
Definition MRMeshOrPoints.h:81
VertId closestVert
Definition MRMeshOrPoints.h:88
MRMESH_API std::optional< MeshOrPointsXf > getMeshOrPointsXf(const Object *obj)
MRMESH_API LimitedProjectorFunc limitedProjector() const
MRMESH_API void cacheAABBTree() const
if AABBTree is already built does nothing otherwise builds and caches it
MRMESH_API Box3f computeBoundingBox(const AffineXf3f *toWorld=nullptr) const
MeshOrPoints(const Mesh &mesh)
these constructors are redundant for C++, but important for python bindings
Definition MRMeshOrPoints.h:27
MRMESH_API MeshOrPoints::LimitedProjectorFunc limitedProjector() const
AffineXf3f xf
Definition MRMeshOrPoints.h:111
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
an object and its transformation to global space with other objects
Definition MRMeshOrPoints.h:109
Definition MRMeshOrPoints.h:72
represents full point cloud (if region is nullptr) or some portion of point cloud (if region pointer ...
Definition MRPointCloudPart.h:13
Definition MRPointCloud.h:17