2013-10-09 44 views
0

我正在尝试加载JSON模型并将其显示在画布上。但是屏幕上没有任何东西。我试图在loader.load回调中发出警报,但警报从不显示:回调从不会被调用。我想知道如果有什么问题的JSON文件,我从这里下载它:https://livingvindonissa.googlecode.com/svn-history/r42/trunk/livingvindonissa/src/model/test/Teapot.json无法加载JSON模型

这是代码:

<head> 
     <title> Teapot </title> 
     <style> 
      canvas {width:100%; height:100%; background-color: black} 
      body {background-color: white}; 
     </style> 
    </head> 
    <body> 
     <h1 align="center"> Teapot </h1> 
     <script src="/Users/ramy/Documents/HTML/mrdoob-three.js-58e4622/build/three.min.js"></script> 
     <script type="text/javascript"> 
      // Scene initialization 
      var scene= new THREE.Scene(); 
      var camera= new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000); 
      var renderer= new THREE.WebGLRenderer(); 
      renderer.setSize(window.innerWidth,window.innerHeight); 
      document.body.appendChild(renderer.domElement); 
      camera.position.z= 50; 

      // Teapot creation 
      var teapot; 
      var loader= new THREE.JSONLoader(); 
      loader.load("/Users/ramy/Documents/HTML/teapot.json", 
       function(geometry) { 
        var material= new THREE.MeshBasicMaterial({color:0x00ff00}); 
        teapot= new THREE.Mesh(geometry,material); 
        scene.add(teapot); 
        render(); 
       }); 

      // Rendering 
      var render= function() { 
       requestAnimationFrame(render); 
       renderer.render(scene,camera); 
      } 
     </script> 
    </body> 
</html> 
+0

是否打算使用本地路径连接'three.js'? – Raptor

+0

也使用完整的路径它为我工作。 –

回答

1

看来,模型格式使用的是”不是个t时的相同经Three.js pluginPython script converter对我来说,告诉的故事是,three.js所具有包含元数据块中的JSON格式从搅拌机出口:

"metadata" : 
{ 
    "formatVersion" : 3.1, 
    "generatedBy" : "Blender 2.65 Exporter", 
    "vertices"  : 25253, 
    "faces"   : 49658, 
    "normals"  : 25252, 
    "colors"  : 0, 
    "uvs"   : [25399], 
    "materials"  : 8, 
    "morphTargets" : 0, 
    "bones"   : 0 
}, 

另外,你的文件有

"vertexPositions" 
"vertexNormals" 
"vertexTextureCoords" 
"indices" 

而不是

"vertices" 
"normals" 
"uvs" 
"faces" 

我怀疑在一个通用的模型JSON格式,而不是three.js所JSON格式生成的文件。你能确认你使用的出口商吗?

编辑:为了澄清,这个问题的答案是使用的JSON格式与Three.js JSONLoader不兼容。您需要找到原始文件,并使用上述方法进行转换,或手动转换JSON文件,以符合Three.js JSON格式。

+0

真的,我没有使用任何出口商,我在网上找到了该文件。 –

+0

我已经编辑了上面的回复,唉,您拥有的JSON文件不会与Three.js一起工作,而且不会在您的部分繁重工作。 –