2014-10-30 205 views
0

http://threejs.org/examples/#webgl_loader_scene爲例,我試圖添加從Blender導出的js文件。該文件可以正確加載JSONLoader,但現在我希望它與其他文件以及進度條結合使用。Three.js - 向SceneLoader添加JSON文件類型

  $("progress").style.display = "block"; 

      THREE.Loader.Handlers.add(/\.dds$/i, new THREE.DDSLoader()); 

      var loader = new THREE.SceneLoader(); 

      loader.addGeometryHandler("binary", THREE.BinaryLoader); 
      loader.addGeometryHandler("ctm", THREE.CTMLoader); 
      loader.addGeometryHandler("vtk", THREE.VTKLoader); 
      loader.addGeometryHandler("stl", THREE.STLLoader); 

      loader.addHierarchyHandler("obj", THREE.OBJLoader); 
      loader.addHierarchyHandler("dae", THREE.ColladaLoader); 
      loader.addHierarchyHandler("utf8", THREE.UTF8Loader); 
      loader.addHierarchyHandler("json", THREE.JSONLoader); 

      loader.callbackProgress = callbackProgress; 

      loader.load("scenes/test_scene.js", callbackFinished); 

我添加了json HierarchyHandler幷包含了JSONLoader.js文件。

loader.addHierarchyHandler("json", THREE.JSONLoader); 

然後我將此添加到其他dae和obj文件所在的「objects」下的test_scene.js。

"tree" : { 
    "type": "json", 
    "url" : "models/json/tree.js", 
    "position" : [ -43, -10, 27 ], 
    "rotation" : [ -1.57, 0, 0 ], 
    "scale" : [ 5, 5, 5 ], 
    "visible" : true 
      }, 

控制檯記錄它讀取爲樹引用的紋理文件,但從未結束 - 進度條保持在99%。

但是我收到的錯誤是:

Uncaught TypeError: Cannot read property 'fromArray' of undefined  SceneLoader.js:554 

有誰知道爲什麼這可能是發生還是什麼我做錯了嗎? three.js示例加載除json之外的所有類型的文件。有沒有這個理由,還是我錯過了什麼?我讀過SceneLoader將被折舊,我應該考慮使用ObjectLoader,但沒有如何做的例子。

謝謝!

回答

0

實際上,我認爲Three.js附帶的SceneLoader示例包含一個JSON。如果我沒有弄錯,Scene Loader實際上能夠加載JSON文件本身,而不需要任何HierarchyHandler。

我實際上認爲你添加JSONLoader.js文件的嘗試並沒有真正連接任何東西。

我看了一下這個例子:webgl_loader_scene.html。如果你打開相關的場景(test_scene.js),你可以找到進口之間的實際JSON幾何:

"embeds": { 

    "cube_fvc": { 

     "metadata" : { 
      "formatVersion" : 3 
     }, 

     "scale" : 1.0, 

     "materials": [{ 
      "DbgColor" : 15658734, 
      "DbgIndex" : 0, 
      "DbgName" : "Material", 
      "colorAmbient" : [0.0, 0.0, 0.0], 
      "colorDiffuse" : [0.8, 0.8, 0.8], 
      "colorSpecular" : [0.5, 0.5, 0.5], 
      "specularCoef" : 50, 
      "transparency" : 1.0, 
      "vertexColors" : true 
     }], 

     "vertices": [1.000000,-1.000000,-1.000000,1.000000,-1.000000,1.000000,-1.000000,-1.000000,1.000000,-1.000000,-1.000000,-1.000000,1.000000,1.000000,-1.000000,0.999999,1.000000,1.000001,-1.000000,1.000000,1.000000,-1.000000,1.000000,-1.000000], 

     "morphTargets": [], 

     "normals": [], 

     "colors": [16777215,16769421,16769424,8454135,15195931,7299839,16586715,16711687,1056014,6029475,13762484,9044089,7962349,6772991,16774622,4144383,11973887,1966063,1056285,9081232,13696943,5002581], 

     "uvs": [[]], 

     "faces": [131,0,1,2,3,0,0,1,2,3,131,4,7,6,5,0,4,5,6,7,131,0,4,5,1,0,0,8,9,10,131,1,5,6,2,0,0,11,12,13,131,2,6,7,3,0,14,15,16,17,131,4,0,3,7,0,18,19,20,21] 

    } 

}, 

所以我認爲,所有你需要做的是指在所要求的相同的語法一個JSON文件SceneLoader。