MeshLib
 
Loading...
Searching...
No Matches
Decimate overview

This chapter represents documentation about mesh decimation. More...

Classes

struct  MR::DecimateSettings
 Parameters structure for MR::decimateMesh. More...
 
struct  MR::DecimateResult
 Results of MR::decimateMesh. More...
 
struct  MR::DecimateParallelSettings
 Parameters structure for MR::decimateParallelMesh. More...
 
struct  MR::DecimatePolylineSettings< V >
 Parameters structure for MR::decimatePolyline. More...
 

Functions

MRMESH_API DecimateResult MR::decimateMesh (Mesh &mesh, const DecimateSettings &settings={})
 Collapse edges in mesh region according to the settings.
 
MRMESH_API QuadraticForm3f MR::computeFormAtVertex (const MeshPart &mp, VertId v, float stabilizer, const UndirectedEdgeBitSet *creases=nullptr)
 Computes quadratic form at given vertex of the initial surface before decimation.
 
MRMESH_API Vector< QuadraticForm3f, VertIdMR::computeFormsAtVertices (const MeshPart &mp, float stabilizer, const UndirectedEdgeBitSet *creases=nullptr)
 Computes quadratic forms at every vertex of mesh part before decimation.
 
MRMESH_API FaceBitSet MR::getSubdividePart (const FaceBitSet &valids, size_t subdivideParts, size_t myPart)
 returns given subdivision part of all valid faces; parallel threads shall be able to safely modify these bits because they do not share any block with other parts
 
MRMESH_API bool MR::resolveMeshDegenerations (Mesh &mesh, const ResolveMeshDegenSettings &settings={})
 Resolves degenerate triangles in given mesh.
 
MRMESH_API DecimateResult MR::decimateParallelMesh (Mesh &mesh, const DecimateParallelSettings &settings={})
 Collapse edges in mesh region according to the settings.
 
MRMESH_API DecimatePolylineResult MR::decimatePolyline (Polyline2 &polyline, const DecimatePolylineSettings2 &settings={})
 Collapse edges in the polyline according to the settings.
 
MRMESH_API DecimatePolylineResult MR::decimateContour (Contour2f &contour, const DecimatePolylineSettings2 &settings={})
 Collapse edges in the contour according to the settings.
 

Detailed Description

This chapter represents documentation about mesh decimation.

Function Documentation

◆ computeFormAtVertex()

MRMESH_API QuadraticForm3f MR::computeFormAtVertex ( const MeshPart & mp,
VertId v,
float stabilizer,
const UndirectedEdgeBitSet * creases = nullptr )
nodiscard

Computes quadratic form at given vertex of the initial surface before decimation.

◆ computeFormsAtVertices()

MRMESH_API Vector< QuadraticForm3f, VertId > MR::computeFormsAtVertices ( const MeshPart & mp,
float stabilizer,
const UndirectedEdgeBitSet * creases = nullptr )
nodiscard

Computes quadratic forms at every vertex of mesh part before decimation.

◆ decimateContour()

MRMESH_API DecimatePolylineResult MR::decimateContour ( Contour2f & contour,
const DecimatePolylineSettings2 & settings = {} )

Collapse edges in the contour according to the settings.

◆ decimateMesh()

MRMESH_API DecimateResult MR::decimateMesh ( Mesh & mesh,
const DecimateSettings & settings = {} )

Collapse edges in mesh region according to the settings.

Have version for parallel computing - decimateParallelMesh

Before
After
See also
decimateParallelMesh
resolveMeshDegenerations

◆ decimateParallelMesh()

MRMESH_API DecimateResult MR::decimateParallelMesh ( Mesh & mesh,
const DecimateParallelSettings & settings = {} )

Collapse edges in mesh region according to the settings.

Analog of decimateMesh for parallel computing. If accuracy is preferable to speed, use decimateMesh. Limitations: 1) original FaceIds and EdgeIds are not preserved; 2) multiple edges are not supported.

See also
decimateMesh

◆ decimatePolyline()

MRMESH_API DecimatePolylineResult MR::decimatePolyline ( Polyline2 & polyline,
const DecimatePolylineSettings2 & settings = {} )

Collapse edges in the polyline according to the settings.

◆ getSubdividePart()

MRMESH_API FaceBitSet MR::getSubdividePart ( const FaceBitSet & valids,
size_t subdivideParts,
size_t myPart )
nodiscard

returns given subdivision part of all valid faces; parallel threads shall be able to safely modify these bits because they do not share any block with other parts

◆ resolveMeshDegenerations()

MRMESH_API bool MR::resolveMeshDegenerations ( Mesh & mesh,
const ResolveMeshDegenSettings & settings = {} )

Resolves degenerate triangles in given mesh.

This function performs decimation, so it can affect topology

Returns
true if the mesh has been changed
See also
decimateMesh