物理引擎中的大型球形世界

时间:2015-05-22 07:37:24

标签: game-physics physics-engine cannon.js

(这个问题的目标是Cannon.js(@schteppe),但希望答案适用于其他引擎,以免其他人使用Cannon。)

似乎在物理引擎中构建巨大球形世界的一种策略是从6个高度图开始形成一个立方体,然后将该立方体扭曲成一个球体(“立方球体”方法,see this explanation )。

所以这种方法看起来很好,而我正准备实施它只是因为它是其他人似乎正在做的事情,但我脑子里有一个唠叨(很可能是天真)的问题:

  

为什么不生成(非刚体)球面并使用它   在模拟的前期步骤中提供反作用力   对于低于该表面的顶点?有什么问题吗   用这种方法让人们避开它并选择立方体   球体方法呢?

所有对象的重力都是在前置步骤中应用的,所以看起来只是在我对它时检查对象顶点的问题?

在我的特殊情况下,世界不需要高分辨率,甚至可能是一个块状的,类似于我的世界。它也不需要任何纹理或类似的东西,如果这对许多人选择立方体球体方法有一些影响。谢谢!

1 个答案:

答案 0 :(得分:2)

如果你去了球体/立方体路径,那么你可以获得很多东西"免费"来自物理引擎。它包括稳定的接触,摩擦,碰撞事件等。

如果你实施了一个强制范围"在每个穿透顶点上沿法线方向施加力,有一些明显的东西你会错过:

  • 没有摩擦:除非你自己实施摩擦,否则你的物体会在行星表面上滑动(如果没有摩擦力解算器,很难做到这一点)。

  • "海绵"联系人:由于您使用显式力计算而非联系解算器,因此联系人将允许更大的渗透。 (除非你使用大弹簧系数和非常小的时间步长 - 这会导致性能不佳)

  • 在山脊上的穿透:如果你想在你的星球上有某种山脊或尖锐的山峰,你就不能将物体直接落在山顶上。峰值将穿透没有顶点的物体。物理引擎在网格剪裁的帮助下为您解决了这个问题。