Revert "Fix an assert trip in boolean tickled by D11272 example."
This reverts commit 6543290116
.
It broke tests and I don't know why, so reverting this while
figuring that out.
This commit is contained in:
parent
6543290116
commit
7f4ee97b9e
Notes:
blender-bot
2023-02-13 22:39:58 +01:00
Referenced by issue #99704, Regression: Crash with boolean modifier
|
@ -2966,11 +2966,6 @@ static std::ostream &operator<<(std::ostream &os, const FaceMergeState &fms)
|
|||
* \a tris all have the same original face.
|
||||
* Find the 2d edge/triangle topology for these triangles, but only the ones facing in the
|
||||
* norm direction, and whether each edge is dissolvable or not.
|
||||
* If we did the initial triangulation properly, and any Delaunay triangulations of interections
|
||||
* properly, then each triangle edge should have at most one neighbor.
|
||||
* However, there can be anonalies. For example, if an input face is self-intersecting, we fall
|
||||
* back on the floating poing polyfill triangulation, which, after which all bets are off.
|
||||
* Hence, try to be tolerant of such unexpected topology.
|
||||
*/
|
||||
static void init_face_merge_state(FaceMergeState *fms,
|
||||
const Vector<int> &tris,
|
||||
|
@ -3058,35 +3053,16 @@ static void init_face_merge_state(FaceMergeState *fms,
|
|||
std::cout << "me.v1 == mf.vert[i] so set edge[" << me_index << "].left_face = " << f
|
||||
<< "\n";
|
||||
}
|
||||
if (me.left_face != 1) {
|
||||
/* Unexpected in the normal case: this means more than one triangle shares this
|
||||
* edge in the same orientation. But be tolerant of this case. By making this
|
||||
* edge not dissolvable, we'll avoid future problems due to this non-manifold topology.
|
||||
*/
|
||||
if (dbg_level > 1) {
|
||||
std::cout << "me.left_face was already occupied, so triangulation wasn't good\n";
|
||||
}
|
||||
me.dissolvable = false;
|
||||
}
|
||||
else {
|
||||
fms->edge[me_index].left_face = f;
|
||||
}
|
||||
BLI_assert(me.left_face == -1);
|
||||
fms->edge[me_index].left_face = f;
|
||||
}
|
||||
else {
|
||||
if (dbg_level > 1) {
|
||||
std::cout << "me.v1 != mf.vert[i] so set edge[" << me_index << "].right_face = " << f
|
||||
<< "\n";
|
||||
}
|
||||
if (me.right_face != -1) {
|
||||
/* Unexpected, analogous to the me.left_face != -1 case above. */
|
||||
if (dbg_level > 1) {
|
||||
std::cout << "me.right_face was already occupied, so triangulation wasn't good\n";
|
||||
}
|
||||
me.dissolvable = false;
|
||||
}
|
||||
else {
|
||||
fms->edge[me_index].right_face = f;
|
||||
}
|
||||
BLI_assert(me.right_face == -1);
|
||||
fms->edge[me_index].right_face = f;
|
||||
}
|
||||
fms->face[f].edge.append(me_index);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue