问题标签 [bulletphysics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
138 浏览

c++ - How to make collisions affect rotation only on X and Z axes in lib Bullet?

Having a terrain and some mesh objects placed as STATIC I throw capsule like objects onto my world (for example agents my engine wants to navigate).

I need tham to bahaive as normal collidable objects yet I need tham not to rotate on one axis at all (for me it is Y) so agents always are in a "standing" vertical position like so:

enter image description here

thay will be able jump and move... So I wonder how to make collisions affect rotation only on X and Z axes in Bullet?

0 投票
1 回答
1158 浏览

game-physics - 哪个约束可以保持物体之间的固定距离?

我有两个球体,它们应该始终彼此保持恒定的距离。只要它们的距离保持不变,它们就可以以各种自由度移动。想象它们被一根看不见的杆神奇地连接起来。在物理模拟期间对这些球体施加各种力以移动它们。

我为球体使用了两个 Bullet SphereShapes。我可以在这两个球体之间使用什么样的约束(关节)来模拟它们的恒定距离和连接?

在我看来,我需要引入一个虚拟形状(圆柱体?胶囊?)来连接这两个球体,并在其两端的每一端引入一个球形约束(球窝接头)以连接到球体。

有没有更好的方法来实现这个设置?我使用什么样的约束?

0 投票
1 回答
204 浏览

bulletphysics - Panda3D:如何定位 BulletGenericConstraint?

默认情况下,Panda3D中的BulletGenericConstraint沿正 X 轴定向。setAngularLimit方法只能用于沿 X、Y 或 Z 轴进行设置如何通过 BulletGenericConstraint 连接两个不与任何轴正交的物体?

也就是说,我如何将 BulletGenericConstraint定向到沿任意矢量的方向,而不是沿 X、Y 或 Z 轴?

0 投票
1 回答
2551 浏览

c++ - 如何在 Code::Blocks 上启用 SSE/SSE2?

所以我试图编译一些代码(具体来说是子弹物理演示),然后出现了一个错误,说 SSE 和 SSE2 没有启用。我检查了 Code::Blocks 中的编译器标志,并且 SSE/SSE2 不在那里。我试图将标志放在“其他选项”中(-msse,-msse2),但没有奏效。

然后我在 stackoverflow 上看到了一个帖子,上面说尝试“-march=native”,我做到了。那也没有用。

我正在使用 G++ (MinGW) 进行编译,并且我在 Windows 7 x64 上。

如果这意味着什么,则该项目正在使用自定义生成文件。

0 投票
1 回答
1362 浏览

ogre - 子弹物理引擎:为什么重力不加速?

我有一些质量为 30、恢复为 0.6、摩擦为 0 的刚体。

重力设置为 -15(我也尝试了更高的值,最高可达 -1000)。

刚体下落非常缓慢,也不会加速。

什么可能的事情可能导致这种行为?

0 投票
1 回答
5648 浏览

visual-studio-2010 - VS2010 使用命令行参数调试

我已经在该project properties -> debugging -> command arguments部分中为我的应用程序设置了命令行参数。

如果我直接从命令行运行程序,我会这样做:

progname arg1 arg2

所以我将 VS 中的命令行参数设置为

arg1 arg2,

如此处所述

但是,该程序的运行方式似乎与从命令行运行它的方式不同。参数是文本文件,并且在命令行中它可以正确加载这些文本文件,在 VS2010 中它不会以某种方式加载。任何想法为什么?


编辑:更新/澄清帖子:

我没有任何例外。

我的解释可能过于简单化了这个问题。我实际上并没有加载文本文件,而是加载了一个物理引擎,它应该在运行时确定,所以我需要命令行参数。

在高层次上用于加载物理引擎的代码是:

我正在使用 Bullet,它的运行方式如下:

arg1是物理引擎名称,arg2是要加载的物理文件,但它挂在arg1.

我在命令行上调用它的具体方式是:

如果我在命令行上执行此操作,它可以工作,但是如果我将这些参数传递给调试器,我会遇到问题could not load physics engine

这可能是物理引擎加载器内部的结果,它来自另一个来源,但我的猜测是,无论我在命令行中还是在 VS 的调试器设置中传递这些参数,这应该以相同的方式工作。

我将查看 UAC 设置,看看他们说什么。

0 投票
1 回答
739 浏览

quaternions - 我通过反复试验得出的结论,您能解释一下原因吗?

首先,我不确定这里是否欢迎这个问题,我检查了常见问题解答并发现“我希望其他人解释”的问题是。

主要问题是我需要在我的应用程序中存储所有对象的旋转两次。这是因为一方面,我使用Bullet Physics的物理模拟存储了它的表示。另一方面,我自己存储所有对象共有的旋转,无论它们是否在物理模拟中,例如灯光、任务目标等。除了物理库之外,我还使用了GLM数学库。

我必须同步两种表示。顺便说一句,位置和规模不会造成任何问题。困难在于物理模拟任何我自己的表示都是不同的,所以我不能只是复制值。我还没有发现所有这些差异,但它可能与左手坐标系与右手坐标系、度数与弧度以及 Y 坐标向上与 Z 向上有关。

我自己的表示只是将欧拉角存储在glm::vec3向量中。由于我使用 OpenGL 进行绘图,我猜空间是右手的。对于欧拉角,顺序很重要。我计算旋转矩阵的方法是首先创建每个组件的矩阵,然后按X * Y * Z顺序将它们相乘。此外,在我自己的表示中,正 Y 坐标指向上方。

物理模拟使用四元数来存储旋转。经过一些研究,我读到了这个库中空间是左手的假设。我没有关于哪个坐标是向上的信息,也没有关于返回欧拉角的顺序的信息。

这是将旋转从物理模拟转换为我自己的表示的代码,反之亦然。

我通过反复试验发现了这个肮脏的代码,它可以工作。但正如您所看到的,通过不同的四元数类型进行否定、组件混合和类型转换。我想其中许多是不必要的,并且可以更简单地执行任务。

您能否解释一下为什么我的转换确实有效以及如何简化它们?顺便说一句,如果转换不起作用,我想看看它的外观,这是一个屏幕截图......

0 投票
2 回答
4523 浏览

physics - Bullet 中的惯性张量为零有什么作用?

在 Bullet Physics 库中,构造刚体时,惯性张量的默认参数是零向量。

我对惯性的理解相当初级,但从方程

扭矩 = 惯性 * 角速度

我希望零惯性物体上的角速度是不确定的。

构造刚体的文档说

对于动态对象,可以使用碰撞形状来逼近局部惯性张量,否则使用零向量(默认参数)

那么这个零惯性会发生什么?我误解了方程式吗?或者在 Bullet 中具有零惯性类似于在将物体定义为相对于方向是静态的时具有零质量?

0 投票
2 回答
539 浏览

sdk - Corona SDK Physics 在物体运动时打开和关闭

下面是我的主要文件。基本上发生的事情是,当“矩形”对象不移动时,碰撞正在起作用,但只要我移动矩形对象,碰撞就会停止生效。我认为它知道它正在发生碰撞,但它没有做任何事情(比如与对象的交互)。有没有人有任何想法,为什么会这样?以及如何解决?

0 投票
1 回答
843 浏览

c++ - 夹紧刚体的旋转角度

我最近在我的 3d 游戏中将一个刚体连接到相机上,这样它就可以与环境发生碰撞。现在鼠标移动直接旋转刚体。

我想将相机的间距限制在 to 的范围-80°80°。这有助于玩家保持定向。否则,他将能够将摄像机旋转到更高的位置,然后将自己身后的世界颠倒过来。相比之下,一个真正的人尝试这样做会折断他的脖子。

我让Bullet Physics在四元数中为我存储旋转,因此音高不是直接存储的。如何钳制刚体的间距?