问题标签 [bullet]

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 回答
92 浏览

c++ - GL_ShapeDrawer 包括

我很难将 GL_ShapeDrawer 包含到我的项目中。这是我第一次尝试 C++ 并且有点难以解决。也使用 Visual Studio 2013。我正在玩子弹演示,更具体地说是车辆演示。

我有一个 c++ openGL 项目,其中我设法包含子弹物理,并且我设法将一些演示重新创建到我自己的项目世界中,但是我遇到了 GL_ShapeDrawer 的问题。我不知道如何将其包含到外部依赖项中以使用 drawOpenGL 方法,因为 GL_ShapeDrawer 不是我设法包含的任何库(BulletCollision、BulletDynamics、BulletSoftBody 和 LinearMath)的一部分。

0 投票
2 回答
8659 浏览

c++ - 带有 OpenGL 的 Bullet 调试抽屉

我一直在摆弄子弹,现在我想绘制调试。我有一个带有工作子弹物理和一切的opengl世界。

我尝试过的是:我创建了一个像这样的类 GLDebugDrawer:

然后在游戏中我包含这个标题并创建它的一个实例。

在初始化 bt 世界的地方,我设置了调试绘制类型,如下所示:

然后我将调试设置为子弹世界,如下所示:

最后,我在渲染子弹体后渲染调试绘图,如下所示:

一定有一些我错过的东西,因为我在运行时没有得到任何线框或任何东西。

0 投票
1 回答
346 浏览

c++ - 获取 btCollisionShape 当前变换

我做了一个复合形状compound = new btCompoundShape();

然后我在化合物中添加了一个碰撞形状:

然后将复合形状转换为刚体,然后作为底盘添加到车辆光线投射器中:

车辆连同它的车轮、底盘和炮塔一起移动,但我似乎无法掌握更新的炮塔变换。每当我尝试这样的事情时:

我总是得到炮塔的初始位置,它最初是在哪里创建的。

现在,对于轮子,我可以这样做:

对于机箱,我可以这样做:

但我不知道如何获得炮塔碰撞形状更新变换?

请注意,在我需要这些信息的地方,我可以访问化合物和 turretShape(实际的 btCollisionShape)。

0 投票
1 回答
460 浏览

c++ - 从 btScalar 矩阵获取方向向量

我已经创建了一个带有复合体作为底盘的子弹车,复合体由两个车身组成,一个底盘和一个炮塔。

我可以像这样获得炮塔变换和opengl矩阵:

我正在尝试从此矩阵中获取炮塔前向/方向向量。我需要这个,以便我将相机固定到炮塔的位置和方向。

我试过的是这样的:

但这并没有给我正确的向量。

我到底要在哪里寻找这个矩阵中的向量?

0 投票
1 回答
298 浏览

c++ - 如何旋转 btCollisionShape

我已经创建了一个带有复合体作为底盘的子弹车,复合体由两个车身组成,一个底盘和一个炮塔。

我可以像这样获得炮塔变换和opengl矩阵:

turretTransform 是 btCollisionShape 对象 (turretShape) 的变换。

我现在正试图围绕它的 Y 轴旋转这个炮塔。

我试过这个:

其中角度是一个浮点数,但没有任何反应。

我肯定遗漏了一些东西,但不完全理解这些轮换是如何工作的。

0 投票
1 回答
1236 浏览

c++ - 子弹头车轮落后和错误的底盘俯仰方向

我已经创建了一个子弹车,顶部有一个附加的炮塔,如下所示:

这就是我渲染车辆的方式:

使用箭头键,我像这样应用中断或加速力:

等等

摄像头安装在汽车顶部的炮塔上,因此安装在汽车本身上。

问题在于,当汽车开始移动并加速时,车轮似乎落后而底盘向前移动。我想让车轮和底盘更紧,但玩弄汽车悬架设置并没有帮助。

这是演示此行为的视频:单击

我还注意到另一种与汽车在移动、刹车和转弯时的倾斜方式有关的奇怪行为。

增加重力会加重这种行为。当我加速时,底盘向前倾斜,当我刹车时,它向后倾斜。这显然是错误的,因为它应该是相反的。左转时也会发生同样的情况,汽车向左而不是向右倾斜,反之亦然。

这是另一个演示此行为的视频:单击

0 投票
2 回答
3265 浏览

c++ - 2个物体之间的子弹碰撞回调

我有 2 个物体,一个球体和一个盒子,当一个物体与另一个物体发生碰撞时,它们会做一些动作(即摧毁盒子)。

我尝试了几种方法:

  • checkCollideWith 总是返回 true;
  • contactPairTest - 这个我不明白怎么用。它需要 3 个参数、2 个对象和一个回调。我认为回调可以是我的代码中的任何函数,但它不是那样工作的。

有人可以举例说明当 2 个 btRigidBodies 碰撞(即 bodyA 和 bodyB)时如何调用方法,例如 CollissionResult()?

0 投票
1 回答
1643 浏览

c++ - 碰撞后移除物体(子弹物理)

我有这样的设置用于碰撞检测:

我想在检测到碰撞后移除尸体。

该结构可以访问 colObj0Wrap 和 colObj1Wrap (类型 const btCollisionObjectWrapper*),我认为它们是碰撞的 2 个物体。我试过这个:

但这给出了一个错误: const btCollisionObject* 类型的参数与 btCollisionObject* 类型的参数不兼容

我如何从世界上移除这两个身体?

0 投票
0 回答
282 浏览

macos - 构建错误:Emscripten 在 Mac OsX 上的 Ammo.js

我在 Mac上构建ammo.js时遇到问题。(操作系统是小牛)。它不编译 C++ 代码,并且 /build 文件夹中的 bindings.cpp 代码中没有任何内容。

我按照此链接中的程序进行操作。这是我得到的第一个日志。

我知道 MacOSX 包含 clang 编译器,但 emscripten guid 被迫从 llvm 存储库安装 llvm 编译器。我想知道我该如何解决它。有人说 MacOsX 有运行 emscripten 的问题。但我想知道这是对还是错。

======更新=====

我在 make.py 文件中找到了名为 Apple 的 LLVM 的“cpp”,而不是我自己构建的 LLVM。在 make.py 文件中,

旧代码

更改代码

但是即使我更改了make.py,问题仍然存在。错误消息如下。

我想知道我该如何解决它。

0 投票
1 回答
86 浏览

java - 我可以在开发后期实现 JBullet 物理吗

我是一个半新的 OpenGL 程序员,并且正在学习 VBO 和着色器如何相互交互。我有一个基本的演示设置,它导入模型并在场景中放置一盏灯。现在,将来我想学物理,但我对 JBullet 的了解最少。我应该从头开始实现物理,同时学习更多关于渲染的知识,还是我以后可以添加的东西,假设我的引擎框架对新的 API 有点灵活?

注意:我正在使用 LWJGL,并计划将 JBullet 与 GLSL 一起使用