0

javascript と WebGL で Box2DWeb を使用しています。

私の体の寸法は約 1.0 で、地面は Box2D で約 5.0 です。変換回転( GetPosition()およびGetAngle()関数から取得した値を使用)を使用して、WebGL を使用して単純に描画します。これらの関数から取得した値と同じ値を使用します。つまり、オブジェクトの描画には 1.0 前後の値を使用し、地面には 5.0 前後の値を使用します。

問題は、回転が発生した場合 (2 つの物体が衝突した場合など)、平衡状態になるまで物体が回転および移動し、描画される最終的な位置が不明確になることです。オブジェクトが単に地面に横たわっている場合でも、線はまっすぐではありません。回転がなければ、体はきれいに見えます。

ここに画像があります:

ご覧のとおり、いくつかのサイドラインとボトムラインはまっすぐではありません. 歪んで見える。なぜこれが起こっているのでしょうか?

要約すると、私は世界を歩み、変更された位置と角度をどこかに保存し、 WebGLを使用して点に変換し、WebGL 呼び出しを使用して回転し、画面に体を描画します。

[編集] より大きなオブジェクトのために最終的に休んでいる間の角度は: -3.1379659302514917 でした! 完全な-PI. だからこそ、そう見られているのかもしれません。それを修正する方法はありますか?

4

2 に答える 2

1

一般的な物理エンジンが不正確な結果を生成することは避けられません。ほぼ静止している物体のシミュレーションを停止するために、より厳しいしきい値を設定することで、より近い近似になるように調整できる場合があります (明らかに、Box2D はこれを「スリープ」と呼んでいます)。

また、アンチエイリアス処理されたグラフィックスを使用して画面上で目立たないようにすることもできます。これにより、わずかな回転によって線に 1 ピクセルのキンクが作成されるのではなく、より緩やかな傾斜が作成されます。

倍数 π/2 に近いことが実際には正確であるという仮定の下で回転値を微調整することもできますが、タンブリング ボディに顕著なグリッチが発生します。

于 2012-10-14T04:53:39.650 に答える
0

正射投影ではなく透視投影を使用して 2D のものを描いていたため、これが発生したことがわかりました。

また、画像を 0.5 m から 5 m の範囲に保ち、30.0 のスケールを使用して画面のピクセルと Box2D メーターを変換する必要がありました。

于 2012-10-24T18:44:08.823 に答える