在模型中的节点形状中查找边或孔

Finding edges or holes in a shape of a node in the model

有没有办法识别模型中的节点是否有孔?

例如,我们想知道墙上是否有 window 或其他开口,以及此类开口的数量及其位置。

我尝试遍历节点的多边形,获取它们的质心和法线并试图找到不连续点,但它没有给出高置信度的结果。

也尝试计算边缘以外的直线,但有时直线会出现在墙的中间。

那么还有其他方法吗?也许 Three.js 中有一个内置函数来计算网格的边缘?

可能有一些非常简单的方法来计算边数等等,但恐怕它们不会有太大帮助,除非你有非常简单的几何图形,并且没有例外情况。

对于更通用的解决方案,我认为您最好的选择是使用多边形的顶点、边、法线等生成实体模型,以及一些能够处理实体的 3D 几何库分析它们的拓扑结构。

这是搜索 "js 3d boolean"

时出现的第一个

https://duckduckgo.com/?q=js+3d+boolean

FinalMesh 布尔 3D 库:

http://finalmesh.com/boolean3d.htm

这个说它可以处理有孔的多边形并优化它们,包括去除孔,去除多余的点和从三角形生成多边形。

给定一个多边形 P,你可以去掉它的洞来生成一个无洞的多边形 Q,然后从 Q 中减去 P 以获得 P 中的所有开口。

我相信还有很多其他的可供您评估和比较。