0

他の誰かがこの問題を抱えているのか、three.js を使用していないのかはわかりません。さまざまな回転速度 (矢印キー、マウス、またはタッチ入力) で回転する立方体の簡単なデモがあります。Chrome ブラウザーではすべてがうまく機能するようです。仕事で iMac に飛び乗ったところ、テクスチャが接合されているように見え、Safari でジオメトリに正しくマッピングされていません。

Mac で Firefox ブラウザーに移行したところ、すべてが機能し、フレーム レートも適切です。何らかの理由で、キューブが特定の角度で回転すると、レンダラーがジャンプして画面上の hud が上に移動し、タイトルが上部に表示されず、統計ウィジェットが画面の下部から上に移動するようです。また、キューブの y 位置が同時に跳ね上がっているようです。一部のモバイル ブラウザの Android でも同じ問題が発生しているようです。Firefox (Mac の場合) またはモバイル ブラウザで、レンダリングが突然ジャンプしたり、画面上の hud が移動したりするなど、同様の問題が発生した人がいるかどうか疑問に思っていました。

編集:私は問題を理解しました。私はまだ理想的な解決策を持っていません。デモのコピーを作成し、キーボード処理コードをコメントアウトしようとしましたが、驚いたことに問題がまだ存在していました。どうやらFirefoxはウィンドウをわずかに上下にスクロールしており、THREExライブラリに含まれるキーボードハンドラはFirefoxの上下矢印キーのデフォルトの動作を無効にしていません。クロムでは、ウィンドウをスクロールする余地がなく、レンダラーをウィンドウのサイズにするだけです。firefox がスクロールする理由がわかりません。

4

2 に答える 2

1

あなたの例で、MacのFirefoxで同じ問題を実験します。

レンダリングのジャンプは、ガベージ コレクターによるものです (Firefox では不十分に実装されています)。各「アニメーション」機能にメモリを割り当てています。

ローテーション用に新しい Vector3/Matrix4 を作成する代わりに、グローバル変数を使用して、これらのオブジェクトを 1 回だけ作成します。

さらに、KeyboardState を使用して各 animate 呼び出しでこれらの「State」関数を実行する代わりに、KeyboardListener を使用する必要があります。これは、何かが変更されたときにコードを実行します (常にではありません)。

この例を見てください: http://mrdoob.github.com/three.js/examples/canvas_geometry_cube.html

于 2012-06-06T08:29:52.090 に答える