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 UndirectedEdgeBitSet* notFlippable = nullptr;
20
22 float maxEdgeLen = 0;
23
25 int maxEdgeSplits = 1000;
26
28 float maxAngleChangeAfterFlip = 30 * PI_F / 180.0f;
29
31 bool smoothCurvature = true;
32
34 bool naturalSmooth = false;
35
37 std::function<bool( EdgeId e )> beforeEdgeSplit;
38
40 std::function<void( EdgeId e1, EdgeId e )> onEdgeSplit;
41
44
47
49 VertUVCoords * uvCoords = {};
50
52 VertColors * colorMap = {};
53
55 FaceColors * faceColors = {};
56};
57
62MRMESH_API FaceBitSet fillHoleNicely( Mesh & mesh,
63 EdgeId holeEdge,
64 const FillHoleNicelySettings & settings );
65
66} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
Definition MRCameraOrientationPlugin.h:8
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:20
@ Cotan
edge weight depends on local geometry and uses cotangent values
VertexMass
determines the weight or mass of each vertex in applications like Laplacian
Definition MREnums.h:10
@ Unit
all vertices have same mass=1
Definition MRMesh/MRFillHoleNicely.h:11
EdgeWeights edgeWeights
edge weighting scheme for smoothCurvature mode
Definition MRMesh/MRFillHoleNicely.h:43
float maxAngleChangeAfterFlip
Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than ...
Definition MRMesh/MRFillHoleNicely.h:28
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:40
FillHoleParams triangulateParams
how to triangulate the hole, must be specified by the user
Definition MRMesh/MRFillHoleNicely.h:13
FaceColors * faceColors
optional colors of faces; if provided then elements corresponding to new faces will be added there
Definition MRMesh/MRFillHoleNicely.h:55
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:37
int maxEdgeSplits
Maximum number of edge splits allowed during subdivision.
Definition MRMesh/MRFillHoleNicely.h:25
VertUVCoords * uvCoords
optional uv-coordinates of vertices; if provided then elements corresponding to new vertices will be ...
Definition MRMesh/MRFillHoleNicely.h:49
UndirectedEdgeBitSet * notFlippable
in triangulateOnly = false mode, edges specified by this bit-set will never be flipped,...
Definition MRMesh/MRFillHoleNicely.h:19
VertexMass vmass
vertex mass scheme for smoothCurvature mode
Definition MRMesh/MRFillHoleNicely.h:46
bool smoothCurvature
Whether to make patch over the hole smooth both inside and on its boundary with existed surface.
Definition MRMesh/MRFillHoleNicely.h:31
bool naturalSmooth
Additionally smooth 3 layers of vertices near hole boundary both inside and outside of the hole.
Definition MRMesh/MRFillHoleNicely.h:34
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:22
VertColors * colorMap
optional colors of vertices; if provided then elements corresponding to new vertices will be added th...
Definition MRMesh/MRFillHoleNicely.h:52
Parameters structure for MR::fillHole Structure has some options to control MR::fillHole.
Definition MRMesh/MRMesh.h:23