MeshLib C Docs
Loading...
Searching...
No Matches
MRMeshSubdivide.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMisc/common.h>
4#include <MRCMisc/exports.h>
5
6#include <stdbool.h>
7#include <stddef.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13typedef struct MR_FaceBitSet MR_FaceBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
14typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
15typedef struct MR_MeshPart MR_MeshPart; // Defined in `#include <MRCMesh/MRMeshPart.h>`.
16typedef struct MR_ObjectMesh MR_ObjectMesh; // Defined in `#include <MRCMesh/MRObjectMesh.h>`.
17typedef struct MR_ObjectMeshData MR_ObjectMeshData; // Defined in `#include <MRCMesh/MRObjectMeshData.h>`.
18typedef struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
19typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
20typedef struct MR_expected_MR_Mesh_std_string MR_expected_MR_Mesh_std_string; // Defined in `#include <MRCMisc/expected_MR_Mesh_std_string.h>`.
21typedef struct MR_std_function_bool_from_MR_EdgeId MR_std_function_bool_from_MR_EdgeId; // Defined in `#include <MRCMisc/std_function_bool_from_MR_EdgeId.h>`.
22typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
23typedef struct MR_std_function_void_from_MR_EdgeId_MR_EdgeId MR_std_function_void_from_MR_EdgeId_MR_EdgeId; // Defined in `#include <MRCMisc/std_function_void_from_MR_EdgeId_MR_EdgeId.h>`.
24typedef struct MR_std_function_void_from_MR_VertId MR_std_function_void_from_MR_VertId; // Defined in `#include <MRCMisc/std_function_void_from_MR_VertId.h>`.
25
26
30
37
43
50
58
65
73
80
86
93
100
106
113
120
126
133
142
150
159
166
173
180
188
196
204
211
218
225
232
239
246
254
261
269
276
282
289
298
306
315
323
330
338
339// 30 degrees
345
346// 30 degrees
351
352// 30 degrees
358
365
371
378
385
392
399
406
413
420
427
434
441
448
455
462
466
471
483MRC_API MR_SubdivideSettings *MR_SubdivideSettings_ConstructFrom(float maxEdgeLen, float curvaturePriority, int maxEdgeSplits, float maxDeviationAfterFlip, float maxAngleChangeAfterFlip, float criticalAspectRatioFlip, MR_FaceBitSet *region, MR_FaceBitSet *maintainRegion, MR_UndirectedEdgeBitSet *notFlippable, MR_VertBitSet *newVerts, bool subdivideBorder, float maxTriAspectRatio, float maxSplittableTriAspectRatio, bool smoothMode, float minSharpDihedralAngle, bool projectOnOriginalMesh, MR_PassBy beforeEdgeSplit_pass_by, MR_std_function_bool_from_MR_EdgeId *beforeEdgeSplit, MR_PassBy onVertCreated_pass_by, MR_std_function_void_from_MR_VertId *onVertCreated, MR_PassBy onEdgeSplit_pass_by, MR_std_function_void_from_MR_EdgeId_MR_EdgeId *onEdgeSplit, MR_PassBy progressCallback_pass_by, MR_std_function_bool_from_float *progressCallback);
484
488
492
497
500
503
510
517MRC_API int MR_subdivideMesh_MR_Mesh(MR_Mesh *mesh, const MR_SubdivideSettings *settings);
518
526
535
542
543#ifdef __cplusplus
544} // extern "C"
545#endif
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet
Definition MRAABBTreeBase.h:28
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_ObjectMeshData MR_ObjectMeshData
Definition MRChangeMeshDataAction.h:15
struct MR_expected_MR_Mesh_std_string MR_expected_MR_Mesh_std_string
Definition MRCtm.h:24
struct MR_Mesh MR_Mesh
Definition MRCtm.h:16
struct MR_std_function_bool_from_MR_EdgeId MR_std_function_bool_from_MR_EdgeId
Definition MRFillHoleNicely.h:22
struct MR_std_function_void_from_MR_EdgeId_MR_EdgeId MR_std_function_void_from_MR_EdgeId_MR_EdgeId
Definition MRFillHoleNicely.h:23
struct MR_ObjectMesh MR_ObjectMesh
Definition MRMeshBooleanFacade.h:14
MRC_API const MR_std_function_bool_from_MR_EdgeId * MR_SubdivideSettings_Get_beforeEdgeSplit(const MR_SubdivideSettings *_this)
MRC_API MR_FaceBitSet *const * MR_SubdivideSettings_Get_maintainRegion(const MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_maxDeviationAfterFlip(MR_SubdivideSettings *_this, float value)
MRC_API const float * MR_SubdivideSettings_Get_maxAngleChangeAfterFlip(const MR_SubdivideSettings *_this)
MRC_API float * MR_SubdivideSettings_GetMutable_maxTriAspectRatio(MR_SubdivideSettings *_this)
MRC_API const float * MR_SubdivideSettings_Get_maxEdgeLen(const MR_SubdivideSettings *_this)
MRC_API MR_VertBitSet *const * MR_SubdivideSettings_Get_newVerts(const MR_SubdivideSettings *_this)
MRC_API const float * MR_SubdivideSettings_Get_maxTriAspectRatio(const MR_SubdivideSettings *_this)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_ConstructFrom(float maxEdgeLen, float curvaturePriority, int maxEdgeSplits, float maxDeviationAfterFlip, float maxAngleChangeAfterFlip, float criticalAspectRatioFlip, MR_FaceBitSet *region, MR_FaceBitSet *maintainRegion, MR_UndirectedEdgeBitSet *notFlippable, MR_VertBitSet *newVerts, bool subdivideBorder, float maxTriAspectRatio, float maxSplittableTriAspectRatio, bool smoothMode, float minSharpDihedralAngle, bool projectOnOriginalMesh, MR_PassBy beforeEdgeSplit_pass_by, MR_std_function_bool_from_MR_EdgeId *beforeEdgeSplit, MR_PassBy onVertCreated_pass_by, MR_std_function_void_from_MR_VertId *onVertCreated, MR_PassBy onEdgeSplit_pass_by, MR_std_function_void_from_MR_EdgeId_MR_EdgeId *onEdgeSplit, MR_PassBy progressCallback_pass_by, MR_std_function_bool_from_float *progressCallback)
MRC_API const float * MR_SubdivideSettings_Get_criticalAspectRatioFlip(const MR_SubdivideSettings *_this)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_DefaultConstruct(void)
MRC_API MR_std_function_bool_from_float * MR_SubdivideSettings_GetMutable_progressCallback(MR_SubdivideSettings *_this)
MRC_API MR_UndirectedEdgeBitSet *const * MR_SubdivideSettings_Get_notFlippable(const MR_SubdivideSettings *_this)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_DefaultConstructArray(size_t num_elems)
MRC_API void MR_SubdivideSettings_Set_smoothMode(MR_SubdivideSettings *_this, bool value)
MRC_API MR_std_function_void_from_MR_EdgeId_MR_EdgeId * MR_SubdivideSettings_GetMutable_onEdgeSplit(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_subdivideBorder(MR_SubdivideSettings *_this, bool value)
MRC_API void MR_SubdivideSettings_Set_minSharpDihedralAngle(MR_SubdivideSettings *_this, float value)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_OffsetMutablePtr(MR_SubdivideSettings *ptr, ptrdiff_t i)
MRC_API void MR_SubdivideSettings_DestroyArray(const MR_SubdivideSettings *_this)
Destroys a heap-allocated array of MR_SubdivideSettings. Does nothing if the pointer is null.
MRC_API const float * MR_SubdivideSettings_Get_minSharpDihedralAngle(const MR_SubdivideSettings *_this)
MRC_API MR_FaceBitSet ** MR_SubdivideSettings_GetMutable_region(MR_SubdivideSettings *_this)
MRC_API MR_expected_MR_Mesh_std_string * MR_copySubdividePackMesh(const MR_MeshPart *mp, float voxelSize, const MR_std_function_bool_from_float *cb)
MRC_API void MR_SubdivideSettings_Set_maintainRegion(MR_SubdivideSettings *_this, MR_FaceBitSet *value)
MRC_API const MR_SubdivideSettings * MR_SubdivideSettings_OffsetPtr(const MR_SubdivideSettings *ptr, ptrdiff_t i)
MRC_API void MR_SubdivideSettings_Set_onVertCreated(MR_SubdivideSettings *_this, MR_PassBy value_pass_by, MR_std_function_void_from_MR_VertId *value)
MRC_API int * MR_SubdivideSettings_GetMutable_maxEdgeSplits(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_newVerts(MR_SubdivideSettings *_this, MR_VertBitSet *value)
MRC_API void MR_SubdivideSettings_Set_maxEdgeSplits(MR_SubdivideSettings *_this, int value)
MRC_API const MR_std_function_bool_from_float * MR_SubdivideSettings_Get_progressCallback(const MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_curvaturePriority(MR_SubdivideSettings *_this, float value)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_AssignFromAnother(MR_SubdivideSettings *_this, MR_PassBy _other_pass_by, MR_SubdivideSettings *_other)
MRC_API MR_ObjectMeshData * MR_makeSubdividedObjectMeshData(const MR_ObjectMesh *obj, const MR_SubdivideSettings *settings)
MRC_API void MR_SubdivideSettings_Set_onEdgeSplit(MR_SubdivideSettings *_this, MR_PassBy value_pass_by, MR_std_function_void_from_MR_EdgeId_MR_EdgeId *value)
MRC_API const bool * MR_SubdivideSettings_Get_smoothMode(const MR_SubdivideSettings *_this)
MRC_API MR_SubdivideSettings * MR_SubdivideSettings_ConstructFromAnother(MR_PassBy _other_pass_by, MR_SubdivideSettings *_other)
MRC_API const float * MR_SubdivideSettings_Get_maxDeviationAfterFlip(const MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_maxTriAspectRatio(MR_SubdivideSettings *_this, float value)
MRC_API MR_FaceBitSet *const * MR_SubdivideSettings_Get_region(const MR_SubdivideSettings *_this)
MRC_API int MR_subdivideMesh_MR_Mesh(MR_Mesh *mesh, const MR_SubdivideSettings *settings)
MRC_API const MR_std_function_void_from_MR_VertId * MR_SubdivideSettings_Get_onVertCreated(const MR_SubdivideSettings *_this)
MRC_API float * MR_SubdivideSettings_GetMutable_curvaturePriority(MR_SubdivideSettings *_this)
MRC_API MR_UndirectedEdgeBitSet ** MR_SubdivideSettings_GetMutable_notFlippable(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_notFlippable(MR_SubdivideSettings *_this, MR_UndirectedEdgeBitSet *value)
MRC_API const bool * MR_SubdivideSettings_Get_subdivideBorder(const MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_maxEdgeLen(MR_SubdivideSettings *_this, float value)
MRC_API void MR_SubdivideSettings_Destroy(const MR_SubdivideSettings *_this)
Destroys a heap-allocated instance of MR_SubdivideSettings. Does nothing if the pointer is null.
MRC_API MR_std_function_void_from_MR_VertId * MR_SubdivideSettings_GetMutable_onVertCreated(MR_SubdivideSettings *_this)
MRC_API bool * MR_SubdivideSettings_GetMutable_subdivideBorder(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_projectOnOriginalMesh(MR_SubdivideSettings *_this, bool value)
MRC_API void MR_SubdivideSettings_Set_maxSplittableTriAspectRatio(MR_SubdivideSettings *_this, float value)
struct MR_std_function_void_from_MR_VertId MR_std_function_void_from_MR_VertId
Definition MRMeshSubdivide.h:24
MRC_API void MR_SubdivideSettings_Set_region(MR_SubdivideSettings *_this, MR_FaceBitSet *value)
MRC_API const MR_std_function_void_from_MR_EdgeId_MR_EdgeId * MR_SubdivideSettings_Get_onEdgeSplit(const MR_SubdivideSettings *_this)
MRC_API int MR_subdivideMesh_MR_ObjectMeshData(MR_ObjectMeshData *data, const MR_SubdivideSettings *settings)
MRC_API float * MR_SubdivideSettings_GetMutable_maxAngleChangeAfterFlip(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_criticalAspectRatioFlip(MR_SubdivideSettings *_this, float value)
MRC_API MR_std_function_bool_from_MR_EdgeId * MR_SubdivideSettings_GetMutable_beforeEdgeSplit(MR_SubdivideSettings *_this)
MRC_API bool * MR_SubdivideSettings_GetMutable_smoothMode(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_beforeEdgeSplit(MR_SubdivideSettings *_this, MR_PassBy value_pass_by, MR_std_function_bool_from_MR_EdgeId *value)
MRC_API float * MR_SubdivideSettings_GetMutable_maxSplittableTriAspectRatio(MR_SubdivideSettings *_this)
MRC_API float * MR_SubdivideSettings_GetMutable_maxDeviationAfterFlip(MR_SubdivideSettings *_this)
MRC_API float * MR_SubdivideSettings_GetMutable_maxEdgeLen(MR_SubdivideSettings *_this)
MRC_API const float * MR_SubdivideSettings_Get_maxSplittableTriAspectRatio(const MR_SubdivideSettings *_this)
MRC_API bool * MR_SubdivideSettings_GetMutable_projectOnOriginalMesh(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_progressCallback(MR_SubdivideSettings *_this, MR_PassBy value_pass_by, MR_std_function_bool_from_float *value)
MRC_API float * MR_SubdivideSettings_GetMutable_criticalAspectRatioFlip(MR_SubdivideSettings *_this)
MRC_API float * MR_SubdivideSettings_GetMutable_minSharpDihedralAngle(MR_SubdivideSettings *_this)
MRC_API MR_VertBitSet ** MR_SubdivideSettings_GetMutable_newVerts(MR_SubdivideSettings *_this)
MRC_API const float * MR_SubdivideSettings_Get_curvaturePriority(const MR_SubdivideSettings *_this)
MRC_API const bool * MR_SubdivideSettings_Get_projectOnOriginalMesh(const MR_SubdivideSettings *_this)
struct MR_SubdivideSettings MR_SubdivideSettings
Definition MRMeshSubdivide.h:29
MRC_API MR_FaceBitSet ** MR_SubdivideSettings_GetMutable_maintainRegion(MR_SubdivideSettings *_this)
MRC_API void MR_SubdivideSettings_Set_maxAngleChangeAfterFlip(MR_SubdivideSettings *_this, float value)
MRC_API const int * MR_SubdivideSettings_Get_maxEdgeSplits(const MR_SubdivideSettings *_this)