2013-08-26 72 views
0

所以我在Three.js中學了一堂課,才發現我沒有受過如何加載模型的教育。我在Turbosquid.com <http://storage2.turbosquid.com/Download/index.php?ID=717563_8377529>上找到了一個模型,並使用convert_obj_three.py成功將其轉換爲JSON。JSONLoader不顯示模型

我已經衝浪了很好的代碼,並在stackoverflow上找到了一些體面的例子,但由於某種原因,當我在鉻中運行它,我沒有得到任何模型。

<html> 
<head></head> 

<body> 

    <script src="http://threejs.org/build/three.js"></script> 
    <script> 

     var scene = new THREE.Scene(); 
     var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 

     var geometry; 

     var renderer = new THREE.WebGLRenderer(); 
     renderer.setSize(window.innerWidth, window.innerHeight); 
     document.body.appendChild(renderer.domElement); 

     var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); 

     loader = new THREE.JSONLoader(); 

     loader.load("LeePerrySmith.js", function(geometry) { 

      mesh = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial()); 
      mesh.scale.set(10, 10, 10); 
      mesh.position.y = 0; 
      mesh.position.x = 0; 
      mesh.scale.set(100, 100, 100); 
      scene.add(mesh); 
      mesh.side = THREE.DoubleSide; 
      alert("hit"); 

      }); 


     camera.position.z = 5; 

     var render = function() { 
      renderer.render(scene, camera); 
     }; 

     render(); 

    </script> 
</body> 

我都保存HTML文件,並在同一目錄下e100.js模型文件。有沒有我不知道的一些路徑?

回答

1

嗯,我已經在這裏測試了你的代碼,用一個簡單的多維數據集作爲js文件導出,它工作正常。最初我懷疑3件事:

1)也許網格是超級微小,你不能看到它,試試mesh.scale.set(100, 100, 100);看看是否改變任何東西。 將相機的z位置縮小一點。

2)路徑看起來很好,如果你想要更加確定的話,你可以使用像「./e100.js」這樣的相對路徑,但它確實沒有必要。 3)也許網格已經倒過來了,或者是其他的缺陷。只是爲了測試你可以嘗試設置你的網格渲染兩側的紋理,看看是否能像這樣的問題:

mesh.side = THREE.DoubleSide; 

OR你可以嘗試一個更基本的材料,如代替MeshBasicMaterial或您的正常版本並看看是否有幫助。

保持您的控制檯在模型加載時打開,查找任何錯誤。如果這些都不起作用,我會懷疑這個模型,但是現在這是跳槍。

快樂狩獵,

編輯:cube.js

{ 
"metadata" : 
{ 
"formatVersion" : 3.1, 
"generatedBy" : "Blender 2.66 Exporter", 
"vertices" : 8, 
"faces" : 6, 
"normals" : 8, 
"colors" : 0, 
"uvs" : [24], 
"materials" : 1, 
"morphTargets" : 0, 
"bones" : 0 
}, 
"scale" : 1.000000, 
"materials" : [ { 
     "DbgColor" : 15658734, 
     "DbgIndex" : 0, 
     "DbgName" : "Material", 
     "blending" : "NormalBlending", 
     "colorAmbient" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865], 
     "colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865], 
     "colorSpecular" : [0.5, 0.5, 0.5], 
     "depthTest" : true, 
     "depthWrite" : true, 
     "mapDiffuse" : "cube.png", 
     "mapDiffuseWrap" : ["repeat", "repeat"], 
     "shading" : "Phong", 
     "specularCoef" : 50, 
     "transparency" : 1.0, 
     "transparent" : false, 
     "vertexColors" : false 
    }], 
"vertices" : [1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,-1,0.999999,1,1,-1,1,1,-1,1,-1], 
"morphTargets" : [], 
"normals" : [0.577349,-0.577349,-0.577349,0.577349,-0.577349,0.577349,-0.577349,-0.577349,0.577349,-0.577349,-0.577349,-0.577349,0.577349,0.577349,-0.577349,-0.577349,0.577349,-0.577349,-0.577349,0.577349,0.577349,0.577349,0.577349,0.577349], 
"colors" : [], 
"uvs" : [[0.33408,0.333114,0.334191,0.659296,0.009852,0.659305,0.009721,0.333137,0.991035,0.334072,0.663423,0.334025,0.663036,0.005624,0.991002,0.005943,0.991246,0.333487,0.991261,0.6585,0.663173,0.658447,0.662825,0.334005,0.662568,0.33421,0.662689,0.65851,0.335127,0.658476,0.335112,0.333952,0.335825,0.007042,0.335835,0.333228,0.008133,0.333306,0.008138,0.006861,0.335761,0.333299,0.335071,0.005883,0.663081,0.006277,0.663095,0.333865]], 
"faces" : [43,0,1,2,3,0,0,1,2,3,0,1,2,3,43,4,7,6,5,0,4,5,6,7,4,5,6,7,43,0,4,5,1,0,8,9,10,11,0,4,7,1,43,1,5,6,2,0,12,13,14,15,1,7,6,2,43,2,6,7,3,0,16,17,18,19,2,6,5,3,43,4,0,3,7,0,20,21,22,23,4,0,3,5], 
"bones" : [], 
"skinIndices" : [], 
"skinWeights" : [], 
"animation" : {} 
} 
+0

嗯,我嘗試了所有的四點建議,我仍然沒有任何想法是錯誤的。我正在使用Notepad ++編寫代碼,並且我可以識別的是,GET在我的src =「three.min.js」調用中拋出一個錯誤,並且隨後THREE沒有被定義。我應該使用.prototype嗎? – gustable

+0

所以我設法讓代碼在控制檯中運行不受限制,但仍然沒有結果。 – gustable

+0

這是不幸的,你有沒有嘗試過另一個模型文件?我會編輯我的答案,以獲得一個簡單的cube.js文件的內容,也許模型文件是罪魁禍首? –