我正在尝试在网站上模拟物理上正确的绳索。
在网上搜索后,我的结论是我需要一个像 box2d 这样的物理引擎?
如果我理解正确,解决方案是将一个对象分成小段,然后将它们连接在一起并制作动画。另外,我想将物理与浏览器结合起来。这意味着:当我快速向下滚动网站时,绳索必须以物理上正确的方式使用react。
这可能吗?
最佳答案
你根本不需要图书馆。
您可以使用对象、组件或程序代码以及对基 native 械物理和一些 2D 几何(基本微积分可能会有所帮助)的理解来愉快地完成此操作。
以优化的方式进行操作需要更多的工作。
以模块化和可重用的方式完成它需要一些前期工程。
但是制作绳子,并使绳子正常运行是非常简单的。
2D 绳索将是一系列线段或“骨骼”。
每个骨骼都可以围绕其关节弯曲。
您可以将重力或任何其他您想要的力应用于每个骨骼。
每个骨骼都有约束(它附加到的其他骨骼、上方和下方)。
因此,当您更新“绳索”时,您会根据前后出现的约束更新每个骨骼。
您可以创建一个 anchor ——将绳索的顶部固定在墙上,这样无论其他骨骼如何移动,最顶部的骨骼都将围绕其顶部关节旋转,但不会移动到任何地方。
要将物理应用到悬挂绳的中间(比如从中间拉它,然后放开),您将使用反向运动学来解决作用在一个或两个关节上的力如何影响其他连接的每个关节(并且 约束 ) 关节。
不要把它想象成一条蛇,而更像是一条自行车链条。
链条中的每个“链接”越短,绳索看起来就越流畅,但处理所需的时间就越长。
链中的每个“链接”越长,您计算变化的速度就越快,但它在弯曲时看起来越僵硬和块状。
查找“Verlet Integration”、“Kinematics”(“Forward”/“Inverse”),并对旋转和沿二维向量移动对象背后的数学有一个不错的掌握......
里面有一点点质量,如果你想喜欢鞭子般的东西,而不仅仅是制造波浪。
剩下的只是循环。
有关基本示例,请参见以下内容:
http://gamedev.tutsplus.com/tutorials/implementation/simulate-fabric-and-ragdolls-with-simple-verlet-integration/
玩得开心。
关于javascript - 绳索模拟html5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13168486/