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

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

+ Inheritance diagram for MR.SubdivideSettings:

Public Member Functions

unsafe SubdivideSettings ()
 Constructs an empty (default-constructed) instance.
 
unsafe SubdivideSettings (float maxEdgeLen, float curvaturePriority, int maxEdgeSplits, float maxDeviationAfterFlip, float maxAngleChangeAfterFlip, float criticalAspectRatioFlip, MR.FaceBitSet? region, MR.FaceBitSet? maintainRegion, MR.UndirectedEdgeBitSet? notFlippable, MR.VertBitSet? newVerts, bool subdivideBorder, float maxTriAspectRatio, float maxSplittableTriAspectRatio, bool smoothMode, float minSharpDihedralAngle, bool projectOnOriginalMesh, MR.Std._ByValue_Function_BoolFuncFromMREdgeId beforeEdgeSplit, MR.Std._ByValue_Function_VoidFuncFromMRVertId onVertCreated, MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeSplit, MR.Std._ByValue_Function_BoolFuncFromFloat progressCallback)
 Constructs MR.SubdivideSettings elementwise.
 
unsafe SubdivideSettings (MR._ByValue_SubdivideSettings _other)
 Generated from constructor MR.SubdivideSettings.SubdivideSettings.
 
 SubdivideSettings (Const_SubdivideSettings _other)
 Generated from constructor MR.SubdivideSettings.SubdivideSettings.
 
 SubdivideSettings (SubdivideSettings _other)
 Generated from constructor MR.SubdivideSettings.SubdivideSettings.
 
unsafe MR.SubdivideSettings assign (MR._ByValue_SubdivideSettings _other)
 Generated from method MR.SubdivideSettings.operator=.
 

Properties

new unsafe ref float maxEdgeLen [get]
 Subdivision is stopped when all edges inside or on the boundary of the region are not longer than this value.
 
new unsafe ref float curvaturePriority [get]
 
new unsafe ref int maxEdgeSplits [get]
 Maximum number of edge splits allowed.
 
new unsafe ref float maxDeviationAfterFlip [get]
 Improves local mesh triangulation by doing edge flips if it does not make too big surface deviation.
 
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 (in radians)
 
new unsafe ref float criticalAspectRatioFlip [get]
 
new unsafe MR.? FaceBitSet region [get, set]
 Region on mesh to be subdivided, it is updated during the operation.
 
new unsafe MR.? FaceBitSet maintainRegion [get, set]
 
new unsafe MR.? UndirectedEdgeBitSet notFlippable [get, set]
 Edges specified by this bit-set will never be flipped, but they can be split so it is updated during the operation.
 
new unsafe MR.? VertBitSet newVerts [get, set]
 New vertices appeared during subdivision will be added here.
 
new unsafe ref bool subdivideBorder [get]
 
new unsafe ref float maxTriAspectRatio [get]
 The subdivision stops as soon as all triangles (in the region) have aspect ratio below or equal to this value.
 
new unsafe ref float maxSplittableTriAspectRatio [get]
 
new unsafe ref bool smoothMode [get]
 
new unsafe ref float minSharpDihedralAngle [get]
 
new unsafe ref bool projectOnOriginalMesh [get]
 if true, then every new vertex will be projected on the original mesh (before smoothing)
 
new unsafe MR.Std.Function_BoolFuncFromMREdgeId beforeEdgeSplit [get, protected set]
 this function is called each time edge (e) is going to split, if it returns false then this split will be skipped
 
new unsafe MR.Std.Function_VoidFuncFromMRVertId onVertCreated [get, protected set]
 this function is called each time a new vertex has been created, but before the ring is made Delone
 
new unsafe MR.Std.Function_VoidFuncFromMREdgeIdMREdgeId 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_BoolFuncFromFloat progressCallback [get, protected set]
 callback to report algorithm progress and cancel it by user request
 

Detailed Description

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

Constructor & Destructor Documentation

◆ SubdivideSettings() [1/5]

unsafe MR.SubdivideSettings.SubdivideSettings ( )
inline

Constructs an empty (default-constructed) instance.

◆ SubdivideSettings() [2/5]

unsafe MR.SubdivideSettings.SubdivideSettings ( float maxEdgeLen,
float curvaturePriority,
int maxEdgeSplits,
float maxDeviationAfterFlip,
float maxAngleChangeAfterFlip,
float criticalAspectRatioFlip,
MR.FaceBitSet? region,
MR.FaceBitSet? maintainRegion,
MR.UndirectedEdgeBitSet? notFlippable,
MR.VertBitSet? newVerts,
bool subdivideBorder,
float maxTriAspectRatio,
float maxSplittableTriAspectRatio,
bool smoothMode,
float minSharpDihedralAngle,
bool projectOnOriginalMesh,
MR.Std._ByValue_Function_BoolFuncFromMREdgeId beforeEdgeSplit,
MR.Std._ByValue_Function_VoidFuncFromMRVertId onVertCreated,
MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeId onEdgeSplit,
MR.Std._ByValue_Function_BoolFuncFromFloat progressCallback )
inline

Constructs MR.SubdivideSettings elementwise.

◆ SubdivideSettings() [3/5]

unsafe MR.SubdivideSettings.SubdivideSettings ( MR._ByValue_SubdivideSettings _other)
inline

Generated from constructor MR.SubdivideSettings.SubdivideSettings.

◆ SubdivideSettings() [4/5]

MR.SubdivideSettings.SubdivideSettings ( Const_SubdivideSettings _other)
inline

Generated from constructor MR.SubdivideSettings.SubdivideSettings.

◆ SubdivideSettings() [5/5]

MR.SubdivideSettings.SubdivideSettings ( SubdivideSettings _other)
inline

Generated from constructor MR.SubdivideSettings.SubdivideSettings.

Member Function Documentation

◆ assign()

unsafe MR.SubdivideSettings MR.SubdivideSettings.assign ( MR._ByValue_SubdivideSettings _other)
inline

Generated from method MR.SubdivideSettings.operator=.

Property Documentation

◆ beforeEdgeSplit

new unsafe MR.Std.Function_BoolFuncFromMREdgeId MR.SubdivideSettings.beforeEdgeSplit
getprotected set

this function is called each time edge (e) is going to split, if it returns false then this split will be skipped

◆ criticalAspectRatioFlip

new unsafe ref float MR.SubdivideSettings.criticalAspectRatioFlip
get

If this value is less than FLT_MAX then edge flips will ignore dihedral angle check if one of triangles has aspect ratio more than this value Unit: rad

◆ curvaturePriority

new unsafe ref float MR.SubdivideSettings.curvaturePriority
get

edge length will be magnified by the squared difference of normals at edge's ends times this factor, thus subdivision will be finer in the regions of high curvature compared to planar regions

◆ maintainRegion

new unsafe MR.? FaceBitSet MR.SubdivideSettings.maintainRegion
getset

Additional region to update during subdivision: if a face from here is split, it is replaced with new sub-faces; note that Subdivide can split faces even outside of main region, so it might be necessary to update another region

◆ maxAngleChangeAfterFlip

new unsafe ref float MR.SubdivideSettings.maxAngleChangeAfterFlip
get

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

◆ maxDeviationAfterFlip

new unsafe ref float MR.SubdivideSettings.maxDeviationAfterFlip
get

Improves local mesh triangulation by doing edge flips if it does not make too big surface deviation.

◆ maxEdgeLen

new unsafe ref float MR.SubdivideSettings.maxEdgeLen
get

Subdivision is stopped when all edges inside or on the boundary of the region are not longer than this value.

◆ maxEdgeSplits

new unsafe ref int MR.SubdivideSettings.maxEdgeSplits
get

Maximum number of edge splits allowed.

◆ maxSplittableTriAspectRatio

new unsafe ref float MR.SubdivideSettings.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 subdivideBorder==false, otherwise many narrow triangles can appear near border

◆ maxTriAspectRatio

new unsafe ref float MR.SubdivideSettings.maxTriAspectRatio
get

The subdivision stops as soon as all triangles (in the region) have aspect ratio below or equal to this value.

◆ minSharpDihedralAngle

new unsafe ref float MR.SubdivideSettings.minSharpDihedralAngle
get

◆ newVerts

new unsafe MR.? VertBitSet MR.SubdivideSettings.newVerts
getset

New vertices appeared during subdivision will be added here.

◆ notFlippable

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

Edges specified by this bit-set will never be flipped, but they can be split so it is updated during the operation.

◆ onEdgeSplit

new unsafe MR.Std.Function_VoidFuncFromMREdgeIdMREdgeId MR.SubdivideSettings.onEdgeSplit
getprotected set

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

◆ onVertCreated

new unsafe MR.Std.Function_VoidFuncFromMRVertId MR.SubdivideSettings.onVertCreated
getprotected set

this function is called each time a new vertex has been created, but before the ring is made Delone

◆ progressCallback

new unsafe MR.Std.Function_BoolFuncFromFloat MR.SubdivideSettings.progressCallback
getprotected set

callback to report algorithm progress and cancel it by user request

◆ projectOnOriginalMesh

new unsafe ref bool MR.SubdivideSettings.projectOnOriginalMesh
get

if true, then every new vertex will be projected on the original mesh (before smoothing)

◆ region

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

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

◆ smoothMode

new unsafe ref bool MR.SubdivideSettings.smoothMode
get

Puts new vertices so that they form a smooth surface together with existing vertices. This option works best for natural surfaces without sharp edges in between triangles

◆ subdivideBorder

new unsafe ref bool MR.SubdivideSettings.subdivideBorder
get

If false do not touch border edges (cannot subdivide lone faces)
use MR.findRegionOuterFaces to find boundary faces


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