Javascript 材料未应用于obj文件
我正在尝试使用Javascript 材料未应用于obj文件,javascript,three.js,Javascript,Three.js,我正在尝试使用OBJLoader和MTLLoader库在我的三个JS代码中加载从blender 2.79导出的3d对象模型。对象已加载,但其材质未应用于该对象 材料显示在正确渲染混合器的循环中 如何将材质应用于对象文件 我使用的代码是 var mtlLoader = new THREE.MTLLoader(); mtlLoader.load("textures/reception_table.mtl", function(materials) { materials.preload();
OBJLoader
和MTLLoader
库在我的三个JS代码中加载从blender 2.79导出的3d对象模型。对象已加载,但其材质未应用于该对象
材料显示在正确渲染混合器的循环中
如何将材质应用于对象文件
我使用的代码是
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load("textures/reception_table.mtl", function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.load("textures/reception_table.obj", function(mesh) {
scene.add(mesh);
mesh.position.set(190, -25, 300);
mesh.scale.set(4, 6, 4);
});
});
如何将材质应用于对象文件
将材质添加到网格的实例中的语法为
myMesh.material = myMaterial
但是,为了将其添加到对象文件中,可以使用文本编辑器编辑该文件,也可以尝试使用不同的设置重新导出该文件。这可能不是Three.js的问题,而是文件的问题。Three.js可能正在按要求的方式加载所有内容 没有人知道如何在三个js中添加材料吗?您的代码看起来不错,但如果没有看到一个工作示例,就很难判断。您的.mtl文件可能有问题。我已将文件从blender直接导出到wavefront(.obj),并且生成了.mtl文件。请尝试在“setMaterials(materials)”行之前添加“console.log(materials)”。你得到了什么结果?在添加了console.log(materials)之后,我在里面的每一个其他材质中都看到了类似的结果:InsideDoor:{…} d:“100万” 照明:“2” ka:数组(3)[1,1,1] kd:Array(3)[0.64,0.64,0.64] 柯:“0.0000000.0000000.000000” ks:数组(3)[0.5,0.5,0.5] 姓名:“内幕人士” 倪:“100万” ns:“96.078431” proto:{…}因为我是blender的新手,你能告诉我哪些设置需要更改吗@pailheadI不使用blender不幸的是,我刚刚从three.js
的角度给出了一个通用的答案。blender exporter可能存在错误,但这实际上不是three.js的一部分,它只是一个在某个时候提供的示例,可能已被放弃。