我已经实现了Verlet算法来模拟绳索。但是,如果我模拟具有很多段的绳索,那么它将变得非常有弹性,最终导致非常不自然的摆动。

当我使用更少的片段时,绳索的运动看起来更自然,但是绳索本身看起来更像是绑在一起的棍子。

我如何模拟不会晃动那么多的细绳索(更高的阻尼)?

最佳答案

我认为您需要对线段进行处理,以使更靠近锚定端的线段在更远的段之前收缩,并且对于每个线段,只有一个点可以移动(离锚点最远的点)。

对于仅锚定在一端的绳索,这很简单,因为您可以从锚定的一端开始并沿其移动。对于两端锚定的绳索,我想您必须同时从两端开始,然后依次从每一端开始处理一段。在某个时候,您将到达处理相遇的部分,在这种情况下,您可以...在两个点均等移动的情况下进行正常调整吗?

如果绳索开始以违反约束的状态开始,我想这可能在模拟开始时的几帧前看起来有些奇怪,直到一切都解决了,但是如果绳索的总长度限制为不超过分段的长度允许(例如,非伸缩性绳索),那么我认为之后就可以了(因为标签中包含Box2D,因此可以使用绳索接头来做到这一点。)

再三考虑,这可能最终导致绳子中间的段比所有其他段长得多的情况。但是我会在这里留下答案,以防它给您带来想法。

关于java - 多段式钢丝绳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22965361/

10-09 14:48