0

我正在研究绳索物理。我已经使用旋转接头实现了一根绳子..

我正在制作连接动态体的绳索(通过 b2RevoluteJoints)。我成功创建了它。现在我还在绳索的末端附加了一个动态体。&我用这个身体向下释放我的绳索,现在不知何故我的动态绳索体之间的关节被拉伸然后断裂,我希望我的绳索看起来更平滑。

我的关节是这样的

b2RevoluteJointDef revoluteJointDef;
revoluteJointDef.bodyA = referenceBody;//provided by testbed
revoluteJointDef.bodyB = lastLink;
revoluteJointDef.localAnchorA = startPos;//world coords, because m_groundBody is at (0,0)
revoluteJointDef.localAnchorB.Set(0,0);//center of circle
world->CreateJoint( &revoluteJointDef );


revoluteJointDef.bodyA = lastLink;//the last added link of the chain
revoluteJointDef.bodyB = chainBase;
revoluteJointDef.localAnchorA.Set(0,linkWidth);//the regular position for chain link joints
revoluteJointDef.localAnchorB.Set(0,linkWidth);//a little in from the edge of the circle
world->CreateJoint( &revoluteJointDef );

有什么方法可以使关节结实吗??

我们可以通过研究物体的密度和世界的重力来实现这一目标吗?

请帮忙 .....

4

1 回答 1

0

我遇到了类似的问题(但在绳子末端摆动较大物体的离心力)。要解决断裂链/绳索的问题,您需要使较大的物体不那么密集,但这会引入一个连锁问题 - 现在您的“较大”动态物体被绳索正确固定但不与其余物体相互作用世界应有的样子。

为了解决这个问题,我做了一些 hacky 并实现了我自己的碰撞处理程序,它将对我的较大物体碰撞的物体施加碰撞脉冲,就好像它更重一样。所以...

  • 使您的物体在绳子末端的密度非常低,以便绳子保持
  • 为您的对象实施一些补充碰撞处理程序,以使您的对象看起来对其他对象更密集(sensor = true 也可能对此有所帮助)。

这并不完全符合物理模拟器的精神,因为我们应该能够设置参数并让规则处理一切 - 基本上,如果旋转关节牢不可破,那就太好了。

于 2015-04-26T10:15:04.583 回答