将重叠的三角形合并成一个多边形。

8
我有一堆重叠的三角形,它们来自于一个3D模型在2D平面上的投影。我需要将每个接触的三角形岛屿合并成一个封闭的、非凸多边形。
结果的多边形不应该有任何洞(因为源数据中没有)。
许多源三角形与源数据中的其他三角形共享(浮点相同的)边。
最简单的方法是什么?性能并不特别重要,因为这将在设计时完成。

1
请参阅“复杂多边形的并集”:https://dev59.com/1nE85IYBdhLWcg3wqlaE - unutbu
3个回答

2
尝试使用gpc或通用多边形剪辑库。

不幸的是,这将用于商业游戏;不确定UManchester会对此感觉如何。 - nornagon
1
gpc也有商业许可证。此外,gpc在http://www.cs.man.ac.uk/~toby/alan/software/#Links上列出了其他类似的库。也许其中一个拥有更合适的许可证。 - lhf

2
将文本翻译成中文:

想象将模型投影到平面上,这就是模型的“视图”(即投影方向是视线,投影是你所看到的)。在这种情况下,您想要计算的多边形的边界对应于模型的轮廓。

轮廓反过来是模型中的一组边缘。对于轮廓中的每条边缘,相邻的面将具有法向量,它们指向远离平面或指向平面。你可以通过将面法向量与平面法向量的点积进行检查,寻找相邻面法向量在投影方向上具有相反符号的边缘。

一旦你找到了所有的轮廓边缘,你可以把它们连接起来,形成所需多边形的边界。

通常,您可以通过搜索“网格轮廓发现检测”等术语来了解更多关于轮廓检测和提取的信息。也许一个好的起点是这里


这还不够充分--首先,我有几个模型部件的投影重叠。 - nornagon
@nomagon,说得好。另外,您的模型是封闭的吗?即它们像球体或环面一样有内部和外部?还是它们只是一个普通的多边形混合物? - brainjam

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接