MeshLib C++ Docs
Loading...
Searching...
No Matches
MRTunnelDetector.h
Go to the documentation of this file.
1#pragma once
2
4#include "MRExpected.h"
5#include <cfloat>
6
7namespace MR
8{
9
13
17MRMESH_API Expected<std::vector<EdgeLoop>> detectBasisTunnels( const MeshPart& mp, EdgeMetric metric = {}, ProgressCallback progressCallback = {} );
18
26 const FaceBitSet* region = nullptr );
27
29MRMESH_API Expected<EdgeLoop> findShortestCoLoop( const MeshPart& mp, const EdgeLoop& loop );
30
36[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findSmallestMetricEquivalentLoops( const MeshTopology& topology, const EdgeLoop& loop, const EdgeMetric& metric,
37 const FaceBitSet* region = nullptr );
38
40[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findShortestEquivalentLoops( const MeshPart& mp, const EdgeLoop& loop );
41
44[[nodiscard]] MRMESH_API bool isLoopOuter( const Mesh& mesh, const EdgeLoop& loop );
45
47{
51};
52
82
85MRMESH_API Expected<FaceBitSet> detectTunnelFaces( const MeshPart& mp, const DetectTunnelSettings & settings = {} );
86
89MRMESH_API Expected<void> eliminateTunnels( Mesh& mesh, const FaceBitSet* region = {}, const DetectTunnelSettings& settings = {} );
90MRMESH_API Expected<void> eliminateTunnels( Mesh& mesh, const FillHoleNicelySettings& fillSettings, const FaceBitSet* region = {}, const DetectTunnelSettings& detectSettings = {} );
91
93
94}
#define MRMESH_API
Definition MRMeshFwd.h:82
Definition MRMeshTopology.h:30
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:751
std::vector< EdgeId > EdgeLoop
Definition MRMeshFwd.h:153
tl::expected< T, E > Expected
Definition MRExpected.h:31
std::function< float(EdgeId)> EdgeMetric
Definition MRMeshFwd.h:581
bool isLoopOuter(const Mesh &mesh, const EdgeLoop &loop)
Expected< EdgeLoop > findSmallestMetricCoLoop(const MeshTopology &topology, const EdgeLoop &loop, const EdgeMetric &metric, const FaceBitSet *region=nullptr)
Expected< EdgeLoop > findShortestCoLoop(const MeshPart &mp, const EdgeLoop &loop)
same as findMinimalCoLoop with euclidean edge length metric
std::vector< EdgeLoop > findShortestEquivalentLoops(const MeshPart &mp, const EdgeLoop &loop)
same as findSmallestMetricEquivalentLoops with euclidean edge length metric
Expected< void > eliminateTunnels(Mesh &mesh, const FaceBitSet *region={}, const DetectTunnelSettings &settings={})
Expected< FaceBitSet > detectTunnelFaces(const MeshPart &mp, const DetectTunnelSettings &settings={})
std::vector< EdgeLoop > findSmallestMetricEquivalentLoops(const MeshTopology &topology, const EdgeLoop &loop, const EdgeMetric &metric, const FaceBitSet *region=nullptr)
TunnelLoopType
Definition MRTunnelDetector.h:47
Expected< std::vector< EdgeLoop > > detectBasisTunnels(const MeshPart &mp, EdgeMetric metric={}, ProgressCallback progressCallback={})
@ Inner
tunnel-like
Definition MRTunnelDetector.h:50
@ Outer
handle-like
Definition MRTunnelDetector.h:49
@ Any
Definition MRTunnelDetector.h:48
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRTunnelDetector.h:54
bool buildCoLoops
Definition MRTunnelDetector.h:70
EdgeMetric metric
Definition MRTunnelDetector.h:66
int maxIters
Definition MRTunnelDetector.h:60
bool filterEquivalentCoLoops
Definition MRTunnelDetector.h:74
TunnelLoopType loopType
selects what kind of loops to return
Definition MRTunnelDetector.h:77
float maxTunnelLength
maximal euclidean length of tunnel loops to detect
Definition MRTunnelDetector.h:56
ProgressCallback progress
to report algorithm progress and cancel from outside
Definition MRTunnelDetector.h:80
Definition MRFillHoleNicely.h:59
Definition MRMesh.h:23