4

インパルスベースの物理エンジンを開発していますが、質量差の大きいオブジェクトに問題があります。

各フレームで、エンジンは衝突を処理するためにインパルスを適用します。インパルスは、衝突するオブジェクトの各ペア間で、何度も繰り返されます。これは、オブジェクトがほぼ同じ質量である場合にうまく機能します。

しかし、問題は、重い物体を軽い物体の上に置くと、重い物体が軽い物体を地面に押し込むことです。

問題の原因は、2つのオブジェクト間に適用されるインパルスが小さすぎるため、何度も繰り返しても、重いオブジェクトの重力に対抗するのに十分ではないことです。

必要な衝動を正確に計算する方法はあると思いますが、複雑すぎるのではないかと心配しています。そのため、ほとんどの場合、この問題に対処するためのいくつかのトリックを探していますが、エンジンの動作方法は変更していません。

アイデアをありがとう!

4

1 に答える 1

3

Googleの「衝撃伝播」の基本的な考え方は、接触を重力の方向(通常は「y」軸に沿って)に並べ替え、接触の解決中に下半身を凍結する(無限の質量、つまりinvMassを割り当てる)ことです。 = 0.0fおよびinvInertiaTensorはゼロ行列である必要があります)、それらが「沈む」ことはありません。私はそれを実装していません、私は自分のくだらない物理エンジンに苦労しています。

于 2010-11-27T22:08:31.790 に答える