5

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

我真的很感激任何提示。

+0

这就是所谓的[遮挡剔除(http://en.wikipedia.org/wiki/Hidden_​​surface_determination)*(或背面剔除,很难从你的问题告诉我们。无论是文章中介绍)* – 2011-04-15 15:06:12

回答

2

最明显的(但几乎可以肯定不是最有效的一个)算法来做到这一点如下:

  1. 考虑网格一个三角形。在三角形的三个顶点和相机点之间绘制三条线。 (如果相机无限远,只考虑视点的方向)。
  2. 如果所有的画线与三角形的表面相交,不显示所考虑的三角形。如果只有其中的一部分,部分显示三角形。
  3. 对网格中的所有三角形重复。
0

你想要做什么是删除面孔至极是一个几何图形内一劳永逸。

罗马溶液可能是可接受的如果只想看对象从1个方向。 由于不可见的表面可能会变得可见,因此如果旋转相机,这不是一个可接受的解决方案。

使用floodfill可与多维数组,但它也与3D Koordinates工作?因为曲面并不总是(int)并且具有比(1,0,0),(0,1,0)(0,0,1)以外的其他倾角,所以在我的思想中,这种方法也不起作用。

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

我myselve不能帮你,因为我也在寻找一种算法至极可以做到这一点。

迎接