我最近比较了一些用于仿真和游戏开发的物理引擎。有些是免费的,有些是开源的,有些是商业的(1甚至是非常商业的$$$$)。
Havok,Ode,Newton(又名oxNewton),Bullet,PhysX和某些3D引擎中的“原始”内置物理。
在某个阶段,我得出了结论或疑问:
如果由于GPU处理而可以利用NVidia PhysX的出色性能(如果需要),为什么还要使用除NVidia PhysX之外的任何东西?对于将来的NVidia卡,我可以期望独立于常规CPU生成步骤的进一步改进。该SDK是免费的,并且也可用于Linux。当然,这有点像供应商锁定,它不是开源的。
您的看法或经验是什么?如果您现在就开始开发,您是否同意以上内容?
干杯
最佳答案
免责声明:我从未使用过PhysX,我的专业经验仅限于Bullet,Newton和ODE。在这三者中,ODE无疑是我的最爱。它在数值上最稳定,另外两个存在成熟度问题(未实现有用的关节,合法的关节/运动组合行为未定义,等等)。
您提到了问题中的供应商锁定问题,但值得重复:如果使用PhysX作为唯一的物理解决方案,则使用AMD卡的用户将无法运行您的游戏(是的,我知道它可以be made to work ,但它不是官方的,也不受NVIDIA支持)。解决此问题的一种方法是使用ODE或带有AMD卡的系统上的东西定义故障转移引擎。这行得通,但会使您的工作量加倍。诱人的是,您可以将两个引擎之间的差异隐藏在一个通用界面后面,并且一次编写大量的游戏物理代码,但是您在游戏物理方面的大部分困难将在于处理特定游戏对象的特质物理引擎,确定诸如接触摩擦和恢复原状之类的值。这些值在物理引擎中没有一致的含义,并且(通常)不能正式得出,因此您不得不通过实验来寻找美观,可玩的值。借助PhysX加上故障转移,您可以完成所有削减工作两次。
在更高的层次上,我认为还没有任何流处理API完全成熟,并且我不愿意承诺一个,至少,直到我们了解客户对英特尔Larrabee的反应如何塑造人们的看法为止。设计。
到目前为止,我还没有避免将PhysX视为高端游戏开发的明显选择,除非您不认为拥有AMD卡的人占玩家基础的很大一部分(极不可能),否则您应该避免使用PhysX。有足够的编码和QA人力来测试两个物理引擎(似乎更合理,尽管如果您的公司如此有钱,我听说过有关Havok的好消息)。或者,我想,如果您设计的物理游戏对性能的要求如此之高,以至于只有流媒体物理学才能满足您的要求,但在这种情况下,我建议您成立一个乐队,让摩尔定律做一年一两个