File APIを使用してブラウザで表示する3Dモデルをインポートする機能を作成したいと考えています。ファイルAPIを使用してthree.jsにアセットをロードする
three.jsローダーは、私がホストしているファイルでうまく動作します。私の理解は、ローダーがファイルを取得するためにajaxを使用することです。
ファイルを表示するためにクライアント上のディスクからファイルをロードしたいと考えています。これはどのように達成されるでしょうか?
File APIを使用してブラウザで表示する3Dモデルをインポートする機能を作成したいと考えています。ファイルAPIを使用してthree.jsにアセットをロードする
three.jsローダーは、私がホストしているファイルでうまく動作します。私の理解は、ローダーがファイルを取得するためにajaxを使用することです。
ファイルを表示するためにクライアント上のディスクからファイルをロードしたいと考えています。これはどのように達成されるでしょうか?
ローダーのload()関数を必要に応じてオーバーライドまたはホットパッチすることができます。
他のTHREE.js関連コードの前にオーバーライドを置きます。たとえば:
THREE.OBJLoader.prototype.load = function(url) {
// copy the function from OBJLoader.js source and change the AJAX calls to File API calls
}
他の人とは違って、ColladaLoaderはプロトタイプを使用して実装されていないようですので、それはのように簡単ではないのです。 Colladaのサポートが必要な場合は、Loaderの作成後にそれを実行し、その関数を直接ローダーのインスタンスでオーバーライドする必要があります。このアプローチは、OBJLoaderなどでも有効です。しかし、事前にこれを行うことはできません。実際のモデルのロード関数/コールバックにコードを記述する必要があります。
var myloader = new THREE.ColladaLoader();
myloader.load = function(url) {
// copy the function from ColladaLoader.js source and change the AJAX calls to File API calls
}
ImageLoaderで同様のアプローチを使用して、キャンバスを使用して2の非累乗テクスチャを適切な寸法に自動的にサイズ変更します。
ソースコードを見ると、AJAXは多少ハードコード化されて見えます...私は間違っているかもしれません。 –
JSONを任意の方法でロードし、 'load'ではなく' createModel'を呼び出すことができます: 'new JSONLoader.createModel(geometry、callback、texturePath);' – Chad