三.js 不使用 .obj 和 .mtl 文件应用材料



我下载了一个免费的3D模型,并尝试用三个.js查看它。模型加载良好,但材料未正确加载。唯一加载的是吧台后面的酒瓶,没有其他任何东西应用任何纹理。

此处显示问题的示例站点

这是我在模型中加载的方式:

// load in the bar 3d model
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load( 'bar1/3d-model.mtl', function ( materials ) {
materials.preload();
var objLoader2 = new THREE.OBJLoader2();
objLoader2.setMaterials( materials.materials );
objLoader2.load( 'bar1/3d-model.obj', function ( event ) {
scene.add( event.detail.loaderRootNode );
}, function() {
// success
}, function() {
// error
});
});

如果您查看 OBJ 文件使用的 MTL 文件,您会注意到它没有任何对纹理映射的引用。纹理贴图通常使用以下行引用:

map_Ka image.jpg
map_Kd image.jpg
map_Ks image.jpg    
map_Nd image.jpg
map_d image.jpg
map_bump image.jpg

如果您的模型不包含它们,您可以使用 3D 编辑器(如 Blender(添加它们。有关更多信息,请查看 OBJ 文件格式的纹理映射部分。

最新更新