criteria - 半边塌陷

标签 criteria mesh

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

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的交集不等于二(或者边界边为一),不折叠

最佳答案

你可能想看看这篇论文:

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 中可能没问题。

关于criteria - 半边塌陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871162/

相关文章:

3d - 《魔兽世界》如何处理装甲交换的图形?

c++ - 计算四边形网格的法线

c++ - 将网格从 .obj(或任何其他)文件加载到 DirectX9/C++ 项目中

c++ - 保存 CGAL alpha 形状表面网格

php - yii 中的标准条件

nhibernate - 使用 SetFetchMode

java - Hibernate 标准给出无效结果

java - 如何使用标准中的限制来限制结果数据

Hibernate Criteria 集合属性(子查询?)

网格网格简化