MeshLib Python Docs
Loading...
Searching...
No Matches
mrmeshpy.DecimateSettings Class Reference

Public Member Functions

None __init__ (self)
 
None __init__ (self, DecimateSettings arg0)
 
None __init__ (self, DecimateStrategy strategy, float maxError, float maxEdgeLen, float maxBdShift, float maxTriangleAspectRatio, float criticalTriAspectRatio, float tinyEdgeLength, float stabilizer, bool angleWeightedDistToPlane, bool optimizeVertexPos, int maxDeletedVertices, int maxDeletedFaces, FaceBitSet region, UndirectedEdgeBitSet notFlippable, bool collapseNearNotFlippable, UndirectedEdgeBitSet edgesToCollapse, phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag twinMap, bool touchNearBdEdges, bool touchBdVerts, VertBitSet bdVerts, float maxAngleChange, func_bool_from_Id_EdgeTag_Vector3_float preCollapse, func_void_from_Id_UndirectedEdgeTag_float_Vector3_float adjustCollapse, func_void_from_Id_EdgeTag_Id_EdgeTag onEdgeDel, Vector_QuadraticForm3f_VertId vertForms, bool packMesh, func_bool_from_float progressCallback, int subdivideParts, bool decimateBetweenParts, std_vector_TaggedBitSet_FaceTag partFaces, int minFacesInPart)
 
func_void_from_Id_UndirectedEdgeTag_float_Vector3_float adjustCollapse (self)
 
None adjustCollapse (self, func_void_from_Id_UndirectedEdgeTag_float_Vector3_float arg1)
 
bool angleWeightedDistToPlane (self)
 
None angleWeightedDistToPlane (self, bool arg1)
 
VertBitSet bdVerts (self)
 
None bdVerts (self, VertBitSet arg1)
 
bool collapseNearNotFlippable (self)
 
None collapseNearNotFlippable (self, bool arg1)
 
float criticalTriAspectRatio (self)
 
None criticalTriAspectRatio (self, float arg1)
 
bool decimateBetweenParts (self)
 
None decimateBetweenParts (self, bool arg1)
 
UndirectedEdgeBitSet edgesToCollapse (self)
 
None edgesToCollapse (self, UndirectedEdgeBitSet arg1)
 
float maxAngleChange (self)
 
None maxAngleChange (self, float arg1)
 
float maxBdShift (self)
 
None maxBdShift (self, float arg1)
 
int maxDeletedFaces (self)
 
None maxDeletedFaces (self, int arg1)
 
int maxDeletedVertices (self)
 
None maxDeletedVertices (self, int arg1)
 
float maxEdgeLen (self)
 
None maxEdgeLen (self, float arg1)
 
float maxError (self)
 
None maxError (self, float arg1)
 
float maxTriangleAspectRatio (self)
 
None maxTriangleAspectRatio (self, float arg1)
 
int minFacesInPart (self)
 
None minFacesInPart (self, int arg1)
 
UndirectedEdgeBitSet notFlippable (self)
 
None notFlippable (self, UndirectedEdgeBitSet arg1)
 
func_void_from_Id_EdgeTag_Id_EdgeTag onEdgeDel (self)
 
None onEdgeDel (self, func_void_from_Id_EdgeTag_Id_EdgeTag arg1)
 
bool optimizeVertexPos (self)
 
None optimizeVertexPos (self, bool arg1)
 
bool packMesh (self)
 
None packMesh (self, bool arg1)
 
std_vector_TaggedBitSet_FaceTag partFaces (self)
 
None partFaces (self, std_vector_TaggedBitSet_FaceTag arg1)
 
func_bool_from_Id_EdgeTag_Vector3_float preCollapse (self)
 
None preCollapse (self, func_bool_from_Id_EdgeTag_Vector3_float arg1)
 
func_bool_from_float progressCallback (self)
 
None progressCallback (self, func_bool_from_float arg1)
 
FaceBitSet region (self)
 
None region (self, FaceBitSet arg1)
 
float stabilizer (self)
 
None stabilizer (self, float arg1)
 
int subdivideParts (self)
 
None subdivideParts (self, int arg1)
 
float tinyEdgeLength (self)
 
None tinyEdgeLength (self, float arg1)
 
bool touchBdVerts (self)
 
None touchBdVerts (self, bool arg1)
 
bool touchNearBdEdges (self)
 
None touchNearBdEdges (self, bool arg1)
 
phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag twinMap (self)
 
None twinMap (self, phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag arg1)
 
Vector_QuadraticForm3f_VertId vertForms (self)
 
None vertForms (self, Vector_QuadraticForm3f_VertId arg1)
 

Static Protected Member Functions

 _pybind11_conduit_v1_ (*args, **kwargs)
 

Detailed Description

Generated from:  MR::DecimateSettings


 \\struct MR::DecimateSettings
 \\brief Parameters structure for MR::decimateMesh
 \\ingroup DecimateGroup

 \\sa \\ref decimateMesh

Constructor & Destructor Documentation

◆ __init__() [1/3]

None mrmeshpy.DecimateSettings.__init__ ( self)
Implicit default constructor.

◆ __init__() [2/3]

None mrmeshpy.DecimateSettings.__init__ ( self,
DecimateSettings arg0 )
Implicit copy constructor.

◆ __init__() [3/3]

None mrmeshpy.DecimateSettings.__init__ ( self,
DecimateStrategy strategy,
float maxError,
float maxEdgeLen,
float maxBdShift,
float maxTriangleAspectRatio,
float criticalTriAspectRatio,
float tinyEdgeLength,
float stabilizer,
bool angleWeightedDistToPlane,
bool optimizeVertexPos,
int maxDeletedVertices,
int maxDeletedFaces,
FaceBitSet region,
UndirectedEdgeBitSet notFlippable,
bool collapseNearNotFlippable,
UndirectedEdgeBitSet edgesToCollapse,
phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag twinMap,
bool touchNearBdEdges,
bool touchBdVerts,
VertBitSet bdVerts,
float maxAngleChange,
func_bool_from_Id_EdgeTag_Vector3_float preCollapse,
func_void_from_Id_UndirectedEdgeTag_float_Vector3_float adjustCollapse,
func_void_from_Id_EdgeTag_Id_EdgeTag onEdgeDel,
Vector_QuadraticForm3f_VertId vertForms,
bool packMesh,
func_bool_from_float progressCallback,
int subdivideParts,
bool decimateBetweenParts,
std_vector_TaggedBitSet_FaceTag partFaces,
int minFacesInPart )
Implicit aggregate constructor.

Member Function Documentation

◆ _pybind11_conduit_v1_()

mrmeshpy.DecimateSettings._pybind11_conduit_v1_ ( * args,
** kwargs )
staticprotected

◆ adjustCollapse() [1/2]

func_void_from_Id_UndirectedEdgeTag_float_Vector3_float mrmeshpy.DecimateSettings.adjustCollapse ( self)
 \\brief The user can provide this optional callback for adjusting error introduced by this
 edge collapse and the collapse position.
 \\details On input the callback gets the squared error and position computed by standard means,
 and callback can modify any of them. The larger the error, the later this edge will be collapsed.
 This callback can be called from many threads in parallel and must be thread-safe.
 This callback can be called many times for each edge before real collapsing, and it is important to make the same adjustment.

◆ adjustCollapse() [2/2]

None mrmeshpy.DecimateSettings.adjustCollapse ( self,
func_void_from_Id_UndirectedEdgeTag_float_Vector3_float arg1 )

◆ angleWeightedDistToPlane() [1/2]

bool mrmeshpy.DecimateSettings.angleWeightedDistToPlane ( self)
if false, then quadratic error metric is equal to the sum of distances to the planes of original mesh triangles;
if true, then the sum is weighted, and the weight is equal to the angle of adjacent triangle at the vertex divided on PI (to get one after summing all 3 vertices of the triangle)

◆ angleWeightedDistToPlane() [2/2]

None mrmeshpy.DecimateSettings.angleWeightedDistToPlane ( self,
bool arg1 )

◆ bdVerts() [1/2]

VertBitSet mrmeshpy.DecimateSettings.bdVerts ( self)
if touchNearBdEdges=false or touchBdVerts=false then the algorithm needs to know about all boundary vertices;
if the pointer is not null then boundary vertices detection is replaced with testing values in this bit-set;
the algorithm updates this set if it packs the mesh

◆ bdVerts() [2/2]

None mrmeshpy.DecimateSettings.bdVerts ( self,
VertBitSet arg1 )

◆ collapseNearNotFlippable() [1/2]

bool mrmeshpy.DecimateSettings.collapseNearNotFlippable ( self)
Whether to allow collapse of edges incident to notFlippable edges,
which can move vertices of notFlippable edges unless they are fixed

◆ collapseNearNotFlippable() [2/2]

None mrmeshpy.DecimateSettings.collapseNearNotFlippable ( self,
bool arg1 )

◆ criticalTriAspectRatio() [1/2]

float mrmeshpy.DecimateSettings.criticalTriAspectRatio ( self)
the algorithm will ignore dihedral angle check if one of triangles had aspect ratio equal or more than this value;
and the algorithm will permit temporary increase in aspect ratio after collapse, if before collapse one of the triangles had larger aspect ratio

◆ criticalTriAspectRatio() [2/2]

None mrmeshpy.DecimateSettings.criticalTriAspectRatio ( self,
float arg1 )

◆ decimateBetweenParts() [1/2]

bool mrmeshpy.DecimateSettings.decimateBetweenParts ( self)
After parallel decimation of all mesh parts is done, whether to perform final decimation of whole mesh region
to eliminate small edges near the border of individual parts

◆ decimateBetweenParts() [2/2]

None mrmeshpy.DecimateSettings.decimateBetweenParts ( self,
bool arg1 )

◆ edgesToCollapse() [1/2]

UndirectedEdgeBitSet mrmeshpy.DecimateSettings.edgesToCollapse ( self)
If pointer is not null, then only edges from here can be collapsed (and some nearby edges can disappear);
the algorithm updates this map during collapses, removing or replacing elements

◆ edgesToCollapse() [2/2]

None mrmeshpy.DecimateSettings.edgesToCollapse ( self,
UndirectedEdgeBitSet arg1 )

◆ maxAngleChange() [1/2]

float mrmeshpy.DecimateSettings.maxAngleChange ( self)
Permit edge flips (in addition to collapsing) to improve Delone quality of the mesh
if it does not change dihedral angle more than on this value (negative value prohibits any edge flips)

◆ maxAngleChange() [2/2]

None mrmeshpy.DecimateSettings.maxAngleChange ( self,
float arg1 )

◆ maxBdShift() [1/2]

float mrmeshpy.DecimateSettings.maxBdShift ( self)
Maximal shift of a boundary during one edge collapse

◆ maxBdShift() [2/2]

None mrmeshpy.DecimateSettings.maxBdShift ( self,
float arg1 )

◆ maxDeletedFaces() [1/2]

int mrmeshpy.DecimateSettings.maxDeletedFaces ( self)
Limit on the number of deleted faces

◆ maxDeletedFaces() [2/2]

None mrmeshpy.DecimateSettings.maxDeletedFaces ( self,
int arg1 )

◆ maxDeletedVertices() [1/2]

int mrmeshpy.DecimateSettings.maxDeletedVertices ( self)
Limit on the number of deleted vertices

◆ maxDeletedVertices() [2/2]

None mrmeshpy.DecimateSettings.maxDeletedVertices ( self,
int arg1 )

◆ maxEdgeLen() [1/2]

float mrmeshpy.DecimateSettings.maxEdgeLen ( self)
Maximal possible edge length created during decimation

◆ maxEdgeLen() [2/2]

None mrmeshpy.DecimateSettings.maxEdgeLen ( self,
float arg1 )

◆ maxError() [1/2]

float mrmeshpy.DecimateSettings.maxError ( self)
for DecimateStrategy::MinimizeError:
  stop the decimation as soon as the estimated distance deviation from the original mesh is more than this value
for DecimateStrategy::ShortestEdgeFirst only:
  stop the decimation as soon as the shortest edge in the mesh is greater than this value

◆ maxError() [2/2]

None mrmeshpy.DecimateSettings.maxError ( self,
float arg1 )

◆ maxTriangleAspectRatio() [1/2]

float mrmeshpy.DecimateSettings.maxTriangleAspectRatio ( self)
Maximal possible aspect ratio of a triangle introduced during decimation

◆ maxTriangleAspectRatio() [2/2]

None mrmeshpy.DecimateSettings.maxTriangleAspectRatio ( self,
float arg1 )

◆ minFacesInPart() [1/2]

int mrmeshpy.DecimateSettings.minFacesInPart ( self)
minimum number of faces in one subdivision part for ( subdivideParts > 1 ) mode

◆ minFacesInPart() [2/2]

None mrmeshpy.DecimateSettings.minFacesInPart ( self,
int arg1 )

◆ notFlippable() [1/2]

UndirectedEdgeBitSet mrmeshpy.DecimateSettings.notFlippable ( self)
Edges specified by this bit-set will never be flipped, but they can be collapsed or replaced during collapse of nearby edges so it is updated during the operation

◆ notFlippable() [2/2]

None mrmeshpy.DecimateSettings.notFlippable ( self,
UndirectedEdgeBitSet arg1 )

◆ onEdgeDel() [1/2]

func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.DecimateSettings.onEdgeDel ( self)
this function is called each time edge (del) is deleted;
if valid (rem) is given then dest(del) = dest(rem) and their origins are in different ends of collapsing edge, (rem) shall take the place of (del)

◆ onEdgeDel() [2/2]

None mrmeshpy.DecimateSettings.onEdgeDel ( self,
func_void_from_Id_EdgeTag_Id_EdgeTag arg1 )

◆ optimizeVertexPos() [1/2]

bool mrmeshpy.DecimateSettings.optimizeVertexPos ( self)
if true then after each edge collapse the position of remaining vertex is optimized to
minimize local shape change, if false then the edge is collapsed in one of its vertices, which keeps its position

◆ optimizeVertexPos() [2/2]

None mrmeshpy.DecimateSettings.optimizeVertexPos ( self,
bool arg1 )

◆ packMesh() [1/2]

bool mrmeshpy.DecimateSettings.packMesh ( self)
whether to pack mesh at the end

◆ packMesh() [2/2]

None mrmeshpy.DecimateSettings.packMesh ( self,
bool arg1 )

◆ partFaces() [1/2]

std_vector_TaggedBitSet_FaceTag mrmeshpy.DecimateSettings.partFaces ( self)
if not null, then it contains the faces of each subdivision part on input, which must not overlap,
and after decimation of all parts, the region inside each part is put here;
decimateBetweenParts=true or packMesh=true are not compatible with this option

◆ partFaces() [2/2]

None mrmeshpy.DecimateSettings.partFaces ( self,
std_vector_TaggedBitSet_FaceTag arg1 )

◆ preCollapse() [1/2]

func_bool_from_Id_EdgeTag_Vector3_float mrmeshpy.DecimateSettings.preCollapse ( self)
 \\brief The user can provide this optional callback that is invoked immediately before edge collapse;
 \\details 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

◆ preCollapse() [2/2]

None mrmeshpy.DecimateSettings.preCollapse ( self,
func_bool_from_Id_EdgeTag_Vector3_float arg1 )

◆ progressCallback() [1/2]

func_bool_from_float mrmeshpy.DecimateSettings.progressCallback ( self)
callback to report algorithm progress and cancel it by user request

◆ progressCallback() [2/2]

None mrmeshpy.DecimateSettings.progressCallback ( self,
func_bool_from_float arg1 )

◆ region() [1/2]

FaceBitSet mrmeshpy.DecimateSettings.region ( self)
Region on mesh to be decimated, it is updated during the operation

◆ region() [2/2]

None mrmeshpy.DecimateSettings.region ( self,
FaceBitSet arg1 )

◆ stabilizer() [1/2]

float mrmeshpy.DecimateSettings.stabilizer ( self)
Small stabilizer is important to achieve good results on completely planar mesh parts,
if your mesh is not-planer everywhere, then you can set it to zero

◆ stabilizer() [2/2]

None mrmeshpy.DecimateSettings.stabilizer ( self,
float arg1 )

◆ subdivideParts() [1/2]

int mrmeshpy.DecimateSettings.subdivideParts ( self)
If this value is more than 1, then virtually subdivides the mesh on given number of parts to process them in parallel (using many threads);
IMPORTANT: please call mesh.packOptimally() before calling decimating with subdivideParts > 1, otherwise performance will be bad

◆ subdivideParts() [2/2]

None mrmeshpy.DecimateSettings.subdivideParts ( self,
int arg1 )

◆ tinyEdgeLength() [1/2]

float mrmeshpy.DecimateSettings.tinyEdgeLength ( self)
edges not longer than this value will be collapsed even if it results in appearance of a triangle with high aspect ratio

◆ tinyEdgeLength() [2/2]

None mrmeshpy.DecimateSettings.tinyEdgeLength ( self,
float arg1 )

◆ touchBdVerts() [1/2]

bool mrmeshpy.DecimateSettings.touchBdVerts ( self)
touchBdVerts=true: allow moving and eliminating boundary vertices during edge collapses;
touchBdVerts=false: allow only collapsing an edge having only one boundary vertex in that vertex, so position and count of boundary vertices do not change;
this setting is ignored if touchNearBdEdges=false

◆ touchBdVerts() [2/2]

None mrmeshpy.DecimateSettings.touchBdVerts ( self,
bool arg1 )

◆ touchNearBdEdges() [1/2]

bool mrmeshpy.DecimateSettings.touchNearBdEdges ( self)
Whether to allow collapsing or flipping edges having at least one vertex on (region) boundary

◆ touchNearBdEdges() [2/2]

None mrmeshpy.DecimateSettings.touchNearBdEdges ( self,
bool arg1 )

◆ twinMap() [1/2]

phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag mrmeshpy.DecimateSettings.twinMap ( self)
if an edge present as a key in this map is flipped or collapsed, then same happens to the value-edge (with same collapse position);
the algorithm updates this map during collapses, removing or replacing elements

◆ twinMap() [2/2]

None mrmeshpy.DecimateSettings.twinMap ( self,
phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag arg1 )

◆ vertForms() [1/2]

Vector_QuadraticForm3f_VertId mrmeshpy.DecimateSettings.vertForms ( self)
 \\brief  If not null, then vertex quadratic forms are stored there;
 if on input the vector is not empty then initialization is skipped in favor of values from there;
 on output: quadratic form for each remaining vertex is returned there

◆ vertForms() [2/2]

None mrmeshpy.DecimateSettings.vertForms ( self,
Vector_QuadraticForm3f_VertId arg1 )

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