MeshLib C++ Docs
Loading...
Searching...
No Matches
MRNormalDenoising.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
5#include "MRExpected.h"
6
7namespace MR
8{
11
12
19MRMESH_API void denoiseNormals( const Mesh & mesh, FaceNormals & normals, const Vector<float, UndirectedEdgeId> & v, float gamma );
20
27MRMESH_API void updateIndicator( const Mesh & mesh, Vector<float, UndirectedEdgeId> & v, const FaceNormals & normals, float beta, float gamma );
28
34MRMESH_API void updateIndicatorFast( const MeshTopology & topology, Vector<float, UndirectedEdgeId> & v, const FaceNormals & normals, float beta, float gamma );
35
37{
40
42 float beta = 0.01f;
43
45 float gamma = 5.f;
46
48 int normalIters = 10;
49
51 int pointIters = 20;
52
54 float guideWeight = 1;
55
57 bool limitNearInitial = false;
58
60 float maxInitialDist = 0;
61
63 UndirectedEdgeBitSet * outCreases = nullptr;
64
66 ProgressCallback cb = {};
67};
68
71MRMESH_API Expected<void> meshDenoiseViaNormals( Mesh & mesh, const DenoiseViaNormalsSettings & settings = {} );
72
73}
Definition MRMeshTopology.h:22
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:23
int normalIters
the number of iterations to smooth normals and find creases; the more the better quality,...
Definition MRNormalDenoising.h:48
MRMESH_API void updateIndicatorFast(const MeshTopology &topology, Vector< float, UndirectedEdgeId > &v, const FaceNormals &normals, float beta, float gamma)
MRMESH_API void denoiseNormals(const Mesh &mesh, FaceNormals &normals, const Vector< float, UndirectedEdgeId > &v, float gamma)
ProgressCallback cb
to get the progress and optionally cancel
Definition MRNormalDenoising.h:66
float guideWeight
how much resulting points must be attracted to initial points (e.g. to avoid general shrinkage),...
Definition MRNormalDenoising.h:54
MRMESH_API Expected< void > meshDenoiseViaNormals(Mesh &mesh, const DenoiseViaNormalsSettings &settings={})
tl::expected< T, E > Expected
Definition MRExpected.h:31
MRMESH_API void updateIndicator(const Mesh &mesh, Vector< float, UndirectedEdgeId > &v, const FaceNormals &normals, float beta, float gamma)
int pointIters
the number of iterations to update vertex coordinates from found normals; the more the better quality...
Definition MRNormalDenoising.h:51
float beta
0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges
Definition MRNormalDenoising.h:42
float maxInitialDist
maximum distance between a point and its position before relaxation, ignored if limitNearInitial = fa...
Definition MRNormalDenoising.h:60
float gamma
the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ...
Definition MRNormalDenoising.h:45
bool fastIndicatorComputation
use approximated computation, which is much faster than precise solution
Definition MRNormalDenoising.h:39
UndirectedEdgeBitSet * outCreases
optionally returns creases found during smoothing
Definition MRNormalDenoising.h:63
bool limitNearInitial
if true then maximal displacement of each point during denoising will be limited
Definition MRNormalDenoising.h:57
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRNormalDenoising.h:37
Definition MRMesh.h:23