40struct FixMeshDegeneraciesParams
60 FaceBitSet*
region =
nullptr;
67 } mode{ Mode::Remesh };
134struct FindDisorientationParams
142 } mode{ RayMode::Shallowest };
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRMeshFixer.h:135
new unsafe ref bool virtualFillHoles
Definition MRMeshFixer.h:119
new unsafe ref float creaseAngle
new unsafe ref int maxIters
new unsafe ref float criticalTriAspectRatio
Definition MRMeshFixer.h:41
new unsafe ref float maxDeviation
new unsafe ref float tinyEdgeLength
new unsafe MR.? FaceBitSet region
new unsafe ref float maxAngleChange
new unsafe ref float stabilizer
new unsafe ref float criticalTriAspectRatio
Definition MRMesh/MRMeshTopology.h:19
Definition MRMesh/MRMesh.h:23
MRMESH_API int duplicateMultiHoleVertices(Mesh &mesh)
Duplicates all vertices having more than two boundary edges (and returns the number of duplications);...
bool hasMultipleEdges(const MeshTopology &topology)
Definition MRMeshFixer.h:23
MRMESH_API Expected< FaceBitSet > findDegenerateFaces(const MeshPart &mp, float criticalAspectRatio=FLT_MAX, ProgressCallback cb={})
finds faces having aspect ratio >= criticalAspectRatio
MRMESH_API VertBitSet findNRingVerts(const MeshTopology &topology, int n, const VertBitSet *region=nullptr)
finds vertices in region with complete ring of N edges
MRMESH_API FaceBitSet findHoleComplicatingFaces(const Mesh &mesh)
MRMESH_API bool isDegree3Dest(const MeshTopology &topology, EdgeId e)
returns true if the destination of given edge has degree 3 and 3 incident triangles
MRMESH_API Expected< FaceBitSet > findDisorientedFaces(const Mesh &mesh, const FindDisorientationParams ¶ms={})
returns all faces that are oriented inconsistently, based on number of ray intersections
MRMESH_API bool isEdgeBetweenDoubleTris(const MeshTopology &topology, EdgeId e)
returns true if the edge e has both left and right triangular faces and the degree of dest( e ) is 2
MRMESH_API int eliminateDegree3Vertices(MeshTopology &topology, VertBitSet ®ion, FaceBitSet *fs=nullptr)
MRMESH_API Expected< FaceBitSet > findNotSmoothFaces(const MeshPart &mp, float minAngle=0.3f, ProgressCallback cb={})
MRMESH_API VertBitSet findRepeatedVertsOnHoleBd(const MeshTopology &topology)
returns set bits for all vertices present on the boundary of a hole several times;
MRMESH_API EdgeId isVertexRepeatedOnHoleBd(const MeshTopology &topology, VertId v)
MRMESH_API void fixMeshCreases(Mesh &mesh, const FixCreasesParams ¶ms={})
Finds creases edges and re-triangulates planar areas around them, useful to fix double faces.
MRMESH_API EdgeId eliminateDoubleTris(MeshTopology &topology, EdgeId e, FaceBitSet *region=nullptr)
VertPair MultipleEdge
finds multiple edges in the mesh
Definition MRMeshFixer.h:21
MRMESH_API EdgeId eliminateDegree3Dest(MeshTopology &topology, EdgeId e, FaceBitSet *region=nullptr)
MRMESH_API Expected< void > fixMeshDegeneracies(Mesh &mesh, const FixMeshDegeneraciesParams ¶ms)
Fixes degenerate faces and short edges in mesh (changes topology)
MRMESH_API Expected< std::vector< MultipleEdge > > findMultipleEdges(const MeshTopology &topology, ProgressCallback cb={})
MRMESH_API Expected< UndirectedEdgeBitSet > findShortEdges(const MeshPart &mp, float criticalLength, ProgressCallback cb={})
finds edges having length <= criticalLength
MRMESH_API void fixMultipleEdges(Mesh &mesh, const std::vector< MultipleEdge > &multipleEdges)
resolves given multiple edges, but splitting all but one edge in each group
MRMESH_API void eliminateDoubleTrisAround(MeshTopology &topology, VertId v, FaceBitSet *region=nullptr)
Definition MRCameraOrientationPlugin.h:8