gpt4 book ai didi

c++ - 在 Bullet 中使用 "mass"

转载 作者:行者123 更新时间:2023-11-30 04:08:09 28 4
gpt4 key购买 nike

我很抱歉问这样一个关于子弹的基本问题。但是,我有一个问题。这是设置:

我有一个没有重力的世界。当我按下一个键时,会在世界中心创建一个 1x1x1 的框。当我右键单击时,在相机位置创建一个大小为 0.05*0.05*0.05 的框,并朝您正在看的方向“拍摄”。这就是麻烦的开始。

当一个小立方体撞到一个大立方体时,交互似乎是错误的。你会认为一个盒子的大小是另一个盒子的 1/8000 几乎没有什么影响。然而,大立方体飞了起来,就好像它和一个同样大小的立方体在一起一样。我认为这是因为我创建了两个质量相同的物体。

为了确认这一点,我施加了 1 牛顿的向上力(或子弹使用的任何单位)。两个物体以相同的速度加速。

我创建对象的代码如下:

btMotionState *state = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, 0)));
btConvexHullShape* shape = new btConvexHullShape();
for(unsigned int i = 0; i < vertices.size(); ++i) {
shape->addPoint(toBt(vertices[i]));
}
shape->setMargin(0.01f);

btScalar mass = 1.f;
btVector3 inertia;
shape->calculateLocalInertia(mass, inertia);
shape->setMargin(0.01f);
btRigidBody::btRigidBodyConstructionInfo ci(mass, state, shape, inertia);
body = new btRigidBody(ci);

我认为 btScalar mass = 1.f; 行是罪魁祸首。

我需要计算我的物体的质量吗?这对于立方体来说已经足够简单了,但是对于一些奇怪的凸形呢?有什么办法可以让子弹帮我做这件事吗?

最佳答案

是的,质量是罪魁祸首。把你的大盒子想象成一个空木箱,把你的小盒子想象成一个实心的铁立方体。大小差异巨大但质量相同。现在你的物理学似乎是正确的,对吧?

是的,您需要提供质量。是计算还是只说“这个箱子重 20 公斤”,由您决定。实际上,期望别人为您计算质量只会让您的问题变得更糟,因为除了几何形状之外,您还必须指定对象的 Material 、 Material 密度和 Material 分布。如果您想这样做,还有许多其他工具可以帮助您进行此类计算。但我相信您同意,到目前为止,通过反复试验来陈述一些质量要容易得多。

关于c++ - 在 Bullet 中使用 "mass",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com