我正在寻找在 Box2D 中对一些细而灵活的线/毛发/刺/线进行建模,并且想知道最好的方法是什么。我在 Google 上搜索并看到了一些称为线段 ( http://www.box2d.org/forum/viewtopic.php?f=8&t=1437 ) 的东西,但它似乎只是 Flash 端口的扩展 - 我希望以与平台无关的方式来实现它。
我猜我必须用一串薄盒子来做这件事,但是有人有任何建议或需要注意的事情吗?
更新:感谢下面的反馈,到目前为止的选项是:
通过跟踪角度和设置电机速度来制作弹性旋转关节 - Box2D 论坛上有一个主题: http://www.box2d.org/forum/viewtopic.php?f=3&t=1007
在各段之间连接弹性距离关节(见图 - 类似于人们接触软体的方式)。
如果需要最少的碰撞,请使用 Drop Box 2D 并使用 verlet/粒子系统(不幸的是,对我来说不可能)。
最佳答案
这取决于它们需要成为物理世界的一部分,以及您想要与“头发”的所有部分碰撞的精确度。如果碰撞不是最重要的,您可以使用链中减少数量的盒子进行近似,并根据其位置的样条线进行渲染。如果涉及的碰撞很少,您甚至可以使用 verlet 集成,它非常容易编码并且对 CPU 的占用更小。
仅用其中的 10 个,我希望您可以使用旋转关节完全模拟它们,尽管我会控制它们,以便它们不断尝试拉直链条,但不是限制它们,而是调整每个关节的最大扭矩,以便它们不会'没有足够的力量完全伸直。如果采用这种方式,需要记住的一点是,它有助于使靠近底部的部分变重,并逐渐向末端变轻。尖端处的运动强度也需要减弱。
关于Box2D 建模灵活的头发状物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371100/