vcg.tri.Clean是一个用于三角网格数据清理的类。它提供了多种方法来处理三角网格上的不一致部分,并根据选项运用各种策略来更正不一致。
triFixSelfIntersection(MeshType &m, bool delete_tets = true)
使用自相交修复算法去除三角网格上的自相交。
参数:\
triFixTJunction(MeshType &m, float cos_angle = 0.501, bool split_long_edges = true)
使用T字处理修复算法去除三角网格上的T字连接。
参数:\
triFixNonManifold(MeshType &m, int rule = 0)
使用非流形处理修复算法去除三角网格上的非流形(不可连续)的部分。
参数:\
本类没有属性。
#include <vcg/complex/complex.h>
#include <vcg/complex/algorithms/clean.h>
using namespace vcg;
using namespace std;
class MyMesh : public vcg::tri::TriMesh<vector<VertexType>, vector<FaceType> > {};
int main()
{
MyMesh m;
vcg::tri::io::Importer<MyMesh>::Open(m, "mesh.obj"); //导入三角网格
Clean<MyMesh>::RemoveDuplicateVertex(m); //调用其他清理算法
Clean<MyMesh>::RemoveNonManifoldFace(m);
Clean<MyMesh>::RemoveUnreferencedVertex(m);
Clean<MyMesh>::TriMeshTetrahedralize(m);
tri::Clean<MyMesh>::triFixNonManifold(m); //调用本类的清理算法
tri::io::Exporter<MyMesh>::Save(m, "clean.obj"); //导出清理后的三角网格
return 0;
}
上述代码演示了使用vcg.tri.Clean类对三角网格进行数据清理的基本流程。