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

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

+ Inheritance diagram for MR.Const_RemeshSettings:

Classes

struct  _Underlying
 

Public Member Functions

virtual void Dispose ()
 
unsafe Const_RemeshSettings ()
 Constructs an empty (default-constructed) instance.
 
unsafe Const_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 Const_RemeshSettings (MR._ByValue_RemeshSettings _other)
 Generated from constructor MR.RemeshSettings.RemeshSettings.
 

Protected Member Functions

virtual unsafe void Dispose (bool disposing)
 

Properties

unsafe float targetEdgeLen [get]
 
unsafe int maxEdgeSplits [get]
 Maximum number of edge splits allowed during subdivision.
 
unsafe float maxAngleChangeAfterFlip [get]
 Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than on this value.
 
unsafe bool frozenBoundary [get]
 
unsafe float maxBdShift [get]
 
unsafe bool useCurvature [get]
 
unsafe float maxSplittableTriAspectRatio [get]
 
unsafe int finalRelaxIters [get]
 
unsafe bool finalRelaxNoShrinkage [get]
 if true prevents the surface from shrinkage after many iterations
 
unsafe MR.? FaceBitSet region [get]
 Region on mesh to be changed, it is updated during the operation.
 
unsafe MR.? UndirectedEdgeBitSet notFlippable [get]
 
unsafe bool packMesh [get]
 whether to pack mesh at the end
 
unsafe bool projectOnOriginalMesh [get]
 
unsafe MR.Std.Const_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeSplit [get]
 this function is called each time edge (e) is split into (e1->e), but before the ring is made Delone
 
unsafe MR.Std.Const_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeDel [get]
 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
 
unsafe MR.Std.Const_Function_BoolFuncFromMREdgeIdConstMRVector3fRef preCollapse [get]
 The user can provide this optional callback that is invoked immediately before edge collapse;.
 
unsafe MR.Std.Const_Function_BoolFuncFromFloat progressCallback [get]
 callback to report algorithm progress and cancel it by user request
 
- Properties inherited from MR.Misc.Object< Const_RemeshSettings >
virtual bool _IsOwning [get]
 Returns true if this is an owning instance, and when disposed, will destroy the underlying C++ instance. If false, we assume that the underlying C++ instance will live long enough.
 

Additional Inherited Members

- Protected Attributes inherited from MR.Misc.Object< Const_RemeshSettings >
bool _IsOwningVal
 

Detailed Description

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

Property Documentation

◆ finalRelaxIters

unsafe int MR.Const_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

◆ frozenBoundary

unsafe bool MR.Const_RemeshSettings.frozenBoundary
get

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

◆ maxBdShift

unsafe float MR.Const_RemeshSettings.maxBdShift
get

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

◆ maxSplittableTriAspectRatio

unsafe float MR.Const_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

unsafe MR.? UndirectedEdgeBitSet MR.Const_RemeshSettings.notFlippable
get

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

◆ preCollapse

unsafe MR.Std.Const_Function_BoolFuncFromMREdgeIdConstMRVector3fRef MR.Const_RemeshSettings.preCollapse
get

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

◆ projectOnOriginalMesh

unsafe bool MR.Const_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

◆ targetEdgeLen

unsafe float MR.Const_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

unsafe bool MR.Const_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: