我有一些.obj
文件和相应.mtl
文件的导出。纹理在.tga
同一文件夹中的格式。
这是我用来加载所有内容的代码.obj
:
function addCar(modelPath, modelName) {
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(modelPath);
for (var i = 0; i <= 2; i++) {
loadObject(mtlLoader, modelPath, modelName, i);
}
}
function loadObject(loader, path, name, i) {
var objectName = name + i + '.obj';
loader.load(name + i + '.mtl', function (materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath(path);
objLoader.load(objectName, function (object) {
scene.add(object);
}, function (xhr) {
onProgress(xhr, objectName)
}, onError);
});
}
汽车已加载,但纹理未加载。它看起来全白,并且控制台中没有错误。我试图添加
mtlLoader.setTexturePath(modelPath);
但它没有改变任何东西。
我也尝试添加
THREE.Loader.Handlers.add( /\.tga$/i, new THREE.TGALoader() );
在调用addCar
函数之前。当我这样做时,控制台中会出现一些警告,但纹理仍然没有出现。
在我看到的所有示例中,使用 OBJLoader 和 MTLLoader 时会自动加载纹理,但我没有使用带有 TGA 纹理的 OBJLoader 和 MTLLoader 的任何示例。所以我想知道是否有什么事情可以让它发挥作用。
任何帮助,将不胜感激。
PS:文件(.obj
和.mtl
).tga
是从 3D max 导出的)。