0

ローカル サーバーで適切に動作する webgl プログラムを作成しましたが、ローカルで実行したいと考えています。しかし、エラーがあり、いくつかの調査の結果、テクスチャをロードする際のクロス ドメインの問題であることがわかりました。

function loadTexture( path ) {
    var texture = new THREE.Texture( texture_placeholder );
    var material = new THREE.MeshBasicMaterial( { map: texture, overdraw: true} );

    var image = new Image();
    image.onload = function () {

        texture.needsUpdate = true;
        material.map.image = this;

       render();
   };
   texture.deallocate();
   renderer3D.deallocateTexture( texture );

   return material;
 }

私はいくつかの解決策を試しました:

github.com/mrdoob/three.js/issues/1305

github.com/mrdoob/three.js/issues/944

gist.github.com/ekeneijeoma/1186920

github.com/mrdoob/three.js/wiki/How-to-run-things-locally (1.ブラウザーでローカル ファイルのセキュリティを変更する (file:///example としてページにアクセス))

私は、Firefox では問題がないと正確に言います。何も変更せずに動作します。Chrome で機能する唯一の解決策は、--allow-file-access-from-files で起動することです。IE では、解決方法がわかりません。ブラウザのセキュリティ オプションで、「ドメイン間でデータ ソースにアクセスする」と「異なるドメイン間でサブフレームをナビゲートする」を有効にしました ( http://msdn.microsoft.com/fr -fr/library/ee797612(v=cs.20).aspx ) しかし何もありません。私は IEWebGL を使用していますが、http: //iewebgl.com/ の「IEWebGL v1.0 リリース済み」セクションに「- Secure (no local content loading, no cross-domain textures)」と書かれていることに気付きました。IEWebGLのせいでIEでは解けないかも!?

では、IE の解決策があるとすれば、それは何でしょうか? また、特別なオプションを使用してローカル サーバーまたは Chrome を起動せずに、コードを変更することで問題を解決する方法はありますか?

ありがとう!

4

2 に答える 2

3

この質問は、他に少なくとも 6 回尋ねられて回答されており、three.js wiki でも回答されています。

簡単に言うと、ローカルサーバーを実行する必要があります。ターミナル/シェル/コマンド プロンプトを開き、次のように入力します。

cd <path/to/files>
python -m SimpleHTTPServer

次に、ブラウザで次の場所に移動します

http://localhost:8000

なぜそれがオプションではないのですか?それは簡単で、問題を解決します。また、ブラウザが所有されたままになることもありません。

使用できるいくつかの単純なサーバーを次に示します

于 2013-02-06T09:40:53.270 に答える
0

ご回答有難うございます。

確かに、それはすでに尋ねられて解決されており、解決策を見て、ローカルサーバーでうまく機能し、セキュリティについては完全に同意します.

第一に、Firefox と Safari ではサーバーなしで動作し、Google では --allow... を使用して動作するため、IE で可能であれば良かったです。そして第二に、サーバーに python などをインストールしなくてもすぐに動作する非常に単純なプログラムが必要だったので...

実際、これはオフライン アプリケーション用です (Web ベースのアプリケーションでは奇妙であることはわかっていますが、私の選択ではありません :))。とにかく、Firefox、Chrome、Safari で動作するので、IE では残念です。

ありがとう!

于 2013-02-06T11:35:40.053 に答える