子弹3d中的滚动摩擦不像演示一样

时间:2014-02-16 02:12:30

标签: c++ physics game-physics bullet bulletphysics

场合

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

当我在模拟中使用这些值时,球体永远不能保持角速度并且只是在桌子上“滑动” - 无论我在表面/球体中设置滚动摩擦的是什么值。

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

考虑

我尝试了许多摩擦/阻尼组合,无法重现演示的行为或解决我提到的问题。在我的设置中,我能想到的唯一重要的差异是我的小得多。解释为什么这么小但我的BALL_RADIUS = 0.0103和BALL_MASS = 0.12393并不简单。

问题(S)

当我在表面和球体上产生滚动摩擦时,任何想法都是为什么我的球没有旋转?

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

思想

docs / demo / code / web在记录滚动摩擦方面做得不好。或者我正在做一些非常奇怪的事......请帮忙!

1 个答案:

答案 0 :(得分:2)

我认为问题出在您的单位,尽管可能还有其他问题。首先,当使用0.05到10(http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Scaling_The_World

之间的单位时,Bullet效果最佳

其次,如果你使用半径为0.01的球,像大理石那样的重固体材料,质量应该在2.85左右(http://www.convert-me.com/en/convert/weight2volume/