可以正确模拟台球游戏的物理引擎推荐?[关闭]


13

我正在做类似台球游戏的游戏。此游戏需要正确(或非常准确)的反射反弹。我尝试了Box2DBullet Physics,但是它们都存在此问题。

插图

如果此图像上方有一堵墙,则在台球游戏中,红线是真实球的预期路线。但是引擎经常显示绿线路线。特别,

  1. 这是在缓慢移动的球撞击墙壁后发生的。
  2. 有时快速移动的球突然变慢。

我正在寻找一种物理引擎,该引擎可以尽可能准确地模拟台球游戏而不会出现这些问题。我可以得到一些建议吗?现在,我正在研究Newton Game Dynamics,但不确定引擎是否会显示我想要的内容。我正在考虑将PhysX引擎作为下一个试用版,如果无济于事,必须自己动手做。但是很明显,这将需要很长时间,所以我希望我不会那样做。如果您节省时间,我将不胜感激。当然,也欢迎使用Box2D / Bullet Physics解决方案。

我正在iOS上使用C / C ++ / Objective + C。


我将我的配置附加到Box2D。

  • 静态盒形
  • 线性/角度阻尼= 0.1
  • 恢复原状= 1.0
  • 摩擦力= 100
  • 密度= 10
  • 项目符号=错误
  • 固定旋转=假
  • 惯性比例= 1.0

  • 动态球体形状
  • 线性/角度阻尼= 0.1
  • 恢复原状= 1.0
  • 摩擦力= 100
  • 密度= 20
  • 项目符号=真
  • 固定旋转=假
  • 惯性比例= 1.0

3
可能是引擎没有错,但是您没有设置属性或以某种方式做错了。
共产党鸭子


我用密度1和摩擦力0.0〜0.1进行了测试,它一直保持粘附。
恩尼尔(Eonil)2011年

Answers:


8

几种解决方案。

  1. 对于Box2D,b2_velocityThresholdb2Settings.h文件中设置。就我而言,我将其设置为0.0f有效!质量,摩擦,阻尼都不是问题。检查此讨论主题以获取更多详细信息。 http://www.box2d.org/forum/viewtopic.php?f=3&t=6906&p=30782#p30782

  2. 使用其他物理引擎。 Newton Game Dynamics配置为默认情况下正确执行此操作。但是,可以在iOS中使用牛顿动力学,但要比其他方法难一些。我花了几天时间为iOS配置它。

我也在BulletPhysics论坛上提问。找到解决方案后,我将对其进行更新。

-(编辑)-

Bullet中有一些阈值属性,但是我找不到与完全相同的东西b2_velocityThreshold

这看起来很相似,但是效果不佳。

btRigidBody->setContactProcessingThreshold(0.0f)

6

Box2D会做您想做的事,但是您必须为墙壁和球形固定装置设置恢复(反弹)常数。对于台球游戏,您可能想从完美的恢复力和高摩擦力开始,但要进行线性和角度阻尼,然后从那里进行调整。


我在几天内尝试了许多配置,但仍然会发生。我可以举一个很好的例子吗?
恩尼尔(Eonil)2011年

3
对于Box2D,您的密度和摩擦值似乎很大。

4

物理引擎具有反弹阈值。我不知道如何在任何一个引擎中执行此操作,但是将阈值设置得太高将导致它忽略一定速度下的影响。降低反弹阈值,它将以较低速度反弹。

我知道您要求使用其他物理引擎,但是我所知道的所有物理引擎都使用反弹阈值来防止对象在彼此重叠时抖动。因此,建议一个好的物理引擎会适得其反,因为任何一个好的物理引擎都会产生这种效果。


0

我遇到了这个问题,对我来说解决方案是提供完美的赔偿。

所以对我来说,所有对象的sqrt为0.5。因为在理想情况下sqrt(r1 * r1 + r2 * r2)== 1

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.