创造稳定的触手结构

我正在使用verlet集成来模拟一些触角。 到目前为止,它工作的很好,我对它的外观一般感到满意。 这是一个触手如何建立:

触手结构

非常僵硬的棍子是红色的,另外我增加了角度约束180°,以保持一切。

但是,有时会发生这种情况:

问题

当高峰期的力量过大时,它会翻转并陷入一个非常丑陋的状态。

当然,为了满足约束,我可以增加迭代的次数,但是这些触角太僵硬,性能会受到影响。

我能做些什么呢? 一些想法:

  • 在高峰期添加更多点
  • 更多的限制总体
  • 限制可能的力量
  • 也许完全重新考虑我的触手devise?
  • 检测翻转并撤消它

我建议不要用触手建立一个坚实的物体,而应该使用一根直线链条(一根“骨架”作为触手),然后用一个递减的梯形序列来包裹它,直到尖端。 使用本地方向信息来定义每个顶点的横条(例如,垂直于共享该顶点的两个骨骼段的平均值或可能的加权平均值),然后使用从一个横条构建的四边形定义触角的“主体”接下来一路走到尖端。 你会想要为你的骨骼使用稍微更聪明的物理学 – 特别是曲率约束应该在触手基部附近比在尖端更紧密,以说明底部的厚度 – 但是这种方法仍然应该给你逼真的运动而不必担心保持外部结构的一致性。 用一点点的注意,你甚至可以用这样的方法来模拟与触手的接触,把触手表面上的力“回旋”到适当的力量或冲动的触角骨架上。

触角在自然界(和机器人)工作,因为里面的肌肉,这意味着每个或三个部分只受到less量力量的局部影响。 这听起来像你有一个设置,所有的力量开始在基地,并向外传播,这让你一个鞭子,而不是一个扭曲的触手。

你可能想要在节点之间建立一个模仿肌肉的小力量的系统,然后让一个“大脑”通过随着时间的推移而dynamic化这些力量。