2014-10-30 67 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。