移除封闭网格上的遮挡面

时间:2011-04-15 14:39:14

标签: algorithm language-agnostic filter computational-geometry mesh

我需要移除一些封闭的三角形网格内的隐藏面。我已经找到了使用MeshLab的方法,但有两个问题:1)文章说在某些情况下可能会失败(你可以在哪些情况下成像?)和2)我想以编程方式进行(你知道任何现有的实现吗?)。我甚至不知道这种简化过滤器的名称。

我真的很感激任何提示。

2 个答案:

答案 0 :(得分:2)

最明显(但几乎肯定不是最有效的)算法如下:

  1. 考虑网格中的一个三角形。在三角形和摄像机点的三个顶点之间绘制三条线。 (如果摄像机距离很远,只需考虑视点方向)。
  2. 如果所有绘制的线条与三角形曲面相交,则不显示正在考虑的三角形。如果只有其中一些,则部分显示三角形。
  3. 对网格中的所有三角形重复。

答案 1 :(得分:0)

你要做的是一劳永逸地删除几何图形中的面孔。

如果你只想从1个方向看物体,罗马人解决方案是可以接受的。 由于不可见表面可能会变得可见,因此如果您旋转相机,则不是可接受的解决方案。

使用floodfill可以使用多维数组,但它是否也适用于3D Koordinates?因为表面不总是(int)并且具有除(1,0,0),(0,1,0)(0,0,1)之外的其他倾斜度,在我看来,这种方法也不起作用。

算法失败的情况: 计算的遮挡值告诉您表面的顶点是否在对象内。但是:尽管所有顶点都在对象内部,但表面的一部分仍可能显示。 考虑一下:你有三个提升的对象,每个对象都包含一个顶点。虽然顶点未显示,但它们之间的表面部分可见。

我的myselve无法帮助你,因为我也在寻找能够做到这一点的算法。

招呼