MeshLib C++ Docs
Loading...
Searching...
No Matches
MRSubdivideSettings Struct Reference

#include <MRMeshSubdivide.h>

Public Attributes

float maxEdgeLen
 Subdivision is stopped when all edges inside or on the boundary of the region are not longer than this value.
 
int maxEdgeSplits
 Maximum number of edge splits allowed.
 
float maxDeviationAfterFlip
 Improves local mesh triangulation by doing edge flips if it does not make too big surface deviation.
 
float maxAngleChangeAfterFlip
 Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than on this value (in radians)
 
float criticalAspectRatioFlip
 
const MRFaceBitSetregion
 Region on mesh to be subdivided, it is updated during the operation.
 
MRUndirectedEdgeBitSetnotFlippable
 Edges specified by this bit-set will never be flipped, but they can be split so it is updated during the operation.
 
MRVertBitSetnewVerts
 New vertices appeared during subdivision will be added here.
 
bool subdivideBorder
 
float maxTriAspectRatio
 The subdivision stops as soon as all triangles (in the region) have aspect ratio below or equal to this value.
 
float maxSplittableTriAspectRatio
 
bool smoothMode
 
float minSharpDihedralAngle
 
bool projectOnOriginalMesh
 if true, then every new vertex will be projected on the original mesh (before smoothing)
 
MRProgressCallback progressCallback
 callback to report algorithm progress and cancel it by user request
 

Member Data Documentation

◆ criticalAspectRatioFlip

float MRSubdivideSettings::criticalAspectRatioFlip

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

◆ maxAngleChangeAfterFlip

float MRSubdivideSettings::maxAngleChangeAfterFlip

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

◆ maxDeviationAfterFlip

float MRSubdivideSettings::maxDeviationAfterFlip

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

◆ maxEdgeLen

float MRSubdivideSettings::maxEdgeLen

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

◆ maxEdgeSplits

int MRSubdivideSettings::maxEdgeSplits

Maximum number of edge splits allowed.

◆ maxSplittableTriAspectRatio

float MRSubdivideSettings::maxSplittableTriAspectRatio

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

float MRSubdivideSettings::maxTriAspectRatio

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

◆ minSharpDihedralAngle

float MRSubdivideSettings::minSharpDihedralAngle

In case of activated smoothMode, the smoothness is locally deactivated at the edges having dihedral angle at least this value

◆ newVerts

MRVertBitSet* MRSubdivideSettings::newVerts

New vertices appeared during subdivision will be added here.

◆ notFlippable

MRUndirectedEdgeBitSet* MRSubdivideSettings::notFlippable

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

◆ progressCallback

MRProgressCallback MRSubdivideSettings::progressCallback

callback to report algorithm progress and cancel it by user request

◆ projectOnOriginalMesh

bool MRSubdivideSettings::projectOnOriginalMesh

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

◆ region

const MRFaceBitSet* MRSubdivideSettings::region

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

◆ smoothMode

bool MRSubdivideSettings::smoothMode

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

bool MRSubdivideSettings::subdivideBorder

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


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