MeshLib C# Docs
Loading...
Searching...
No Matches
MR.RemeshSettings Class Reference

Generated from class MR.RemeshSettings. This is the non-const half of the class. More...

Inheritance diagram for MR.RemeshSettings:

Public Member Functions

unsafe RemeshSettings ()
 Constructs an empty (default-constructed) instance.
unsafe RemeshSettings (float targetEdgeLen, int maxEdgeSplits, float maxAngleChangeAfterFlip, bool frozenBoundary, float maxBdShift, bool useCurvature, float maxSplittableTriAspectRatio, int finalRelaxIters, bool finalRelaxNoShrinkage, MR.FaceBitSet? region, MR.UndirectedEdgeBitSet? notFlippable, bool packMesh, bool projectOnOriginalMesh, MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeSplit, MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeDel, MR.Std._ByValue_Function_BoolFuncFromMREdgeIdConstMRVector3fRef preCollapse, MR.Std._ByValue_Function_BoolFuncFromFloat progressCallback)
 Constructs MR.RemeshSettings elementwise.
unsafe RemeshSettings (MR._ByValue_RemeshSettings _other)
 Generated from constructor MR.RemeshSettings.RemeshSettings.
 RemeshSettings (Const_RemeshSettings _other)
 Generated from constructor MR.RemeshSettings.RemeshSettings.
 RemeshSettings (RemeshSettings _other)
 Generated from constructor MR.RemeshSettings.RemeshSettings.
unsafe MR.RemeshSettings assign (MR._ByValue_RemeshSettings _other)
 Generated from method MR::RemeshSettings::operator=.

Properties

new unsafe ref float targetEdgeLen [get]
 the algorithm will try to keep the length of all edges close to this value, splitting the edges longer than targetEdgeLen, and then eliminating the edges shorter than targetEdgeLen
new unsafe ref int maxEdgeSplits [get]
 Maximum number of edge splits allowed during subdivision.
new unsafe ref float maxAngleChangeAfterFlip [get]
 Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than on this value.
new unsafe ref bool frozenBoundary [get]
 Allows or prohibits splitting and/or collapse boundary edges it recommended to keep default value here for better quality.
new unsafe ref float maxBdShift [get]
 Maximal shift of a boundary during one edge collapse only makes sense if frozenBoundary=false
new unsafe ref bool useCurvature [get]
 This option in subdivision works best for natural surfaces, where all triangles are close to equilateral and have similar area, and no sharp edges in between.
new unsafe ref float maxSplittableTriAspectRatio [get]
 An edge is subdivided only if both its left and right triangles have aspect ratio below or equal to this value. So this is a maximum aspect ratio of a triangle that can be split on two before Delone optimization. Please set it to a smaller value only if frozenBoundary==true, otherwise many narrow triangles can appear near border.
new unsafe ref int finalRelaxIters [get]
 the number of iterations of final relaxation of mesh vertices; few iterations can give almost perfect uniformity of the vertices and edge lengths but deviate from the original surface
new unsafe ref bool finalRelaxNoShrinkage [get]
 if true prevents the surface from shrinkage after many iterations
new unsafe MR.? FaceBitSet region [get, set]
 Region on mesh to be changed, it is updated during the operation.
new unsafe MR.? UndirectedEdgeBitSet notFlippable [get, set]
 Edges specified by this bit-set will never be flipped or collapsed, but they can be replaced during collapse of nearby edges so it is updated during the operation; also the vertices incident to these edges are excluded from relaxation.
new unsafe ref bool packMesh [get]
 whether to pack mesh at the end
new unsafe ref bool projectOnOriginalMesh [get]
 if true, then every new vertex after subdivision will be projected on the original mesh (before smoothing); this does not affect the vertices moved on other stages of the processing
new unsafe MR.Std.Function_Void_From_MREdgeId_MREdgeId onEdgeSplit [get, protected set]
 this function is called each time edge (e) is split into (e1->e), but before the ring is made Delone
new unsafe MR.Std.Function_Void_From_MREdgeId_MREdgeId onEdgeDel [get, protected set]
 if valid (e1) is given then dest(e) = dest(e1) and their origins are in different ends of collapsing edge, e1 shall take the place of e
new unsafe MR.Std.Function_Bool_From_MREdgeId_ConstMRVector3fRef preCollapse [get, protected set]
 The user can provide this optional callback that is invoked immediately before edge collapse;.
new unsafe MR.Std.Function_Bool_From_Float progressCallback [get, protected set]
 callback to report algorithm progress and cancel it by user request

Detailed Description

Generated from class MR.RemeshSettings. This is the non-const half of the class.

Constructor & Destructor Documentation

◆ RemeshSettings() [1/5]

unsafe MR.RemeshSettings.RemeshSettings ( )
inline

Constructs an empty (default-constructed) instance.

◆ RemeshSettings() [2/5]

unsafe MR.RemeshSettings.RemeshSettings ( float targetEdgeLen,
int maxEdgeSplits,
float maxAngleChangeAfterFlip,
bool frozenBoundary,
float maxBdShift,
bool useCurvature,
float maxSplittableTriAspectRatio,
int finalRelaxIters,
bool finalRelaxNoShrinkage,
MR.FaceBitSet? region,
MR.UndirectedEdgeBitSet? notFlippable,
bool packMesh,
bool projectOnOriginalMesh,
MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeSplit,
MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeDel,
MR.Std._ByValue_Function_BoolFuncFromMREdgeIdConstMRVector3fRef preCollapse,
MR.Std._ByValue_Function_BoolFuncFromFloat progressCallback )
inline

Constructs MR.RemeshSettings elementwise.

◆ RemeshSettings() [3/5]

unsafe MR.RemeshSettings.RemeshSettings ( MR._ByValue_RemeshSettings _other)
inline

Generated from constructor MR.RemeshSettings.RemeshSettings.

◆ RemeshSettings() [4/5]

MR.RemeshSettings.RemeshSettings ( Const_RemeshSettings _other)
inline

Generated from constructor MR.RemeshSettings.RemeshSettings.

◆ RemeshSettings() [5/5]

MR.RemeshSettings.RemeshSettings ( RemeshSettings _other)
inline

Generated from constructor MR.RemeshSettings.RemeshSettings.

Member Function Documentation

◆ assign()

unsafe MR.RemeshSettings MR.RemeshSettings.assign ( MR._ByValue_RemeshSettings _other)
inline

Generated from method MR::RemeshSettings::operator=.

Property Documentation

◆ finalRelaxIters

new unsafe ref int MR.RemeshSettings.finalRelaxIters
get

the number of iterations of final relaxation of mesh vertices; few iterations can give almost perfect uniformity of the vertices and edge lengths but deviate from the original surface

◆ finalRelaxNoShrinkage

new unsafe ref bool MR.RemeshSettings.finalRelaxNoShrinkage
get

if true prevents the surface from shrinkage after many iterations

◆ frozenBoundary

new unsafe ref bool MR.RemeshSettings.frozenBoundary
get

Allows or prohibits splitting and/or collapse boundary edges it recommended to keep default value here for better quality.

◆ maxAngleChangeAfterFlip

new unsafe ref float MR.RemeshSettings.maxAngleChangeAfterFlip
get

Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than on this value.

◆ maxBdShift

new unsafe ref float MR.RemeshSettings.maxBdShift
get

Maximal shift of a boundary during one edge collapse only makes sense if frozenBoundary=false

◆ maxEdgeSplits

new unsafe ref int MR.RemeshSettings.maxEdgeSplits
get

Maximum number of edge splits allowed during subdivision.

◆ maxSplittableTriAspectRatio

new unsafe ref float MR.RemeshSettings.maxSplittableTriAspectRatio
get

An edge is subdivided only if both its left and right triangles have aspect ratio below or equal to this value. So this is a maximum aspect ratio of a triangle that can be split on two before Delone optimization. Please set it to a smaller value only if frozenBoundary==true, otherwise many narrow triangles can appear near border.

◆ notFlippable

new unsafe MR.? UndirectedEdgeBitSet MR.RemeshSettings.notFlippable
getset

Edges specified by this bit-set will never be flipped or collapsed, but they can be replaced during collapse of nearby edges so it is updated during the operation; also the vertices incident to these edges are excluded from relaxation.

◆ onEdgeDel

new unsafe MR.Std.Function_Void_From_MREdgeId_MREdgeId MR.RemeshSettings.onEdgeDel
getprotected set

if valid (e1) is given then dest(e) = dest(e1) and their origins are in different ends of collapsing edge, e1 shall take the place of e

◆ onEdgeSplit

new unsafe MR.Std.Function_Void_From_MREdgeId_MREdgeId MR.RemeshSettings.onEdgeSplit
getprotected set

this function is called each time edge (e) is split into (e1->e), but before the ring is made Delone

◆ packMesh

new unsafe ref bool MR.RemeshSettings.packMesh
get

whether to pack mesh at the end

◆ preCollapse

new unsafe MR.Std.Function_Bool_From_MREdgeId_ConstMRVector3fRef MR.RemeshSettings.preCollapse
getprotected set

The user can provide this optional callback that is invoked immediately before edge collapse;.

It receives the edge being collapsed: its destination vertex will disappear, and its origin vertex will get new position (provided as the second argument) after collapse; If the callback returns false, then the collapse is prohibited

◆ progressCallback

new unsafe MR.Std.Function_Bool_From_Float MR.RemeshSettings.progressCallback
getprotected set

callback to report algorithm progress and cancel it by user request

◆ projectOnOriginalMesh

new unsafe ref bool MR.RemeshSettings.projectOnOriginalMesh
get

if true, then every new vertex after subdivision will be projected on the original mesh (before smoothing); this does not affect the vertices moved on other stages of the processing

◆ region

new unsafe MR.? FaceBitSet MR.RemeshSettings.region
getset

Region on mesh to be changed, it is updated during the operation.

◆ targetEdgeLen

new unsafe ref float MR.RemeshSettings.targetEdgeLen
get

the algorithm will try to keep the length of all edges close to this value, splitting the edges longer than targetEdgeLen, and then eliminating the edges shorter than targetEdgeLen

◆ useCurvature

new unsafe ref bool MR.RemeshSettings.useCurvature
get

This option in subdivision works best for natural surfaces, where all triangles are close to equilateral and have similar area, and no sharp edges in between.


The documentation for this class was generated from the following file: