我正在尝试使用从Blender导出的.obj和.mtl文件创建场景。该对象实际上只是一个矩形(它必须是一个.obj文件。将添加更多对象以创建场景),我能够看到材质负载,但看不到在chrome或firefox中应用的纹理。>
这是JavaScript代码:
seriestest2.fillna(value=0).rolling(window=3).quantile(.5)
检查控制台,对mtl,obj和图像文件的请求返回200状态代码
but the model renders without texture
控制台中完全没有错误。是什么原因导致Three.js中出现此问题?我怀疑.obj或.mtl出问题了,但是我找不到问题。 (根据记录的ajax请求,文件路径正确)。
答案 0 :(得分:0)
这可能是由于未在物料加载回调中返回的.preload()
对象上调用materials
方法。 preload()
方法基本上创建MTLLoader
加载的材质对象。
考虑以下更新,并添加此方法调用:
const mtl_loader = new THREE.MTLLoader();
mtl_loader.setTexturePath('bar/');
mtl_loader.setPath('bar/');
mtl_loader.load('floor.mtl', function(materials) {
// Add this (see link below for more detail)
materials.preload()
const obj_loader = new THREE.OBJLoader();
obj_loader.setMaterials(materials);
obj_loader.setPath('bar/');
obj_loader.load('floor.obj', function(object) {
scene.add(object);
})
});
Here is a link到三个源代码,其中显示了.preload()
的内部工作原理-希望对您有所帮助!