2014-06-23 49 views
1

工作線框正在使用OBJMTLLoader加載我的對象threejs,線框控制單獨工作OBJLoader,但對於OBJMTLLoader它不工作threejs不OBJMTLLoader

var loader = new THREE.OBJMTLLoader(); 
       loader.load('obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function (object) { 
        object.children[0].geometry.computeFaceNormals(); 
        var geometry = object.children[0].geometry; 
          console.log(geometry); 
        THREE.GeometryUtils.center(geometry); 
        geometry.dynamic = true; 
        var material = new THREE.MeshLambertMaterial({color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors }); 
        mesh = new THREE.Mesh(geometry, material); 
        scene.add(mesh); 
       }); 



function wireframe(){ 
       //alert('hhhhhh'); 
       mesh.material.wireframe = true; 
       mesh.material.color = new THREE.Color(0x6893DE ); 
       } 

,但它引起以下錯誤,所以我的模型沒有顯示在查看器上,所以在這裏我想知道我們可以在任何類型的3D模型上創建線框?

object.children [0] .geometry是未定義

回答

2

即使OBJMTLLoader返回THREE.Object3D對象,它確實有.children,你不應該假設.childrenTHREE.Mesh類型。所以你應該實際上traverse()THREE.Object3D爲了找到THREE.Mesh

object.traverse(function (child) { 

if (child instanceof THREE.Mesh) 

    // do something with the geometry 

}); 
+0

嗨@gaitat現在我沒有任何錯誤,但我應用了幾何和網格,但仍然線框不起作用,在這裏看代碼object.traverse(function(child){if(child的instanceof THREE.Mesh) {child.geometry.computeFaceNormals(); \t \t \t \t \t變種幾何= child.geometry; \t \t \t \t \t \t geometry.dynamic = TRUE; \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t}); \t \t \t \t \t變種材料=新THREE.MeshLambertMaterial({顏色:0XFFFFFF,陰影:THREE.FlatShading,vertexColors:THREE.VertexColors}); mesh = new THREE.Mesh(geometry,material); scene.add(mesh); –

+0

您正在定義'traverse()'函數內的'geometry',然後在函數外部使用它。這是一個範圍問題。 – gaitat

+0

如果我使用的內部橫向幾何()我得到同樣的結果,如果(孩子的instanceof THREE.Mesh) \t \t \t \t \t { \t \t \t \t \t child.geometry.computeFaceNormals(); \t \t \t \t \t var geometry = child.geometry; \t \t \t \t \t console.log(geometry); \t geometry.dynamic = true; \t \t \t \t \t \t \t \t \t \t變種材料=新三。MeshLambertMaterial(); mesh = new THREE.Mesh(geometry,material); \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t}); –