问题标签 [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 投票
7 回答
2840 浏览

c++ - 在 C 中使用 C++ API?

有一天,我决定开始用普通的 C 语言编写一个视频游戏。
这很有趣,三个月后(我有时没有时间离开工作)我发现自己需要一些物理引擎。
我决定使用 Bullet 物理引擎,因为它似乎是我需要的更好的引擎之一。
然后,我发现 Bullet 并没有真正的 C API,而只有完整的 C++ API。它的 C API 没有维护。
经过一天的诅咒,我将我的项目“转换”为 C++,这是一个大胆的声明,说我对所有堆分配进行了类型转换,我使用 new 和 delete 而不是 malloc 和 free,并在 'extern "C" 中包含了一些定义{ ... }'。
有些人可能会因为我这样做而对我开枪,但我认为没有其他选择可以在 C 中使用性能任务处理的东西,比如这个物理引擎,它只有一个 C++ API。

所以现在,我正在使用 g++ 进行编译,同时仍然主要编写“C”代码。我发现自己不那么开心了,因为代码不再那么纯粹了。
C++ 给了我一些奇怪的错误信息,而我对我经常不喜欢 g++ 解析器的语言没有任何反对。除了我现在可以愉快地将物体相互弹跳之外,我的宠物项目的一些小而纯洁现在已经被遗弃了。

我想知道我是否做对了。我可以征求一些建议吗,我应该继续而不担心为我的“主要”C 代码使用 C++ 编译器吗?是否有其他方法可以在 C 中使用此 API 而不会影响性能或过度维护工作?

0 投票
2 回答
7272 浏览

bullet - 幽灵对象 - bulletphysics

我正在尝试在bulletphysics 中实现一个简单的ghost 对象,这就是我创建ghost 对象的方式:

这就是如何尝试找到碰撞:

但我总是得到一个响应,即我所有的世界对象都与幽灵对象发生碰撞。

任何人都可以帮我获得一个功能简单的幽灵对象吗?

谢谢

0 投票
2 回答
222 浏览

floating-point - 将 Bullet3D 用于 2D 只能导致 Z 轴的浮点数值错误吗?

我想可以在仅 2D 模式下使用 bullet3D,但我关心的是浮点精度错误。如果 Z 轴的所有值和操作都为 0,则 Z 值可能会受到其他轴操作的影响。如果这个累积起来,结果可能是错误的。

但是我还没有使用bullet3d。如果您在仅 2D 模式下体验过 bullet3d,请告诉我您的意见。

0 投票
1 回答
320 浏览

c++ - cmake / c++:哪个包包含`-lOpenGLSupport`

/usr/bin/ld: cannot find -lOpenGLSupport

链接时出现上述错误。

我用谷歌搜索无济于事
我在哪里可以获得这个库(从源代码包/构建)?

(如果这个问题在 superuser.com 上更常见/更合适,mods 可以随意移动它)

谢谢!


操作系统是 Ubuntu Karmic。

0 投票
2 回答
3900 浏览

c++ - 我将如何使用 Bullet 物理库设置碰撞?

嘿,我在我的 opengl/sfml 游戏中设置一些碰撞时有点“延迟”。它没有太大的错误,只是寻求一些帮助。我使用Bullet Physics(这是 API 参考),我一直在研究不同的函数和类。然后我注意到图书馆中包含演示,所以在查看它们时我并不完全理解它们..

他们推荐我使用的主要库是 CollisionInterfaceDemo,因为我已经将 GLM 用于 opengl 中的模型,并将 sfml 用于 2D 目的和窗口。

我只是想知道是否有人知道我将如何在我的游戏中实现碰撞。

0 投票
4 回答
5488 浏览

physics - 逼真的两条腿骨骼的物理模拟

我希望利用子弹物理或类似的物理引擎来创建具有两条腿的类人身体的逼真骨架模拟。也就是说,在两条“腿”上创建一个由圆形质量组成的“身体”的模拟,其中每条腿由通过 3 个关节连接的 3 个实体块组成,每个关节都有一定的自由度和有限的运动范围每个方向,类似于人类的臀部、膝盖和脚踝。

我的目标是一个逼真的模型,因此只有当所有关节都正确平衡时它才会“站立”,否则它会倒下。

对现有教程或资源的任何方向、建议或指针表示赞赏!这看起来像是从头开始做的大量工作......

0 投票
0 回答
363 浏览

c++ - 在两个网格之间生成斜面的碰撞检测技术

我在game SEmath SE都问过这个问题,但反应并不那么令人鼓舞。所以我又问了一遍,有点扭曲。

我有一个地形,由mesh定义。还有很多其他的多边形面散布在整个地形中,它们可以位于地形上方、下方或穿过地形。您可以将这些面孔视为平台。

下面的屏幕截图应该可以阐明我的意思。尽管看起来很光滑,但所有的网格实际上都是由组合在一起的小元素(数量> 10k)组成的,给人一种光滑的假象。明显不连贯的区域是平台。

在此处输入图像描述

我的问题是,如何生成连接平台和其他平台/地形的平面?以下是生成一系列倾斜平面的规则:

  1. 它们可以上升或下降,具体取决于哪个方向会使它们首先撞到地形/相邻平台。
  2. 平面生成规则是,平面将从平台边缘开始,相对于 z 轴向上/向下移动 45 度一定长度,然后相对于 z 轴移动 0 度再移动一定长度,并重复。所以这将是一系列零散的飞机,直到飞机的某些点遇到障碍物。
  3. 算法应该只关注平面生成和平面生成;我不希望它与任何渲染器绑定(例如,opengl 等),我可以自己渲染它。

简而言之,我想生成一组“平面”,实际上就像一段楼梯或一张瓦楞纸,从空间中的一个点向上或向下引导,直到它与给定的网格接触

听起来像是物理模拟中常见的直接碰撞检测问题,对吧?有没有可以用来解决这个问题的游戏/物理库?

请注意,由于我没有做任何动画,所以逐帧更新和所有这些东西与我无关;这就是为什么我不愿使用像bullet这样的现有游戏物理库的原因。与我相关的是如何使用现有的库根据上述规则生成那些连接平面。

0 投票
3 回答
1068 浏览

java - Java/Android 项目符号对象流

想知道是否有人能指出我正确的方向。

我希望能够将像子弹一样的对象从静态位置动画到屏幕上的任何区域。

我对简单的水平和垂直运动没有任何问题。即 x +/- 1 或 y +/- 1。但是当涉及到像子弹这样的物体时,它可以在任何程度上移动/动画,我不太确定如何通过使动画看起来平滑来做到这一点。例如,在 18、45 或 33 度角时,像 y+1、x+1、y+1 之类的算法......不会使动画非常流畅。

提前致谢

Ps 也许已经有一些文档了?


更新

感谢所有回复的人。

这是我迄今为止根据您的评论获得的代码。

绘图效果很好,但是有两个问题。

1.绘图相当缓慢和跳跃......与这个java示例相比http://www.youtube.com/watch?v=-g5CyPQlIo4

2.如果点击是在接近​​ Y = 0 的位置,那么由于 ENDY / FRAME 的值小于 1,意味着向上舍入到 0 并且子弹穿过屏幕顶部,而不是Y 中的偶尔增量。

@SyntaxT3rr0r 你的权利,这可能是最好的方法。但是你知道任何实现这样的东西的文档吗?

再次感谢所有回复的人

0 投票
1 回答
133 浏览

opengl-es - 能够使用所有为 webgl 开发应用程序的 opengl 库的最有效方法是什么?

我需要在物理模拟应用程序中使用一些物理库,例如 C++ 中的 bulletphysics。有一个限制,我必须使用 webgl 和 javascript。我用 emscripten 搜索并看到,一些库已被移植到 javascript,但有些人说代码使用过多的 cpu 和内存并且无效。我也搜索了一种在 c++ 中开发代码并将其移植到 javascript 的方法,我发现了 emscripten 但由于效率低下而放弃了。我也找到了心轴,但它不是免费的,我首先需要一种免费的方式。在这一点上,我想问如何以最有效的方式通过 webgl 使用我需要的 opengl 库?谢谢

0 投票
1 回答
3186 浏览

c++ - Bullet Physics Engine 静态库安装问题

嘿,所以我刚刚下载了子弹 2.78,并采取了以下步骤:

  • 解压后找到了这个教程

  • 完全按照 Cmake 的步骤进行操作,除了我发现教程中的图片检查了一些东西,比如安装库,我没有,所以我最终检查了所有可能的东西。

  • 进入新生成的 BULLET_PHYSICS.vcxproj 并在 debug 和 release 下构建

  • 看到我在 msvn/BulletBuild/lib 的 lib 文件夹中有一堆新的库,但对它们什么也没做

  • 完全按照教程中的其余步骤设置实际项目

  • 试图构建最后一行代码:FAIL

  • 想知道我是否需要 dll,因为只有 .libs 和 pdbs 出现在 lib 文件夹中,并且教程没有提到 em

我重建库的唯一经验是通过 SFML 构建下载中包含的 msvn 文件并使用生成的动态 lib 和 dll 文件。然而,本教程中的说明非常不同。(如果有人可以向我解释这是如何工作的,那就太好了)

我多次完全按照说明进行操作,但我不确定我错过了什么。如果我注释掉 main 中的代码行但保留包含,则构建工作,但是当我保留它时,我得到这个:

我知道某处存在链接问题,但我完全按照说明进行操作,所以我不知道如何解决它。在查看添加项目的属性时,我看不到任何额外的依赖关系,如果这不是它应该是的样子......但我想我首先不理解这种使用库的方法,所以知识有助于。