问题标签 [rigid-bodies]

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

c# - 我怎样才能让我的物理对象安定下来?

我正在使用 BulletSharp,子弹库的 C# 发行版。我一直在一个据说恢复为 0.0f 的对象中出现一些弹跳。

我有一个动态圆柱体(即将成为网格)落在两个静态圆​​柱体上。像这样:

起始物体位置

顶部的圆柱体经常剧烈地弹跳,通常弹到一边。

这是我用来设置场景的代码:

以及我world.StepSimulation(0.05f, 100, 0.0005f);用来更新物理模拟的每一帧。

我是否缺少任何明显的设置?为什么我的模拟会这样做?

小更新:我已经成功地在 Blender 的 Bullet 中进行了类似的模拟。那里没有弹跳……我不知道那和这之间可能有什么区别。

0 投票
1 回答
362 浏览

algorithm - 刚体几何中位数

我需要实现适用于刚体的“几何中值”型算法,这意味着它不仅会找到一个点,使与一组点的距离最小化,而且还会考虑到身体的方向。我在任何地方都没有找到此类问题的解决方案,而对于几何中位数(或 Weber 或 Fermat-Torricelli 问题,或设施位置问题),有很多可用信息,包括 Weiszfeld 算法(以及现代改进)。我希望有人能参考可能的解决方案。我原以为这是注册中相对常见的问题,但也许我只是没有找到合适的词来搜索......

我的问题可以表述如下:假设我有一个具有 3 个非共线点(三角形)的“参考”刚体,并且我多次测量 3 个点的坐标(有一些错误,或者对象是移动一点)。我想找到一个好的“中心位置”,它将最小化每个测量点与其对应的中心定位对象点之间的距离总和(不是平方距离)。这等效于“多设施位置问题”,但对“设施”之间的固定距离有额外的限制,并且每个点都预先分配给一个设施(不一定是最近的一个)。

实际上,我在考虑的不是最小化所有点的总和,而是每次测量时只保留 3 个点的最大距离。(这就是所谓的“极小极大”吗?)但我认为这不会对我必须使用的算法类型产生很大影响。

与几何中位数相比,一个可能的困难可能是随着旋转自由度的增加,最小化的数量不再是凸的(不是 100% 肯定,但我认为)。我希望我仍然可以使用与 Weiszfeld 类似的算法(这是一种次梯度方法),并且希望之前已经对此进行了研究。谢谢你的帮助!

PS 我将在 Matlab 中执行此操作。

0 投票
1 回答
945 浏览

c++ - 在 Bullet Physics 中替代刚体模拟?

我想在 Bullet Physics 引擎中创建自己的刚体模拟算法。有没有办法用我的替换 btrigidbody 集成,但仍保持模拟的其余部分(碰撞检测、接触响应等)?

我只是想比较不同的集成算法(显式欧拉、隐式、龙格库塔等)

我虽然是从 btRigidBody 继承的,但问题是 btRigidBody 的方法不是虚拟的,所以我的方法没有被调用。

有什么建议么?

谢谢!

0 投票
7 回答
1025 浏览

unity3d - Unity Android:刚体

我正在使用 Unity 3d 中的一个 android 项目。我会在立方体的表面滚动球体。但是,当我单击播放按钮时,它会返回错误消息:

我的代码:

刚体组件已添加到球体中。我想为产生的错误寻求解决方案。

0 投票
3 回答
9601 浏览

position - 在子弹物理中重新定位刚体

我正在编写一个使用 Bullet Physics 作为物理模拟引擎的角色动画渲染引擎。

一个序列将在屏幕上没有模型开始,然后将动画分配给该模型,模型将移动到动画的第 0 帧,引擎将开始使用动画渲染模型。

在第 0 帧初始化时,在角色模型上重新定位刚体的正确方法是什么?

目前我正在使用此代码,在将动画分配给模型并将骨骼移动到第 0 帧位置后立即调用该代码:

问题是有时这有效,有时则无效。以模特的裙子为例。有时它会出现在自然位置,有时会稍微错位并落入到位,有时它会完全穿过身体,好像碰撞已关闭,并且有一些力将它推向那个方向。这在大多数情况下确实有意义,因为在测试动画中,我使用模型的初始位置在屏幕中央,但动画从屏幕左侧开始。有谁知道如何解决这个问题?

我知道裙子上的骨骼不是问题,因为我关闭了物理并强制它在每一帧手动更新骨骼位置,并且在整个动画中一切都在正确的位置。

编辑:我也有限制,这可能是造成这种情况的原因吗?

0 投票
1 回答
4660 浏览

c++ - 3D 刚体物理 (OpenGL)

我正在尝试构建刚体物理引擎。我使用 glm 库作为我的标准数学库。

我面临的问题如下,

  • 当我计算相对于力的扭矩时(参见函数calculateTorque()),身体会扭曲和倾斜到一定程度,它会旋转并增大尺寸并且不再可见。但是,当我从扭矩方程中移除力时,我只是随机化(参见 calculateForces())扭矩值,它工作正常。
  • 旋转时,我认为对于四元数和矩阵来说,身体会发生倾斜并且尺寸会略微增加。(不确定惯性计算是否正确,body是立方体)
  • 我的碰撞响应也有问题,身体逐渐穿透表面,并且相对于 epsilon 的值没有适当的反应。

PS:AABB - 平面碰撞是借助 Christer Ericson 的 Real Time Collision Detection 一书实现的,刚体物理是借助 Braff 的实现实现的。

这是我的代码。

0 投票
1 回答
7656 浏览

unity3d - 玩家移动的坡度限制

我使用 Unity3D,我有一个刚体的玩家。我向身体添加力量来移动玩家。我的玩家走过地形,但能够爬上陡峭的山峰。我想限制玩家,使其无法走上陡峭的斜坡。

我知道有一个 CharacterController 组件具有此功能,但我必须使用刚体,所以我想要相同的,但在我的刚体上。

我可以得到我站立的三角形的法线,并计算它的角度,但我似乎无法让玩家停止向上斜坡移动。只让玩家停止移动(这使得玩家一旦碰到倾斜的斜坡就无法移动)

任何想法如何解决这个问题?

0 投票
1 回答
261 浏览

java - 我的刚体碰撞代码如何不一致?

我一直在尝试复制此处找到的系统:http ://www.myphysicslab.com/collision.html

到目前为止,这是我的代码(对于击中无限大物体的情况,例如不可移动的墙):

我的代码的结果通常导致速度没有通过法线反映,或者完全缺乏动量守恒。即使我有它只是让它在执行后立即输出结果,结果表明它不是多次注册碰撞的问题,它也会在第一次运行时发生。

dotProduct返回两个向量的点积。

perpDotProduct返回两个向量的 perp 点积

如果您需要任何解释,或者如果您想请求扩大代码范围,请随时提出。

0 投票
2 回答
3262 浏览

c++ - 刚体模拟摩擦

我目前正在开发一个 3D 刚体模拟程序。我目前已经设法让刚体与地板碰撞并使用脉冲正确弹跳。然而,我的问题是,一旦它们反弹,尽管使用摩擦矢量来尝试减慢它们,它们仍会不断加速。

这是你落地时的代码

谢谢

编辑:这是集成代码。

0 投票
2 回答
5288 浏览

unity3d - 在统一 3 D 中改变刚体.质量值

我正在尝试以编程方式更改 3D 对象的质量。但是该物体最初并没有得到计算出的质量,而是一个 0 值。创建对象的预制件时,它会获取前一个对象的计算质量,而不是当前质量。此后创建的所有预制件都会重复该场景。我怎样才能解决这个问题?任何帮助是极大的赞赏。