【问题标题】:Merge overlapping triangles into a polygon将重叠的三角形合并成一个多边形
【发布时间】:2010-05-12 08:16:51
【问题描述】:

我有一堆从 3D 模型投影到 2D 平面的重叠三角形。我需要将每个接触三角形的岛合并成一个封闭的非凸多边形。

生成的多边形中不应有任何洞(因为源数据没有)。

许多源三角形与源数据中的其他三角形共享(浮点相同)边。

最简单的方法是什么?性能并不是特别重要,因为这将在设计时完成。

【问题讨论】:

标签: algorithm math graphics geometry


【解决方案1】:

试试gpc,或通用多边形裁剪库。

【讨论】:

  • 不幸的是,这将用于商业游戏;不确定 UManchester 对此有何感受。
  • gpc 也有商业许可证。此外,gpc 在cs.man.ac.uk/~toby/alan/software/#Links 列出了其他类似的库。也许其中一个拥有更合适的许可证。
【解决方案2】:

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

反过来,轮廓是模型中的一组边。对于轮廓中的每条边,相邻面将具有指向远离平面或指向平面的法线。您可以检查这是否采用面法线与平面法线的点积 - 查找相邻面法线与投影方向具有相反符号的点积的边。

找到所有轮廓边后,您可以将它们连接到所需多边形的边界中。

通常,您可以通过谷歌搜索 mesh silouette finding detection 等术语找到更多关于轮廓检测和提取的信息。也许一个好的起点是here

【讨论】:

  • 这还不够——首先,我有几个模型部件的投影重叠。
  • @nomagon,好点子。另外,您的模型是否已关闭? IE。它们有像球体或圆环那样的内部和外部吗?还是它们只是一般的多边形汤?
【解决方案3】:

我也找到了这种[1] 方法,接下来我会尝试。

[1]2d outline algorithm for projected 3D mesh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多