半边塌陷

pea*_*212 4 criteria mesh

我目前正在尝试实现半边折叠以执行增量重新网格化。我正在处理流形网格。考虑以下简单网格:

在此输入图像描述

目标是将 a 折叠成 b。

在此输入图像描述

然而,在这种情况下,这会导致非流形网格

在此输入图像描述

我想阻止这一点。我的问题是:

我怎样才能提前做到这一点,即在崩溃之前执行检查崩溃操作是否安全?

我已经尝试过 Hoppe 的标准(链接条件),但看起来两者都已满足。此外,a 和 b 的一环的唯一交点是 c,因此只有一个点,因为它是边界边缘。

另外一般来说,我还需要执行哪些其他检查以避免非法倒塌?

现在,我有以下标准:

  • 如果 a 和 b 是边界顶点,则边 ab 必须是边界边
  • a、b 和与边 ab 相邻的三角形的第三个顶点必须是有效三角形(链接条件)
  • 如果与边 ab 相邻的三角形是边界三角形,如果 a 在边界边上,则不折叠
  • 如果 a-1-ring 和 b-1-ring 的交集不等于 2(或者边界边为 1),则不折叠

小智 5

您可能想看看这篇论文:

塔马尔·戴伊、赫伯特·埃德斯布伦纳、苏曼塔·古哈和德米特里·涅哈耶夫。保持边缘收缩的拓扑。

我不确定您指的是哪一篇 Hoppe 的论文(渐进网格?),但 Tamal Dey 的链接条件与您所说的不同。直观上,边 ab 是可折叠的,如果

one-ring(a) intersected with one-ring(b) == one-ring(ab).
Run Code Online (Sandbox Code Playgroud)

对于边 ab,一环是共享 ab 的面的其他顶点的集合。同样在 Tamal Dey 的链接条件中,您需要考虑嵌入空间的维度。(即,2d 和 3d 中的边的链接条件不同)。许多其他工作使用此链接条件来折叠边缘,而不会产生拓扑错误。

令人困惑的是,从你的例子来看,我无法真正判断它是 3d 还是 2d 中的带边界网格,或者它有多“平面”。这些因素决定了生成的网格是否具有“折叠”,例如,三角形 bcd 在 2d 中被认为是折叠的,但如果网格不是平面的,则在 3d 中可能很好。