3

我正在尝试在网站上模拟物理上正确的绳索。

在网上搜索后,我的结论是我需要一个像 box2d 这样的物理引擎?

如果我理解正确,解决方案是将对象分成小段,然后将它们连接在一起并制作动画。另外,我想将物理与浏览器结合起来。这意味着:当我快速向下滚动网站时,绳索必须以物理上正确的方式做出反应。

这可能吗?

4

1 回答 1

17

你根本不需要图书馆。您可以通过对象、组件或程序代码以及对基本机械物理和一些 2D 几何的理解(基本微积分可能有所帮助)愉快地做到这一点。

以优化的方式进行操作需要更多的工作。以模块化和可重用的方式进行操作需要一些前期工程。

但是制作一根绳子,并使绳子正常运行是非常简单的。

2D 绳索将是一系列线段或“骨骼”。每块骨头都可以围绕其关节弯曲。

您可以对每个骨骼施加重力或任何其他您想要的力。
每个骨骼都有约束(它附加到的其他骨骼,上方和下方)。
因此,当您更新“绳索”时,您会根据之前和之后的约束更新每个骨骼。
您可以创建一个锚点——将绳索的顶部固定在墙上,这样无论其他骨骼如何移动,最顶部的骨骼都将围绕其顶部关节旋转,但不会移动到任何地方。

要将物理应用到吊绳的中间(比如从中间拉它,然后放开),您可以使用逆运动学来解决对一个或两个关节的力如何影响其他每个连接(和受约束)的关节.

少把它想象成一条蛇,而更像是一条自行车链。
链条中的每个“链接”越短,绳索看起来越流畅,但处理所需的时间就越长。
链中的每个“链接”越长,计算变化的速度就越快,但它在弯曲时看起来越僵硬和块状。

查找“Verlet Integration”、“Kinematics”(“Forward”/“Inverse”),对旋转和沿 2D 向量移动对象背后的数学有一个半体面的掌握......
那里有一点质量,如果你想看中鞭子般的东西,而不仅仅是制造波浪。

剩下的只是循环。

有关基本示例,请参见以下内容:http:
//gamedev.tutsplus.com/tutorials/implementation/simulate-fabric-and-ragdolls-with-simple-verlet-integration/

玩得开心。

于 2012-11-01T01:25:58.900 回答