2014-10-20 130 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++; 
    } 
}); 

});

相关问题