2014-06-24 45 views
1

我想是從OBJMTLLoder加載對象的線框,所以在這裏我的代碼像下面threejs線框與對象材料

var loader = new THREE.OBJMTLLoader(); 
       loader.load('obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function (object) { 

        object.traverse(function (child) { 

        if (child instanceof THREE.Mesh) 
        { 
        child.geometry.computeFaceNormals(); 
        var geometry = child.geometry; 
        console.log(geometry); 
        geometry.dynamic = true; 
        material = new THREE.MeshLambertMaterial(); 
        mesh = new THREE.Mesh(geometry, material); 
        scene.add(mesh); 

        var useWireFrame = true; 
         if (useWireFrame) { 
          mesh.traverse(function (child) { 
           if (child instanceof THREE.Mesh) child.material.wireframe = true; 
          }); 
         } 

        } 

        object.position.y = - 80; 
        scene.add(object); 

        }); 

       }); 

這是工作好,我可以看到線框在我的對象上,不幸的是在這裏我的對象材質改爲MeshLambertMaterial。但我想獲取對象的線框與加載的對象的默認材質,我可以使用各種材質作爲在threejs文件,但沒有一個給我的結果與默認對象材質

回答

1

我得到固定它通過添加child.material的材料,所以這裏是

loader.load('obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function (object) { 

        object.traverse(function (child) { 

        if (child instanceof THREE.Mesh) 
        { 
        //child.geometry.computeFaceNormals(); 
        var geometry = child.geometry; 
        //console.log(geometry); 
        //geometry.dynamic = true; 
        material = child.material; 
        mesh = new THREE.Mesh(geometry, material); 
         scene.add(mesh); 

        var useWireFrame = true; 
         if (useWireFrame) { 
          mesh.traverse(function (child) { 
           if (child instanceof THREE.Mesh) 
           { 
           child.material.wireframe = true; 
           child.material.color = new THREE.Color(0x6893DE ); 
           } 
          }); 
         } 

        } 

        object.position.y = - 80; 
        //scene.add(object); 

        }); 

這裏我補充material = child.material;geometry = child.geometry;它工作得很好

答案