问题标签 [jbullet]

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 投票
0 回答
83 浏览

java - 身体穿过其他物体

我正在开发一个小型 FPS(个人项目),用 java 编写并使用 JBullet(子弹端口)。我有一个带有 OpenGL 的基本渲染引擎,并且子弹效果很好。我已经使用 RigidBody 实现了一个角色,但我的角色一直在穿过除地面之外的所有物体。这是发生的事情的演示

这是我第一个涉及子弹的项目,但我没有发现任何人在谷歌(也不是 StackExchange)上有这种奇怪的行为。

这是我的代码的摘要。

主类:

玩家:

为什么我的身体不像其他人那样关注物理?我必须为它恢复重力,唯一的碰撞物体是地面(可能和玩家一样有问题)。好像没听懂什么。

0 投票
1 回答
162 浏览

java - JBullet NullPointer 在单独的线程中进行步骤模拟

我在我的游戏中有一个设置,其中物理在一个单独的线程中更新,实现如下

物理处理器(物理线程)

在主线程中创建示例对象

问题是,当游戏运行时,我偶尔会在“stepSimulation”的单独线程中遇到空指针异常,这是由我的 dbvt broadphase 中的 setAabb 引起的。

有没有人对我可以做些什么来防止这种异常或如何解决它有任何建议?

0 投票
1 回答
134 浏览

java - BetterCharacterControl 没有在正确的位置应用 RigidBody

所以我是 JME3 的新手,我在理解 BetterCharacterControl 时遇到了一些问题。

当我尝试将 BetterCharacterControl 应用于一个盒子时,它总是从盒子的上部而不是中心“扩展”。(一张图片更好地说明了这一点:)

问题

我找不到任何函数来更改它应用的位置,我已经尝试创建一个子类,在其中我将 RigidBody 直接更改为 BoxCollisionShape 但这似乎以某种方式搞砸了 isOnGround 方法。另外,如果我以后想使用斜坡,那么胶囊形状会很好。

另一方面,似乎我必须为跳跃力应用一个巨大的矢量才能做任何事情(我没有改变任何重力值)

我很高兴有任何帮助

0 投票
1 回答
57 浏览

bullet - 如何在碰撞时停用翻译?

我想做的事

我想让我的玩家/角色与刚体同时移动。
当我的角色与另一个 RB 发生碰撞时,另一个rb将移动 - 但不是我的角色。

我想知道的

是否可以在碰撞时停用特定刚体的平移?如果是,如何?

0 投票
4 回答
8512 浏览

opengl - 如何将子弹物理应用于绘制的 Opengl 3d 形状

我只是想知道是否有办法将子弹物理应用于opengl绘制的对象(使用glVertex3f或带有glVertexAttribPointer的三角形网格创建)。我目前正在使用 jogl 和 jbullet 将物理应用到我的 3D 对象。具体来说,如果我为 3d 对象的三角形网格形状提供顶点缓冲区。我需要 Bullet 基于三角形网格形状创建一个 CollisionShape,并将物理应用到它,同时将物理应用到绘制的 opengl 对象。目前,物理碰撞形状可能会移动(在子弹中),但绘制的 opengl 形状不会。

否则,我是否可以创建一个碰撞形状,在每个模拟步骤后应用物理后获取碰撞形状的顶点,然后根据顶点的位置绘制对象。我已经查看了子弹的 Hello world 示例,但它仅帮助我将物理应用于 opengl 对象的位置(基于 z、y、x 轴_而不是酷的东西,例如立方体的一角击中平面开始滚动和旋转。

如果有人能给我一些可以做到这一点的代码或演示,那就太好了。或者给我一些关于如何完成这项工作的提示。我已经看过这个关于子弹的教程:http ://www.raywenderlich.com/53077/bullet-physics-tutorial-getting-started 。但我似乎找不到关于如何将子弹应用于 opengl 对象的信息。

0 投票
0 回答
924 浏览

bullet - 子弹物理,强制物体停止

我正在编写一个程序,试图通过对其状态的离散测量来模拟对象的行为。我正在使用 jBullet 进行模拟。问题是测量可能是错误的。例如,如果对我的对象施加力 X 使其移动,然后是使对象停止的力(也就是有人将对象推到墙上)。撞击报告的施加力可能与 -X 略有不同,结果是轻微的加速度被留下来覆盖漂移。

有没有办法在 Bullet 中编写以下代码?

似乎我可以使用 getLinearVelocity / setLinearVelocity 更改对象的速度,但不能更改它们的加速度。

任何其他(更优雅?)的问题解决方案将不胜感激。

0 投票
0 回答
62 浏览

java - 一对三角形之间的引力

给定两个 3D 三角形,由点[t1.v1, t1.v2, t1.v3]和定义[t2.v1, t2.v2, t2.v3],其中 v X是具有变量 的点(x, y, z)

如何计算它们之间的重力?

点质量公式:

对于我的应用程序,三角形将靠近在一起,并且通过点质量进行近似不会具有所需的精度。

我知道这可以用四重积分来解决,但我没有太多的数学知识来创建或解决如此复杂的方程。

编辑:

我在 math.stackexchange 上的类似(相关)问题:https ://math.stackexchange.com/questions/1082860/general-solution-for-the-gravity-between-two-3d-triangles/

0 投票
1 回答
113 浏览

java - JBullet:如何将高度图添加到动态世界?

JBullet在我的代码中实现。盒子,球体完美地工作。但我不知道如何实现我的世界高度图(作为静态对象)。我必须使用什么类型的形状以及如何使用?

我的高度图数组是这样的float[world_size][world_size]

0 投票
1 回答
105 浏览

java - JBullet - 静态时凸形状无法正常工作

我在 JBullet 中使用动态箱形物体进行碰撞。它们正确地相互碰撞。但我正在摆弄构建世界,遇到了一些奇怪的问题。

当我试图使凸刚体(BoxShape 或 TriangleShape)静态(通过将质量设置为 0)时,碰撞仅在 (0,0,0) 处的某种点而不是给定形状处起作用。如果它是动态的,它工作得很好。

额外的问题,也许有一些链接:如果我使用 BvhTriangleMeshShape 或 GImpactMeshShape 它只有在动态的情况下才能正常工作,并且在静态时不会发生碰撞(尽管 BvhTriangleMeshShape 将用于静态物体)。

这是我初始化世界的方式:

有问题的对象:

谁能帮帮我吗?我正在使用 2010 年 10 月 10 日的 JBullet 版本。提前致谢。

0 投票
1 回答
381 浏览

java - Java - 使用高度图 (JBullet) 创建世界碰撞

我正在尝试使用 Jogl、Jbullet 和 OpenSimplexNoise (OSN) 创建一个无限可玩的世界。我正在使用 OSN 生成世界,并成功渲染它,但我不知道如何将其添加到世界/碰撞系统中。

我找到了 btHeightfieldTerrainShape 类,但它不是用 Java 实现的。我也尝试使用 BvhTriangleMeshShape,但我不明白它是如何工作的。

我有 3 个世代价值观:

  • int smooth:一米的分割数
  • int viewDistance: 在一个轴上绘制的块数
  • int chunkSize:一个块中仪表上的数字

我正在使用此代码生成高度图:

有人知道如何添加这个吗?