2017-05-17 21 views
0

私のプロジェクトでは、ThreeJSに3Dオブジェクトを読み込む関数を実装したいと思います。 3Dオブジェクトは、ユーザがウェブサイトにアップロードするファイルからのものである。このファイルは、複数の形式(STL、JSON、Babylon、Colladaなど)にすることができます。ファイルの依存シーンにThree.js - シーン内に複数のファイル形式をロードする

// BEGIN Clara.io JSON loader code 
var objectLoader = new THREE.ObjectLoader(); 
objectLoader.load('clara.json', function(obj) { 
    object = new THREE.Mesh(obj); 
    scene.add(object); 
}); 

ThreeJSのいずれかの方法(または任意のコード)があること、負荷自動的に3Dオブジェクト:

今まで、私は、怒鳴るなどのショーを一つのファイル形式を読み込むことができますそれは与えられる?

答えて

1

私のアドバイスあなたは、ファイルの拡張子に応じて、右ローダーを使用するようにすべての必要なローダーとコードの大きなswitchを含める必要があり、three.js editor
codeを見てみることを

enter image description here

+1

ありがとうございます!その他のコードでは、コードは_index.html_と_/js/Loader.js_です – Pouchopa

1

私はちょうどローダーを把握するために、ファイルの文字列を使用します -

ので、あなたのようないくつかの機能を持っている:

loadXXXは、ファイルの種類ごとに複数回定義されて
loadArbitraryModel("path/to/file.json"); 

loadArbitraryModel = function(path) { 
    var strings = path.split('.'); //now the path is ["path/to/file", "json"] 
    var types = ['json', 'obj', 'stl', 'babylon', 'collada']; 
    var result = -1; 
    types.forEach(function (item,index) { 
     if (strings.length > 1) { 
      if (strings[1] == item){ //strings[1] would be anything after the '.' 
       result = index; 
      } 
     } 
    }); 
    switch (result){ 
     case -1: 
      alert("file format not supported/ improperly named"); 
     case 0: 
      loadJSON(path); 
      break; 
     case 1: 
      loadOBJ(path); 
      break; 
     case 3: 
      loadSTL(path); 
      break; 
      //ETC etc etc 
    } 
} 

。または、load(loader,path)タイプの関数を使用できます。使用するローダーを渡します。ケースjson - >load(new THREE.ObjectLoader(),path)です。私はすべてのローダーが同じように十分に働いてfunction load(__, __)の腸がすべての場合で同じになることができると思います。これは、あなたが複数の機能にまたがることを避けるのに役立ちます。

これは、人を混乱させ、間違った拡張機能を与えている人たちを説明していませんが、loadXXX()関数では、ローダーが警告をスローするようにonError関数を定義できますそれを解析しないでください。あなたが見ることができるように

関連する問題