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#include <stdint.h>
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15typedef struct MR_FaceBitSet MR_FaceBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
16typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
17typedef struct MR_MeshPart MR_MeshPart; // Defined in `#include <MRCMesh/MRMeshPart.h>`.
18typedef struct MR_MeshTopology MR_MeshTopology; // Defined in `#include <MRCMesh/MRMeshTopology.h>`.
19typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
20typedef struct MR_expected_MR_FaceBitSet_std_string MR_expected_MR_FaceBitSet_std_string; // Defined in `#include <MRCMisc/expected_MR_FaceBitSet_std_string.h>`.
21typedef struct MR_expected_MR_UndirectedEdgeBitSet_std_string MR_expected_MR_UndirectedEdgeBitSet_std_string; // Defined in `#include <MRCMisc/expected_MR_UndirectedEdgeBitSet_std_string.h>`.
22typedef 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>`.
23typedef struct MR_expected_void_std_string MR_expected_void_std_string; // Defined in `#include <MRCMisc/expected_void_std_string.h>`.
24typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
25typedef 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>`.
26
27
30
32enum // MR_FixMeshDegeneraciesParams_Mode
33{
40};
41
45
49
52enum // MR_FindDisorientationParams_RayMode
53{
60};
61
66
72
76
82
87
95
102
108
113
119
125
130
136
143
149
156
162
167
173
180
186
193
199
204
210
215
219
224
229
233
238
242
247
250MRC_API MR_FixMeshDegeneraciesParams *MR_FixMeshDegeneraciesParams_ConstructFrom(float maxDeviation, float tinyEdgeLength, float criticalTriAspectRatio, float maxAngleChange, float stabilizer, MR_FaceBitSet *region, MR_FixMeshDegeneraciesParams_Mode mode, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb);
251
254
257
261
264
267
272
279
285MRC_API MR_VertBitSet *MR_findNRingVerts(const MR_MeshTopology *topology, int32_t n, const MR_VertBitSet *region);
286
291
300
307
312
321
330
336
342
350
356
361
367
373
378
384
390
395
401
405
410
413MRC_API MR_FixCreasesParams *MR_FixCreasesParams_ConstructFrom(float creaseAngle, float criticalTriAspectRatio, int32_t maxIters);
414
417
420
425
428
431
437
444
449
453
458
464
469
475
480
484
489
493
498
502
505
508
512
515
518
523
531
532#ifdef __cplusplus
533} // extern "C"
534#endif
struct MR_MeshTopology MR_MeshTopology
Definition MR2DContoursTriangulation.h:16
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_FaceBitSet MR_FaceBitSet
Definition MRAABBTreeBase.h:25
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:15
struct MR_MeshPart MR_MeshPart
Definition MRAABBTree.h:14
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:20
struct MR_Mesh MR_Mesh
Definition MRCtm.h:13
MRC_API MR_FixCreasesParams * MR_FixCreasesParams_ConstructFrom(float creaseAngle, float criticalTriAspectRatio, int32_t maxIters)
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 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)
@ MR_FindDisorientationParams_RayMode_Positive
positive (normal) direction of face should have even number of intersections
Definition MRMeshFixer.h:55
@ MR_FindDisorientationParams_RayMode_Shallowest
both direction should have correct number of intersections (positive - even; negative - odd)
Definition MRMeshFixer.h:57
@ MR_FindDisorientationParams_RayMode_Both
Definition MRMeshFixer.h:59
struct MR_std_vector_std_pair_MR_VertId_MR_VertId MR_std_vector_std_pair_MR_VertId_MR_VertId
Definition MRMeshFixer.h:25
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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:22
MRC_API void MR_FixMeshDegeneraciesParams_Set_maxDeviation(MR_FixMeshDegeneraciesParams *_this, float value)
MRC_API int32_t * MR_FixCreasesParams_GetMutable_maxIters(MR_FixCreasesParams *_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 void MR_FixCreasesParams_Set_maxIters(MR_FixCreasesParams *_this, int32_t value)
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 MR_FixMeshDegeneraciesParams * MR_FixMeshDegeneraciesParams_ConstructFrom(float maxDeviation, float tinyEdgeLength, float criticalTriAspectRatio, float maxAngleChange, float stabilizer, MR_FaceBitSet *region, MR_FixMeshDegeneraciesParams_Mode mode, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
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 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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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 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:48
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:21
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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 const int32_t * MR_FixCreasesParams_Get_maxIters(const MR_FixCreasesParams *_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 int32_t MR_duplicateMultiHoleVertices(MR_Mesh *mesh)
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
int32_t MR_FindDisorientationParams_RayMode
Mode of detecting disoriented face.
Definition MRMeshFixer.h:51
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)
@ MR_FixMeshDegeneraciesParams_Mode_RemeshPatch
Definition MRMeshFixer.h:39
@ MR_FixMeshDegeneraciesParams_Mode_Remesh
if both decimation and subdivision does not succeed, removes degenerate areas and fills occurred hole...
Definition MRMeshFixer.h:37
@ MR_FixMeshDegeneraciesParams_Mode_Decimate
use decimation only to fix degeneracies
Definition MRMeshFixer.h:35
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)
int32_t MR_FixMeshDegeneraciesParams_Mode
Definition MRMeshFixer.h:31
MRC_API MR_FaceBitSet *const * MR_FixMeshDegeneraciesParams_Get_region(const MR_FixMeshDegeneraciesParams *_this)
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 void MR_FindDisorientationParams_Set_mode(MR_FindDisorientationParams *_this, MR_FindDisorientationParams_RayMode value)
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 MR_VertBitSet * MR_findNRingVerts(const MR_MeshTopology *topology, int32_t n, const MR_VertBitSet *region)
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API int32_t MR_eliminateDegree3Vertices(MR_MeshTopology *topology, MR_VertBitSet *region, MR_FaceBitSet *fs)
struct MR_FixMeshDegeneraciesParams MR_FixMeshDegeneraciesParams
Generated from class MR::FixMeshDegeneraciesParams.
Definition MRMeshFixer.h:29
MRC_API void MR_FixCreasesParams_Set_creaseAngle(MR_FixCreasesParams *_this, float value)
MR_PassBy
Definition common.h:19
#define MRC_API
Definition exports.h:11
Definition MRId.h:152
Definition MRId.h:56