2014-10-20 129 views
0

我需要加載一個obj文件並在第二個時刻對obj文件中包含的部分應用不同的材質。三個js訪問一個obj文件中包含的對象

我加載OBJ文件與此代碼使用OBJLoader i的threejs例子發現:

var loader = new THREE.OBJLoader(manager); 
loader.load('../includes/open.obj', function (object) { 
    console.log(object); 
    object.name = "object_name"; 
    object.traverse(function (child) { 
     if (child instanceof THREE.Mesh) { 
      child.geometry.computeVertexNormals(); 
     } 
    }); 
    scene.add(object); 
}); 

我是能夠將材料分配到整個OBJ模型,但我不能分配不同的材料到模型的各個部分。

我嘗試檢查控制檯中的對象結構,但它只產生一個孩子。

尋找OBJLoader2它似乎代碼它應該返回不同對象的模型的部分,但它給了我在第三線.min.js「未定義不是一個函數」的錯誤。

有人可以幫助我嗎?我真的無法解決。

謝謝

回答

0

不知道我理解正確的問題,所以請讓我知道這是不是你要找的答案。

請修改每個孩子的材質屬性。

var childCounter = 0; 
var loader = new THREE.OBJLoader(manager); 
loader.load('../includes/open.obj', function (object) { 
    console.log(object); 
    object.name = "object_name"; 
    object.traverse(function (child) { 
    if (child instanceof THREE.Mesh) { 
     if(childCounter == 0) { 
      child.material = new THREE.MeshLambertMaterial({ color: 0x00ff00, shading: THREE.FlatShading}); 
     } 
     else { 
      child.material = new THREE.MeshLambertMaterial({ color: 0x0000ff, shading: THREE.FlatShading, transparent: true, opacity: 0.5}); 
     } 
     child.geometry.computeVertexNormals(); 
     scene.add(child); 
     childCounter++; 
    } 
}); 

});

相關問題