半边折叠

时间:2014-11-11 17:48:51

标签: criteria collapse mesh edge simplification

我目前正在尝试实施半边缘崩溃,以便执行增量重新网格化。我正在处理歧管网格。考虑以下简单网格:

enter image description here

目标是将a折叠成b。

enter image description here

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

enter image description here

我想阻止。我的问题是:

我如何提前做到这一点,即在崩溃前进行检查是否崩溃操作是否安全?

我已经尝试过Hoppe的标准(链接条件),但两者都得到了实现。此外,a和b的单环的唯一交点是c,因此只有一个点,因为它是边界边缘。

一般而言,我需要执行哪些其他检查以避免非法崩溃?

现在,我有以下标准:

  • 如果a和b是边界顶点,则边ab必须是边界边
  • a,b和与边ab相邻的三角形的第三个顶点必须是有效三角形(链接条件)
  • 如果与边ab相邻的三角形是边界三角形,则如果a位于边界边缘,则不会折叠
  • 如果a-1-ring和b-1-ring的交点不等于2(或边界边缘为1),请不要崩溃

1 个答案:

答案 0 :(得分:3)

你可能想看看这篇论文:

Tamal Dey, Herbert Edelsbrunner, Sumanta Guha, and Dmitry Nekhayev. Topology preserving edge contraction.

我不确定你指的是哪张Hoppe的纸(渐进式网格?)但是Tamal Dey的链接条件与你说的不同。直观地,如果

,边缘ab是可折叠的
one-ring(a) intersected with one-ring(b) == one-ring(ab).

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

令人困惑的是你的例子我无法确定它是否是3d或2d中的网格边界,或者它是多么“平面”。这些因素决定了所得到的网格是否具有“折叠”,例如,三角形bcd在2d中被认为是折叠的,但如果网格不是平面的,则可以在3d中很好。