如何生成符合飞机的斜坡,是使用碰撞检测的一个好主意?

我有一个由网格定义的地形。 而且还有很多其他的多边形面分布在整个地形上,它们可以位于地形的上方,下方或切割。 你可以把这些面孔想象成平台。

下面的截图应该澄清我的意思。 尽管看起来很平滑,但所有的网格实际上都是由小的元素(数目> 10k)组合在一起,给出了光滑的虚假外观。 明显的断开的区域是平台。

在这里输入图像描述

我的问题是,我怎样才能生成连接平台和其他平台/地形的斜坡? 斜坡平面被定义为一系列零碎的平面,从平台的边缘开始向下或向上,取决于最近的平台或地形元素的位置。

我需要生成斜坡,以便计算斜坡和地形之间的体积差异,这不仅仅是为了可视化目的。

我正在考虑使用碰撞检测引擎来做这样的事情,但是

  1. 我不太确定这是否是正确的想法
  2. 如果这是正确的想法,我可以使用任何开源碰撞检测引擎(C或C ++或C#)?

编辑:任何可以做到这一点的开源框架是需要的。

我不确定我确切地知道你想要做什么,但是我确信你不需要碰撞检测引擎。 你会想要使用碰撞检测引擎的一些原则,但不需要一个完整的引擎。 我假设你发现这些斜坡后,他们不会改变? 这个地形是静态的吗?

这里有几个问题。

  1. 找出最接近的表面“连接”的地点和位置。 这可能可以通过边缘的正常情况(如射线)来解决,看看那里有什么东西(先往下走?)。 如果遇到平台,find最接近的边缘(碰到的边缘),然后转到问题2.如果是地形,则转到问题2。

  2. 如何连接到两个表面。 可能这个问题可以和问题1几乎一样。你find了问题1所需要的方向,现在在这个方向的边缘的每一端创建一个法线。 现在你开始的目标以及那些法线碰到别的东西的地方就是你的4分。

  3. find你碰到什么东西的时候 我假设你有一些可以参考的高度图。 希望你能够和你的光线一起使用它来发现3D空间中的某个点是否存在。 否则,您将不得不检查区域中的所有基元(三角形?四边形?)以查看是否存在交叉点。

不确定这是否真的很清楚,但有点难以解释。 祝你好运!

在我看来,这是您将通过使用当前网格作为渲染网格来解决的问题的types,并为连接建模应用程序内部的适当表面的碰撞创建单独的网格。 我不确定把时间投入到一个algorithm中是否值得,除非你会一再反复地遇到这个问题。