FIX:mesh's volume <0.01mm^3,should ignore

jira: STUDIO-7808
Change-Id: Ie6d1b60314cc2303c96f2f29a08eedc6ee66b06c
This commit is contained in:
zhou.xu 2024-08-06 19:39:24 +08:00 committed by Lane.Wei
parent 4bf4e1bb91
commit 438d9201fc
1 changed files with 20 additions and 17 deletions

View File

@ -394,11 +394,14 @@ std::vector<TriangleMesh> TriangleMesh::split() const
out.reserve(itss.size());
for (indexed_triangle_set &m : itss) {
// The TriangleMesh constructor shall fill in the mesh statistics including volume.
out.emplace_back(std::move(m));
if (TriangleMesh &triangle_mesh = out.back(); triangle_mesh.volume() < 0)
// Some source mesh parts may be incorrectly oriented. Correct them.
triangle_mesh.flip_triangles();
TriangleMesh temp_triangle_mesh(std::move(m));
if (abs(temp_triangle_mesh.volume()< 0.01)) {//0.01mm^3
continue;
}
if (temp_triangle_mesh.volume() < 0) {// Some source mesh parts may be incorrectly oriented. Correct them.
temp_triangle_mesh.flip_triangles();
}
out.emplace_back(temp_triangle_mesh);
}
return out;
}