ライブラリーに付属している適切なローダーを使用して非常に大きなファイルを読み込もうとすると、自分のウェブサイトのタブがクラッシュします。私はWorkerクラスを実装しようとしましたが、うまくいきません。相続人は何が起こる:メインのJavaScriptファイルでThree.js large modelsをロードする
私が持っている:
ユーザーが選択var worker = new Worker('loader.js');
私は拡張子をチェックし、労働者へのファイルのURL /パスを渡し可能なモデルの1:この例では(
importScripts('js/libs/three.js/three.js');
importScripts('js/libs/three.js/PCDLoader.js');
:PCDファイル)
worker.postMessage({fileType: "pcd", file: file});
今
loader.jsは適切にそれを動作させるために必要であることを含んであり
であり、onmessageメソッドでは、ファイルの拡張子に応じて適切なローダーを使用します。
var loader = new THREE.PCDLoader();
loader.load(file, function (mesh) {
postMessage({points: mesh.geometry.attributes.position.array, colors: mesh.geometry.attributes.color.array});
});
データは、シーンに追加するメインのJavaScriptに正常に戻されます。私は言ったように、小さなファイルでは、長すぎるとブラウザがエラーがあると判断します。今私は、ワーカークラスが非同期で動作するはずだと思ったので、ここで何ができますか?
どのようなエラーが発生しましたか?また、使用したブラウザは? – Alexus
私は多くの間違いを疑う。非常に大きなモデルファイルは、JavaScriptで非常に大きな配列につながる3つのオブジェクト。非常に大きなモデルを複数のファイルに分割して、これらのポイント、ノーマル、マテリアルインデックス、UVおよびフェイスアレイを配布すると、モデルの大きさに応じて役立ちます。また、bufferGeometryを使用すると、実行時のパフォーマンスが向上する可能性があります。http://threejs.org/docs/api/core/BufferGeometry.htmlを参照してください。 – Radio
@Alexus Chrome、Opera、Firefox、およびIEを試しました。 IE以外のすべてのエラーは非常に有用ではありません(サイトが壊れた、ああ、スナップなど)。 IEはただ凍結します。 – VID44R