MeshLib C Docs
Loading...
Searching...
No Matches
MRMeshFixer.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MRId.h>
4#include <MRCMisc/common.h>
5#include <MRCMisc/exports.h>
6
7#include <stdbool.h>
8#include <stddef.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14typedef struct MR_FaceBitSet MR_FaceBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
15typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
16typedef struct MR_MeshPart MR_MeshPart; // Defined in `#include <MRCMesh/MRMeshPart.h>`.
17typedef struct MR_MeshTopology MR_MeshTopology; // Defined in `#include <MRCMesh/MRMeshTopology.h>`.
18typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
19typedef struct MR_expected_MR_FaceBitSet_std_string MR_expected_MR_FaceBitSet_std_string; // Defined in `#include <MRCMisc/expected_MR_FaceBitSet_std_string.h>`.
20typedef struct MR_expected_MR_UndirectedEdgeBitSet_std_string MR_expected_MR_UndirectedEdgeBitSet_std_string; // Defined in `#include <MRCMisc/expected_MR_UndirectedEdgeBitSet_std_string.h>`.
21typedef struct MR_expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string MR_expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string; // Defined in `#include <MRCMisc/expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string.h>`.
22typedef struct MR_expected_void_std_string MR_expected_void_std_string; // Defined in `#include <MRCMisc/expected_void_std_string.h>`.
23typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
24typedef struct MR_std_vector_std_pair_MR_VertId_MR_VertId MR_std_vector_std_pair_MR_VertId_MR_VertId; // Defined in `#include <MRCMisc/std_vector_std_pair_MR_VertId_MR_VertId.h>`.
25
26
36
40
45
56
61
66
72
76
82
87
95
104
111
118
124
131
138
144
151
159
166
174
181
187
194
202
209
217
224
231
238
244
250
256
264
271
279
285
291
297
301
306
313MRC_API MR_FixMeshDegeneraciesParams *MR_FixMeshDegeneraciesParams_ConstructFrom(float maxDeviation, float tinyEdgeLength, float criticalTriAspectRatio, float maxAngleChange, float stabilizer, MR_FaceBitSet *region, MR_FixMeshDegeneraciesParams_Mode mode, bool mimicPatch, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb);
314
318
322
327
330
333
340
347
354
359
368
375
380
389
398
404
410
418
425
431
438
445
451
458
465
471
478
482
487
491MRC_API MR_FixCreasesParams *MR_FixCreasesParams_ConstructFrom(float creaseAngle, float criticalTriAspectRatio, int maxIters);
492
496
500
506
509
512
520
527
533
539
545
552
558
565
571
577
583
587
592
599
603
607
612
615
618
625
633
634#ifdef __cplusplus
635} // extern "C"
636#endif
struct MR_MeshTopology MR_MeshTopology
Definition MR2DContoursTriangulation.h:15
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:22
struct MR_FaceBitSet MR_FaceBitSet
Definition MRAABBTree.h:17
struct MR_MeshPart MR_MeshPart
Definition MRAABBTree.h:19
struct MR_expected_MR_FaceBitSet_std_string MR_expected_MR_FaceBitSet_std_string
Definition MRContoursCut.h:20
struct MR_expected_void_std_string MR_expected_void_std_string
Definition MRCtm.h:26
struct MR_Mesh MR_Mesh
Definition MRCtm.h:16
MRC_API void MR_FindDisorientationParams_Set_virtualFillHoles(MR_FindDisorientationParams *_this, bool value)
MRC_API const float * MR_FixMeshDegeneraciesParams_Get_maxAngleChange(const MR_FixMeshDegeneraciesParams *_this)
MRC_API const int * MR_FixCreasesParams_Get_maxIters(const MR_FixCreasesParams *_this)
MRC_API MR_expected_MR_FaceBitSet_std_string * MR_findDisorientedFaces(const MR_Mesh *mesh, const MR_FindDisorientationParams *params)
MRC_API void MR_FixMeshDegeneraciesParams_Destroy(const MR_FixMeshDegeneraciesParams *_this)
Destroys a heap-allocated instance of MR_FixMeshDegeneraciesParams. Does nothing if the pointer is nu...
MRC_API void MR_fixMultipleEdges_1(MR_Mesh *mesh)
MRC_API bool MR_hasMultipleEdges(const MR_MeshTopology *topology)
MRC_API const float * MR_FixMeshDegeneraciesParams_Get_maxDeviation(const MR_FixMeshDegeneraciesParams *_this)
struct MR_std_vector_std_pair_MR_VertId_MR_VertId MR_std_vector_std_pair_MR_VertId_MR_VertId
Definition MRMeshFixer.h:24
MRC_API MR_expected_MR_UndirectedEdgeBitSet_std_string * MR_findShortEdges(const MR_MeshPart *mp, float criticalLength, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_ConstructFromAnother(const MR_FixCreasesParams *_other)
struct MR_FixCreasesParams MR_FixCreasesParams
Definition MRMeshFixer.h:44
MRC_API void MR_FixMeshDegeneraciesParams_Set_criticalTriAspectRatio(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API float * MR_FixCreasesParams_GetMutable_creaseAngle(MR_FixCreasesParams *_this)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_AssignFromAnother(MR_FixCreasesParams *_this, const MR_FixCreasesParams *_other)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_OffsetMutablePtr(MR_FixMeshDegeneraciesParams *ptr, ptrdiff_t i)
struct MR_expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string MR_expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string
Definition MRMeshFixer.h:21
MRC_API void MR_FixMeshDegeneraciesParams_Set_maxDeviation(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API const bool * MR_FixMeshDegeneraciesParams_Get_mimicPatch(const MR_FixMeshDegeneraciesParams *_this)
MRC_API const MR_FindDisorientationParams_RayMode * MR_FindDisorientationParams_Get_mode(const MR_FindDisorientationParams *_this)
MRC_API float * MR_FixMeshDegeneraciesParams_GetMutable_stabilizer(MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_VertBitSet * MR_findInnerVertsOfDegree(const MR_MeshTopology *topology, int n, const MR_VertBitSet *region)
MRC_API MR_VertBitSet * MR_findRepeatedVertsOnHoleBd(const MR_MeshTopology *topology)
MRC_API MR_EdgeId MR_isVertexRepeatedOnHoleBd(const MR_MeshTopology *topology, MR_VertId v)
MRC_API void MR_FindDisorientationParams_Destroy(const MR_FindDisorientationParams *_this)
Destroys a heap-allocated instance of MR_FindDisorientationParams. Does nothing if the pointer is nul...
MRC_API const MR_std_function_bool_from_float * MR_FixMeshDegeneraciesParams_Get_cb(const MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_DefaultConstructArray(size_t num_elems)
MRC_API const float * MR_FixMeshDegeneraciesParams_Get_tinyEdgeLength(const MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_expected_void_std_string * MR_fixMeshDegeneracies(MR_Mesh *mesh, const MR_FixMeshDegeneraciesParams *params)
MRC_API bool MR_isEdgeBetweenDoubleTris(const MR_MeshTopology *topology, MR_EdgeId e)
MRC_API const float * MR_FixMeshDegeneraciesParams_Get_stabilizer(const MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_DefaultConstructArray(size_t num_elems)
MRC_API void MR_FixMeshDegeneraciesParams_Set_mode(MR_FixMeshDegeneraciesParams *_this, MR_FixMeshDegeneraciesParams_Mode value)
MRC_API void MR_FindDisorientationParams_DestroyArray(const MR_FindDisorientationParams *_this)
Destroys a heap-allocated array of MR_FindDisorientationParams. Does nothing if the pointer is null.
MRC_API int MR_eliminateDegree3Vertices(MR_MeshTopology *topology, MR_VertBitSet *region, MR_FaceBitSet *fs)
MRC_API MR_EdgeId MR_eliminateDoubleTris(MR_MeshTopology *topology, MR_EdgeId e, MR_FaceBitSet *region)
MRC_API MR_EdgeId MR_eliminateDegree3Dest(MR_MeshTopology *topology, MR_EdgeId e, MR_FaceBitSet *region)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_OffsetMutablePtr(MR_FindDisorientationParams *ptr, ptrdiff_t i)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_AssignFromAnother(MR_FixMeshDegeneraciesParams *_this, MR_PassBy _other_pass_by, MR_FixMeshDegeneraciesParams *_other)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_ConstructFromAnother(MR_PassBy _other_pass_by, MR_FindDisorientationParams *_other)
MRC_API MR_FindDisorientationParams_RayMode * MR_FindDisorientationParams_GetMutable_mode(MR_FindDisorientationParams *_this)
MRC_API int MR_duplicateMultiHoleVertices(MR_Mesh *mesh)
MRC_API void MR_FixCreasesParams_Destroy(const MR_FixCreasesParams *_this)
Destroys a heap-allocated instance of MR_FixCreasesParams. Does nothing if the pointer is null.
MRC_API const bool * MR_FindDisorientationParams_Get_virtualFillHoles(const MR_FindDisorientationParams *_this)
MRC_API float * MR_FixMeshDegeneraciesParams_GetMutable_maxAngleChange(MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_std_function_bool_from_float * MR_FixMeshDegeneraciesParams_GetMutable_cb(MR_FixMeshDegeneraciesParams *_this)
MRC_API float * MR_FixMeshDegeneraciesParams_GetMutable_criticalTriAspectRatio(MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_AssignFromAnother(MR_FindDisorientationParams *_this, MR_PassBy _other_pass_by, MR_FindDisorientationParams *_other)
struct MR_FindDisorientationParams MR_FindDisorientationParams
Definition MRMeshFixer.h:60
MRC_API void MR_eliminateDoubleTrisAround(MR_MeshTopology *topology, MR_VertId v, MR_FaceBitSet *region)
struct MR_expected_MR_UndirectedEdgeBitSet_std_string MR_expected_MR_UndirectedEdgeBitSet_std_string
Definition MRMeshFixer.h:20
MRC_API const MR_FixMeshDegeneraciesParams_Mode * MR_FixMeshDegeneraciesParams_Get_mode(const MR_FixMeshDegeneraciesParams *_this)
MRC_API const MR_FindDisorientationParams * MR_FindDisorientationParams_OffsetPtr(const MR_FindDisorientationParams *ptr, ptrdiff_t i)
MRC_API MR_FaceBitSet * MR_findHoleComplicatingFaces(const MR_Mesh *mesh)
MRC_API bool MR_isDegree3Dest(const MR_MeshTopology *topology, MR_EdgeId e)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_DefaultConstructArray(size_t num_elems)
MRC_API void MR_FixCreasesParams_Set_criticalTriAspectRatio(MR_FixCreasesParams *_this, float value)
MRC_API float * MR_FixMeshDegeneraciesParams_GetMutable_tinyEdgeLength(MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_ConstructFrom(MR_FindDisorientationParams_RayMode mode, bool virtualFillHoles, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API const float * MR_FixCreasesParams_Get_criticalTriAspectRatio(const MR_FixCreasesParams *_this)
MRC_API const float * MR_FixMeshDegeneraciesParams_Get_criticalTriAspectRatio(const MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_DefaultConstruct(void)
MRC_API MR_FixMeshDegeneraciesParams_Mode * MR_FixMeshDegeneraciesParams_GetMutable_mode(MR_FixMeshDegeneraciesParams *_this)
MRC_API const MR_FixCreasesParams * MR_FixCreasesParams_OffsetPtr(const MR_FixCreasesParams *ptr, ptrdiff_t i)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_ConstructFrom(float maxDeviation, float tinyEdgeLength, float criticalTriAspectRatio, float maxAngleChange, float stabilizer, MR_FaceBitSet *region, MR_FixMeshDegeneraciesParams_Mode mode, bool mimicPatch, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MR_FixMeshDegeneraciesParams_Mode
Definition MRMeshFixer.h:28
@ MR_FixMeshDegeneraciesParams_Mode_RemeshPatch
Definition MRMeshFixer.h:34
@ MR_FixMeshDegeneraciesParams_Mode_Remesh
if both decimation and subdivision does not succeed, removes degenerate areas and fills occurred hole...
Definition MRMeshFixer.h:32
@ MR_FixMeshDegeneraciesParams_Mode_Decimate
use decimation only to fix degeneracies
Definition MRMeshFixer.h:30
MRC_API void MR_fixMeshCreases(MR_Mesh *mesh, const MR_FixCreasesParams *params)
MRC_API float * MR_FixMeshDegeneraciesParams_GetMutable_maxDeviation(MR_FixMeshDegeneraciesParams *_this)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_OffsetMutablePtr(MR_FixCreasesParams *ptr, ptrdiff_t i)
MRC_API const MR_std_function_bool_from_float * MR_FindDisorientationParams_Get_cb(const MR_FindDisorientationParams *_this)
MRC_API MR_expected_std_vector_std_pair_MR_VertId_MR_VertId_std_string * MR_findMultipleEdges(const MR_MeshTopology *topology, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API float * MR_FixCreasesParams_GetMutable_criticalTriAspectRatio(MR_FixCreasesParams *_this)
MRC_API MR_std_function_bool_from_float * MR_FindDisorientationParams_GetMutable_cb(MR_FindDisorientationParams *_this)
MRC_API MR_FaceBitSet *const * MR_FixMeshDegeneraciesParams_Get_region(const MR_FixMeshDegeneraciesParams *_this)
MR_FindDisorientationParams_RayMode
Mode of detecting disoriented face.
Definition MRMeshFixer.h:48
@ MR_FindDisorientationParams_RayMode_Positive
positive (normal) direction of face should have even number of intersections
Definition MRMeshFixer.h:50
@ MR_FindDisorientationParams_RayMode_Shallowest
both direction should have correct number of intersections (positive - even; negative - odd)
Definition MRMeshFixer.h:52
@ MR_FindDisorientationParams_RayMode_Both
Definition MRMeshFixer.h:54
MRC_API void MR_FixCreasesParams_Set_maxIters(MR_FixCreasesParams *_this, int value)
MRC_API MR_FindDisorientationParams * MR_FindDisorientationParams_DefaultConstruct(void)
MRC_API MR_expected_MR_FaceBitSet_std_string * MR_findDegenerateFaces(const MR_MeshPart *mp, const float *criticalAspectRatio, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API MR_expected_MR_FaceBitSet_std_string * MR_findNotSmoothFaces(const MR_MeshPart *mp, const float *minAngle, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API void MR_FindDisorientationParams_Set_mode(MR_FindDisorientationParams *_this, MR_FindDisorientationParams_RayMode value)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_ConstructFrom(float creaseAngle, float criticalTriAspectRatio, int maxIters)
MRC_API bool * MR_FixMeshDegeneraciesParams_GetMutable_mimicPatch(MR_FixMeshDegeneraciesParams *_this)
MRC_API const float * MR_FixCreasesParams_Get_creaseAngle(const MR_FixCreasesParams *_this)
MRC_API bool * MR_FindDisorientationParams_GetMutable_virtualFillHoles(MR_FindDisorientationParams *_this)
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_DefaultConstruct(void)
MRC_API void MR_FixMeshDegeneraciesParams_Set_maxAngleChange(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API MR_FaceBitSet ** MR_FixMeshDegeneraciesParams_GetMutable_region(MR_FixMeshDegeneraciesParams *_this)
MRC_API void MR_FixMeshDegeneraciesParams_Set_tinyEdgeLength(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API void MR_FindDisorientationParams_Set_cb(MR_FindDisorientationParams *_this, MR_PassBy value_pass_by, MR_std_function_bool_from_float *value)
MRC_API void MR_FixCreasesParams_DestroyArray(const MR_FixCreasesParams *_this)
Destroys a heap-allocated array of MR_FixCreasesParams. Does nothing if the pointer is null.
MRC_API void MR_FixMeshDegeneraciesParams_Set_cb(MR_FixMeshDegeneraciesParams *_this, MR_PassBy value_pass_by, MR_std_function_bool_from_float *value)
MRC_API int * MR_FixCreasesParams_GetMutable_maxIters(MR_FixCreasesParams *_this)
MRC_API void MR_FixMeshDegeneraciesParams_DestroyArray(const MR_FixMeshDegeneraciesParams *_this)
Destroys a heap-allocated array of MR_FixMeshDegeneraciesParams. Does nothing if the pointer is null.
MRC_API void MR_FixMeshDegeneraciesParams_Set_stabilizer(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API void MR_fixMultipleEdges_2(MR_Mesh *mesh, const MR_std_vector_std_pair_MR_VertId_MR_VertId *multipleEdges)
MRC_API void MR_FixMeshDegeneraciesParams_Set_region(MR_FixMeshDegeneraciesParams *_this, MR_FaceBitSet *value)
MRC_API MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_ConstructFromAnother(MR_PassBy _other_pass_by, MR_FixMeshDegeneraciesParams *_other)
MRC_API const MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_OffsetPtr(const MR_FixMeshDegeneraciesParams *ptr, ptrdiff_t i)
struct MR_FixMeshDegeneraciesParams MR_FixMeshDegeneraciesParams
Definition MRMeshFixer.h:39
MRC_API void MR_FixCreasesParams_Set_creaseAngle(MR_FixCreasesParams *_this, float value)
MRC_API void MR_FixMeshDegeneraciesParams_Set_mimicPatch(MR_FixMeshDegeneraciesParams *_this, bool value)
MR_PassBy
Definition common.h:23
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRId.h:147
Definition MRId.h:42