2014-02-16 20 views
0

形势rollingfriction子弹三维不会表现得像演示

我正在做一个台球模拟器,并有一个静态btBox表示与btSphere的作为球台面。在演示中,地面(平台表面)和btSphere分别给出了滚动摩擦的正值,分别为1.0和0.3。演示节目的球体自然滚动并最终静止。

当我在模拟中使用这些值时,球体无法保持角速度,只能在桌面上“滑动” - 无论我在表面/球体中设置了哪种滚动摩擦值。

如果我将滚动摩擦设置为表面零(无所谓),那么它会产生逼真的滚动行为,直到球即将休息。然后它以某种方式获得这个恒定的,慢的速度,并像桌上的僵尸一样滚动。在任何接触之前,球有时会开始滚动。

考虑

我已经试过摩擦/阻尼的多种组合,并且不能重现演示的行为或修复我提的问题。在我的设置中,我能想到的唯一重要区别是我的尺寸更小。这不是简单的解释为什么这些很小,但我的BALL_RADIUS = 0.0103和BALL_MASS = 0.12393。

问题(S)

任何想法,就是为什么我的球的时候我已经在表面与球体上都滚动摩擦不纺?

否则,当我只在球体上设置滚动摩擦时,任何想法都会阻止球停止运动?

思考

的文档/演示/代码/网页在记录滚动摩擦不要做了很好的工作。无论是或者我正在做一些非常奇怪的事情......请帮助!

+0

检查您是否正确地将旋转从btMotionState转换为图形 - 问题可能不是子弹。 –

回答

2

我认为问题出在你的单位上,尽管可能还有其他问题。首先,子弹0.05和10(http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Scaling_The_World

秒之间使用单位时效果最好,如果您使用由像大理石沉重的固体物质的半径0.01球,质量应该是大约2.85(http://www.convert-me.com/en/convert/weight2volume/

+0

是的,我同意,不好的单位似乎是合乎逻辑的,实际上是我的设置和演示的做法之间的唯一区别。我尝试使用你所建议的值,但是在行为方面没有任何变化。真正的错误必须是一些细节的副作用,尽管我已经倾注了代码,但我没有看到它。我有一个黑客,看起来相当现实,所以它不是完全损失,但如果我知道什么是错误的,我一定会在这里解释。 –