如何解决去除封闭网格上的遮挡面
我需要删除封闭的三角形网格内的一些隐藏面。我找到了一种使用MeshLab进行操作的方法,但是有两个问题:1)文章说在某些情况下它可能会失败(您能在哪种情况下成像吗?)和2)我想以编程方式进行操作(您知道任何现有的实现吗?)。我什至不知道这种简化过滤器的名称。 我真的很感谢任何提示。解决方法
最明显的算法(但几乎肯定不是最有效的算法)如下:
考虑网格中的一个三角形。在三角形的三个顶点和相机点之间绘制三条线。 (如果相机无限远,请考虑视点方向)。
如果所有绘制的线都与三角表面相交,则不要显示所考虑的三角形。如果只有其中一些,则部分显示三角形。
对网格中的所有三角形重复上述步骤。
,您要做的是一劳永逸地删除几何图形中的面。
如果只想从1个方向看物体,则可以使用罗马式解决方案。
由于不可见的表面可能会变得可见,因此如果旋转相机,则不可接受。
使用Floodfill可处理多维数组,但也可用于3D Koordinates吗?由于曲面并非总是(int)并且具有除(1,0),(0,1,0)(0,1)以外的其他倾斜度,因此我认为这种方法也不起作用。
该算法可能失败的情况:
计算出的遮挡值可以告诉您表面的顶点是否在对象内部。但是:尽管所有顶点都在对象内部,但无论如何表面的一部分仍可能显示。
考虑一下:您有三个提升的对象,每个对象内部都包含一个顶点。虽然未显示顶点,但它们之间跨越的表面是部分可见的。
我自己无法帮助您,因为我也在寻找一种可以做到这一点的算法。
打招呼
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。