我需要加载一个obj文件,并在第二时刻将不同的材质应用到obj文件中包含的部分。
我使用在三个例子中找到的OBJLoader加载带有此代码的OBJ文件:
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它似乎代码它应该返回不同对象中模型的各个部分,但是它在三行的第185行给出了一个错误.min.js“undefined不是函数”。
有人可以帮帮我吗?我实在无法解决。谢谢
答案 0 :(得分: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++;
}
} );
});