0

私はロープ物理学に取り組んでいます。回転ジョイントを使用して 1 本のロープを実装しました。

ダイナミック ボディを接続するロープを作成しています (b2RevoluteJoints を使用)。正常に作成されました。また、ロープの端に 1 つのダイナミック ボディを取り付けます。この体を下向きにしてこのロープを解放すると、どうにかダイナミック ロープ体の間の関節が伸びて壊れてしまいます。ロープをもっと滑らかに見せたいと思っています。

私の関節はこんな感じです

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

私も同様の問題を抱えていました(ただし、ロープの端でより大きな物体を振る遠心力がありました)。チェーン/ロープが壊れる問題を解決するには、より大きなオブジェクトの密度を下げる必要がありますが、これにより問題が発生します。「より大きな」動的オブジェクトはロープによって正しく保持されますが、残りのオブジェクトとは相互作用しません。あるべき世界。

この問題を解決するために、ちょっとハックなことをして、自分の大きなオブジェクトが衝突したものに衝突インパルスを適用する独自の衝突ハンドラを実装しました。そう...

  • ロープの端にあるオブジェクトを非常に低密度にして、ロープが保持されるようにします
  • オブジェクトが他のオブジェクトよりも密度が高いように見えるようにするために、オブジェクトにいくつかの補足的な衝突ハンドラーを実装します (sensor = true はこれにも役立つ場合があります)。

これは厳密には物理シミュレーターの精神ではありません。パラメーターを設定し、ルールにすべてを任せることができる必要があるためです。

于 2015-04-26T10:15:04.583 に答える