我有一堆重叠的三角形,它们来自于一个3D模型在2D平面上的投影。我需要将每个接触的三角形岛屿合并成一个封闭的、非凸多边形。
结果的多边形不应该有任何洞(因为源数据中没有)。
许多源三角形与源数据中的其他三角形共享(浮点相同的)边。
最简单的方法是什么?性能并不特别重要,因为这将在设计时完成。
结果的多边形不应该有任何洞(因为源数据中没有)。
许多源三角形与源数据中的其他三角形共享(浮点相同的)边。
最简单的方法是什么?性能并不特别重要,因为这将在设计时完成。
想象将模型投影到平面上,这就是模型的“视图”(即投影方向是视线,投影是你所看到的)。在这种情况下,您想要计算的多边形的边界对应于模型的轮廓。
轮廓反过来是模型中的一组边缘。对于轮廓中的每条边缘,相邻的面将具有法向量,它们指向远离平面或指向平面。你可以通过将面法向量与平面法向量的点积进行检查,寻找相邻面法向量在投影方向上具有相反符号的边缘。
一旦你找到了所有的轮廓边缘,你可以把它们连接起来,形成所需多边形的边界。
通常,您可以通过搜索“网格轮廓发现检测”等术语来了解更多关于轮廓检测和提取的信息。也许一个好的起点是这里。