2016-05-05 9 views
0

ソースコードのパスを編集するのではなく、モデルをアップロードして表示できるオンラインビューアを作成したいと考えています。 ブラウザはファイルパスを取得することはできませんが、ファイルの内容を読み取ることができるため、ファイルの内容を指定してモデル(obj、ply、mtlなど)をロードするにはどうすればよいですか?three.jsのパスではなく、ファイルの内容を指定する3-Dモデルを読み込む方法は?

答えて

1

いくつかの方法がありますが、github three.jsリポジトリに行くと、例ではobjローダーが表示されます。

https://github.com/mrdoob/three.js/tree/master/examples/js/loaders

は、あなたがしたい場合:など

http://threejs.org/examples/webgl_loader_obj.html

リポジトリは、すべての例ローダーとjsのフォルダを持っている例フォルダがありMTL、STL、COLLADA、との例があります。内部の3つのローダーを破壊するために、各ローダーの例は解析(テキスト)メソッドを持っています。

+0

はい、私はそれを知っています。使用される規約は 'loader.load(url、..)'です。ここでloaderはObj、Ply、Fbxの場合があります。しかし、私はブラウザにファイルをアップロードするときにURLを持っていませんが、ファイルの内容だけを持ちます。どのようにこの関数をどのような引数で呼び出すのですか? –

+0

ほとんどのローダーには解析メソッドがあります。直接使用することができますhttps://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js#L300 – yomotsu

+0

はい、解析メソッドを使用します。 ^ – Radio

0

まあ、three.jsのオンラインエディタではこれが@http://threejs.org/editor/であることがわかりました。

ファイル - >インポート。

0

the HTML5 filereader APIを使用して、対応するローダから解析メソッドを直接呼び出すことができます。

ファイルリーダーを使用して、ファイルをデータURLに読み込み、通常のURLの代わりにデータURLを読み込むことができます。

HTMLコードのonloadイベントを処理するため、ユーザは

<h1>Model File Reader</h1> 
<div> 
    Select a model file: 
    <input type="file" id="fileInput"> 
</div> 

モデルファイルをロードできるようにするJavascriptコード:

window.onload = function() { 
    var fileInput = document.getElementById('fileInput'); 

    fileInput.addEventListener('change', function(e) { 

     // file selection is done you can now read the file 
     var file = this.files[0]; 

     // set your file encoding 
     var encoding = 'ISO-8859-1'; 

     // create a file reader 
     var reader = new FileReader(); 

     // set on load handler for reader 
     reader.onload = function(e) { 
      var result = reader.result; 

      // parse using your corresponding loader 
      loader.parse(result); 
     } 

     // read the file as text using the reader 
     reader.readAsText(file, encoding); 

    }); 
} 

チェックhereファイルリーダークラス

の詳細については、
関連する問題