MeshLib C++ Docs
Loading...
Searching...
No Matches
MRMesh/MRFillHoleNicely.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRMeshFillHole.h"
5#include "MREnums.h"
6
7namespace MR
8{
9
11{
14
16 bool triangulateOnly = false;
17
19 float maxEdgeLen = 0;
20
22 int maxEdgeSplits = 1000;
23
25 float maxAngleChangeAfterFlip = 30 * PI_F / 180.0f;
26
28 bool smoothCurvature = true;
29
31 bool naturalSmooth = false;
32
34 std::function<bool( EdgeId e )> beforeEdgeSplit;
35
37 std::function<void( EdgeId e1, EdgeId e )> onEdgeSplit;
38
41
43 VertUVCoords * uvCoords = {};
44
46 VertColors * colorMap = {};
47};
48
53MRMESH_API FaceBitSet fillHoleNicely( Mesh & mesh,
54 EdgeId holeEdge,
55 const FillHoleNicelySettings & settings );
56
57} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
MRMESH_API FaceBitSet fillHoleNicely(Mesh &mesh, EdgeId holeEdge, const FillHoleNicelySettings &settings)
EdgeWeights
determines the weight of each edge in applications like Laplacian
Definition MREnums.h:8
@ Cotan
edge weight depends on local geometry and uses cotangent values
Definition MRMesh/MRFillHoleNicely.h:11
EdgeWeights edgeWeights
edge weighting scheme for smoothCurvature mode
Definition MRMesh/MRFillHoleNicely.h:40
float maxAngleChangeAfterFlip
Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than ...
Definition MRMesh/MRFillHoleNicely.h:25
std::function< void(EdgeId e1, EdgeId e)> onEdgeSplit
(If this is set) this function is called in subdivision each time edge (e) is split into (e1->e),...
Definition MRMesh/MRFillHoleNicely.h:37
FillHoleParams triangulateParams
how to triangulate the hole, must be specified by the user
Definition MRMesh/MRFillHoleNicely.h:13
bool triangulateOnly
If false then additional vertices are created inside the patch for best mesh quality.
Definition MRMesh/MRFillHoleNicely.h:16
std::function< bool(EdgeId e)> beforeEdgeSplit
(If this is set) this function is called in subdivision each time edge (e) is going to split,...
Definition MRMesh/MRFillHoleNicely.h:34
int maxEdgeSplits
Maximum number of edge splits allowed during subdivision.
Definition MRMesh/MRFillHoleNicely.h:22
VertUVCoords * uvCoords
optional uv-coordinates of vertices; if provided then elements corresponding to new vertices will be ...
Definition MRMesh/MRFillHoleNicely.h:43
bool smoothCurvature
Whether to make patch over the hole smooth both inside and on its boundary with existed surface.
Definition MRMesh/MRFillHoleNicely.h:28
bool naturalSmooth
Additionally smooth 3 layers of vertices near hole boundary both inside and outside of the hole.
Definition MRMesh/MRFillHoleNicely.h:31
float maxEdgeLen
Subdivision is stopped when all edges inside or on the boundary of the region are not longer than thi...
Definition MRMesh/MRFillHoleNicely.h:19
VertColors * colorMap
optional colors of vertices; if provided then elements corresponding to new vertices will be added th...
Definition MRMesh/MRFillHoleNicely.h:46
Parameters structure for MR::fillHole Structure has some options to control MR::fillHole.
Definition MRMesh/MRMesh.h:23