У меня есть экспорт из .obj
файлов и соответствующих .mtl
файлов. Текстуры находятся в формате .tga
в той же папке.three.js: MTLLoader не загружает текстуры 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, но я не сделал ни одного примера, используя OBJLoader и MTLLoader с TGA текстуры. Поэтому мне интересно, есть ли что-то, чтобы сделать это сработало.
Любая помощь будет оценена по достоинству.
PS: файлы (.obj
, .mtl
и .tga
) экспортируются из 3D max).
Возможный дубликат [Модели импорта WebGL с использованием OBJMTLoader в трёх ошибках] (http://stackoverflow.com/questions/19401151/webgl-importing-models-using-the-objmtloader-in-three-js- сбой) –
MTLLoader использует класс TextureLoader для загрузки изображений, которые afaik не поддерживает изображения TGA (что также объясняет, почему существует определенный класс для загрузки изображений TGA) – 2pha