![]() |
ImFusion SDK 4.3
|
Collection of algorithms for post-processing meshes. More...
Collection of algorithms for post-processing meshes.
Namespaces | |
namespace | Cleaning |
Mesh processing algorithms related to cleaning of the mesh. | |
namespace | ColorsTexturing |
Mesh processing algorithms related to mesh colors and texture processing. | |
namespace | ConnectedComponents |
Mesh processing algorithms based on connected component analysis. | |
namespace | Geometry |
Mesh processing algorithms related to geometrical operations. | |
namespace | Misc |
Miscellaneous mesh processing functions. | |
namespace | Remeshing |
Mesh processing algorithms related to mesh remeshing (smoothing, decimation, subdivision) | |
namespace | Statistics |
Methods for computing statistics on Meshes. | |
Classes | |
struct | ConnectedComponentData |
Functions | |
void | reduceToNumberOfComponents (Mesh *mesh, int numComponents, bool leaveOnlyLargestComponentsWithComparibleSizes=false) |
Mesh * | cleanMesh (const Mesh *mesh, const std::vector< int > &ComponentsToKeep, const std::vector< int > &labels) |
Mesh * | cleanMesh (const Mesh *mesh, float minConnectedArea, float maxConnectedArea, ConnectedComponentData *components=nullptr) |
void | splitConnectedComponents (const Mesh &mesh, std::vector< std::unique_ptr< Mesh > > &connectedComponents, double keepComponentsWithRatioToMaxArea=0.) |
void | labelConnectedComponents (Mesh *mesh, std::vector< int > &labels, std::vector< int > &labelsSize, std::vector< float > &labelsArea, std::vector< ImFusion::Geometry::AlignedBox > *labelsBoundingBox) |
Determines connected components and assigns an id of connected component to each face using an integer "labelProperty" accessible through an underlying TriMesh. | |
void reduceToNumberOfComponents | ( | Mesh * | mesh, |
int | numComponents, | ||
bool | leaveOnlyLargestComponentsWithComparibleSizes = false ) |
Mesh * cleanMesh | ( | const Mesh * | mesh, |
const std::vector< int > & | ComponentsToKeep, | ||
const std::vector< int > & | labels ) |
Mesh * cleanMesh | ( | const Mesh * | mesh, |
float | minConnectedArea, | ||
float | maxConnectedArea, | ||
ConnectedComponentData * | components = nullptr ) |
void splitConnectedComponents | ( | const Mesh & | mesh, |
std::vector< std::unique_ptr< Mesh > > & | connectedComponents, | ||
double | keepComponentsWithRatioToMaxArea = 0. ) |
void labelConnectedComponents | ( | Mesh * | mesh, |
std::vector< int > & | labels, | ||
std::vector< int > & | labelsSize, | ||
std::vector< float > & | labelsArea, | ||
std::vector< ImFusion::Geometry::AlignedBox > * | labelsBoundingBox ) |
Determines connected components and assigns an id of connected component to each face using an integer "labelProperty" accessible through an underlying TriMesh.
[in,out] | mesh | Mesh |
[out] | labels | mapping from the "labelProperty" to an array index (for the next 3 outputs) |
[out] | labelsSize | list of triangle count per connected component, ordered according to area from smallest to largest |
[out] | labelsArea | list of area of triangles per connected component, ordered from smallest to largest |
[out] | labelsBoundingBox | list of bounding boxes of connected components, ordered according to area from smallest to largest |