【发布时间】:2010-05-12 08:16:51
【问题描述】:
我有一堆从 3D 模型投影到 2D 平面的重叠三角形。我需要将每个接触三角形的岛合并成一个封闭的非凸多边形。
生成的多边形中不应有任何洞(因为源数据没有)。
许多源三角形与源数据中的其他三角形共享(浮点相同)边。
最简单的方法是什么?性能并不是特别重要,因为这将在设计时完成。
【问题讨论】:
标签: algorithm math graphics geometry
我有一堆从 3D 模型投影到 2D 平面的重叠三角形。我需要将每个接触三角形的岛合并成一个封闭的非凸多边形。
生成的多边形中不应有任何洞(因为源数据没有)。
许多源三角形与源数据中的其他三角形共享(浮点相同)边。
最简单的方法是什么?性能并不是特别重要,因为这将在设计时完成。
【问题讨论】:
标签: algorithm math graphics geometry
试试gpc,或通用多边形裁剪库。
【讨论】:
将投影到平面上想象为模型的“视图”(即投影方向是视线,投影就是您所看到的)。在这种情况下,您要计算的多边形的边界对应于模型的轮廓。
反过来,轮廓是模型中的一组边。对于轮廓中的每条边,相邻面将具有指向远离平面或指向平面的法线。您可以检查这是否采用面法线与平面法线的点积 - 查找相邻面法线与投影方向具有相反符号的点积的边。
找到所有轮廓边后,您可以将它们连接到所需多边形的边界中。
通常,您可以通过谷歌搜索 mesh silouette finding detection 等术语找到更多关于轮廓检测和提取的信息。也许一个好的起点是here。
【讨论】:
我也找到了这种[1] 方法,接下来我会尝试。
【讨论】: