Partial revert of own rev44548.
That was more like workaround which solved particular issue with freestyle rendering, but introduced some more uncontrollable issues, main of which is recursive fracture would likely suffer from non-manifolds results of previous step. Boolean operation is not the only way to generate zero-area face, it could also happen with character animation and it's indeed better be solved from freestule side. This should fix: #33041 Boolean difference sometimes produces meshes with holes
This commit is contained in:
@@ -559,8 +559,6 @@ static bool Carve_checkDegeneratedFace(std::map<MeshSet<3>::vertex_t*, uint> *ve
|
||||
|
||||
if (v1 == v2 || v2 == v3 || v1 == v3)
|
||||
return true;
|
||||
|
||||
return triangleArea(face->edge->prev->vert->v, face->edge->vert->v, face->edge->next->vert->v) < DBL_EPSILON;
|
||||
}
|
||||
else if (face->n_edges == 4) {
|
||||
uint v1, v2, v3, v4;
|
||||
@@ -572,9 +570,6 @@ static bool Carve_checkDegeneratedFace(std::map<MeshSet<3>::vertex_t*, uint> *ve
|
||||
|
||||
if (v1 == v2 || v1 == v3 || v1 == v4 || v2 == v3 || v2 == v4 || v3 == v4)
|
||||
return true;
|
||||
|
||||
return triangleArea(face->edge->vert->v, face->edge->next->vert->v, face->edge->next->next->vert->v) +
|
||||
triangleArea(face->edge->prev->vert->v, face->edge->vert->v, face->edge->next->next->vert->v) < DBL_EPSILON;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user