可以处理多个吸引子的物理引擎?


9

我正在整理一款将主要在三维重力下进行的游戏。

我的意思是说,多个行星/恒星/月球表现得很真实,并且表示重力场中的路径绘制和路径预测。

我研究过各种物理引擎,例如BullettokamakNewton,但它们似乎都不适合,因为我必须在其框架中重新编写重力引擎。

您是否知道一种物理引擎能够处理多个彼此吸引的物体?

我不需要场景图管理或渲染,只需要核心物理即可。(碰撞检测和刚体动力学一样是额外的奖励)。


我的背景是物理学,因此我可以编写一个使用Verlet集成或RK4(甚至必须使用Euler集成)的引擎,但是我更愿意采用现成的解决方案。

[编辑]:有一些伟大的资源用于物理模拟N体问题的在线,并在计算器


7
您不能简单地使用Bullet并以某种方式选择退出其标准重力吗?(例如,避免调用applyGravity,使用零向量调用setGravity,使用BT_DISABLE_WORLD_GRAVITY ...)仅仅因为您期望的效果恰好是一种重力形式,并不意味着您需要能够通过以下方式的“ gravity” API来实现基础物理引擎。
Neverender 2012年

您可以使用某种反向弹簧
Roy T.

1
@RoyT。弹簧本身的力与d成正比,而重力为d ^(-2)(甚至不等于d ^(-1))。您可以从两者获得轨道,但特征却截然不同。如果您只是说“使用引擎提供的基于距离的约束”,则可以-如果它具有平方反比。
凯文·里德

@KevinReid您可能是正确的,但我不确定我能得到您的解释。您是说弹簧力与距离成线性关系,而重力与平方成反比关系吗?
罗伊(Roy T.)

1
Osmos是一款很棒的小游戏。我能找到的最好的就是这次采访
Brice 2012年

Answers:


2

由于三体问题,我认为您将无法使用传统的时间片物理引擎不允许稳定的轨道。

您也许可以将物理引擎从Stellarium或其他一些天文学软件包中删除。

但是,我认为最好的做法是烘烤行星的路径并将其拉出桌子。除非您的玩家可以通过他的动作实际影响行星的轨迹,否则没有必要进行完整的模拟。


其实,WRT的N体问题,你可以得到稳定的轨道。这取决于您的集成方法。我已经用verlet和RK4管理了稳定的轨道。
布莱斯2012年

预先计算路径是一个合理的建议,但是我想动态地动态生成系统,而且,行星并不是我真正担心的。我实际上希望船只受重力影响,并且由于它们将在玩家的控制下,因此无法预先计算路径。
布莱斯

据记录,获得稳定轨道的方法是制造对称系统。同样,不稳定的时间尺度比平均游戏时间长得多。(超过100到1000颗不稳定的行星轨道,而游戏持续时间不会超过4/5)
布莱斯(Brice

对于稳定轨道的例子,看看这个(使用verlet的)
布莱斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.