【问题标题】:How to calculate overall area of multipy meshes that overlap itself如何计算重叠自身的多个网格的总面积
【发布时间】:2016-03-11 22:38:48
【问题描述】:

我在 Unity 中的网格很少,有时会重叠/相交。

这些网格是平面的 (z=0)。它可以是如下图所示的 3 种情况。每次我想计算整体面积(图片上标记为黑色)

我认为它可以基于计算面积来完成,只取组合网格的外点?有没有人可以提供任何关于如何做到这一点的示例?

【问题讨论】:

  • 我正在尝试计算这些网格的表面积。你还需要解释什么?
  • 我可以确认 Unity 与形状相交计算之类的东西没有任何联系。请注意,“网格”在这里实际上完全不涉及。您可以可能使用像 assetstore.unity3d.com/en/#!/content/18544 这样的包,但令人困惑的是,它会执行您感兴趣的事物的 3D 数学运算。
  • 关键是我永远不会知道这些对象会是什么样子以及它们将如何相互交叉等等。在我的示例图片中,我试图绘制一些可能的情况,而这些对象不是在这张照片上 45 度角(但它们可以看起来像这样)

标签: c# unity3d


【解决方案1】:

我可以为您指出 Weiler-Atherton 裁剪算法 here 和 C++ 实现 here

另一种替代方法(但我认为更耗时)如下:

  1. 对多边形进行三角剖分(较难的部分)并用原始多边形的标签对其进行标记
  2. 计算所有三角形之间的交点列表(容易得多,因为您只需要与 2 个三角形相交)
  3. 计算与不同标签相交的三角形面积 => 所需输出

【讨论】:

  • 确实如此。这个问题与网格或 Unity 无关。这是纯粹的计算。
  • 也许这是纯粹的计算,但我的问题也是Unity中是否有任何内置方法。
  • @Tamas Ionut Weiler-Atherton 裁剪算法是一个好主意,而且我现在肯定只有一个。我会看看这个
  • @seek 添加了另一种选择(比 Weiler 算法更容易)
  • hi @TamasIonut “对多边形进行三角剖分(较难的部分)” 实际上,因为这是在 3D 图形情况的上下文中,所以您可以免费对形状进行三角剖分。确实,请注意,获取“人类会看到的外部多边形”是乏味且有问题的。网格实际上只是一个三角形列表,甚至不知道它是否(比如说)平滑连接,更不用说它是否具有外部边缘等整体含义。
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 2020-02-10
  • 2012-04-16
  • 2020-08-23
  • 1970-01-01
  • 2011-11-12
  • 2013-12-21
相关资源
最近更新 更多