我正在为我的3D游戏实现物理引擎。到目前为止,我已经能够实现OBB、球体和飞机之间的碰撞检测。引擎生成触点,并通过迭代的基于脉冲的方法解决它们。
结果是这 (到目前为止)。
现在,我需要检测和生成高度地图地形和那些边界体积(球体和OBB)之间的接触。地形是这样的:
我不知道怎么做。我需要检测碰撞和生成联系数据(接触点,接触正常和相互渗透,以满足我现有的发动机)。我知道我不能用SAT,因为地形在不凸起。盒子和球体的特别代码呢?还是有一个普遍的方法?
我把问题的范围缩小到检测(并解决)简单的凸碰撞(球形/OBB)和三角形(总是凸的)之间的碰撞。由于地形被存储为高度图,所以我可以很容易地选择一个三角形子集来运行算法。我可以用SAT来探测渗透。但是碰撞反应呢?如何生成必要的接触数据(碰撞点和碰撞正常值)来解决碰撞问题?
发布于 2018-11-06 01:47:16
地形是一个很难进行碰撞检测的例子,因为它很复杂,所以降低了问题的复杂性。一种可能的解决方案是静态地形网格:
让你的地形由小的、可管理的块组成。把它们组织成三角形。
加载地形网格时,从顶点数据生成AABB和三角形集。AABB代表你的宽相位,三角形集代表你的窄相位。
一旦检测到可能的碰撞,然后执行OBB/三角形,或球面/三角形碰撞检查。在那个阶段,你可以使用任何你想要的窄相位算法。
这绝不是最优的解决方案,但它是一个可行的解决方案。
https://gamedev.stackexchange.com/questions/165111
复制相似问题