2016-08-08 2 views
0

У меня есть экспорт из .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 функцию. Когда я это делаю, на консоли появляется предупреждение, но текстура все еще не отображается. enter image description here

Во всех примерах, которые я видел, текстуры загружаются автоматически при использовании OBJLoader и MTLLoader, но я не сделал ни одного примера, используя OBJLoader и MTLLoader с TGA текстуры. Поэтому мне интересно, есть ли что-то, чтобы сделать это сработало.

Любая помощь будет оценена по достоинству.

PS: файлы (.obj, .mtl и .tga) экспортируются из 3D max).

+0

Возможный дубликат [Модели импорта WebGL с использованием OBJMTLoader в трёх ошибках] (http://stackoverflow.com/questions/19401151/webgl-importing-models-using-the-objmtloader-in-three-js- сбой) –

+0

MTLLoader использует класс TextureLoader для загрузки изображений, которые afaik не поддерживает изображения TGA (что также объясняет, почему существует определенный класс для загрузки изображений TGA) – 2pha

ответ

-1

Если количество файлов не очень велико: измените содержимое файла mtl, сделайте 'tga' в 'jpg', затем я использую Photoshop, чтобы каждый файл tga был загружен в файл jpg.

0

Вам нужно будет использовать TGALoader для загрузки файлов .tga. Вы можете найти его here.

См. Источник webgl_materials_texture_tga для примера.

Есть ли причина, по которой вы используете текстуру .tga вместо .png? Для большинства целей они будут давать одинаковые результаты, а .png обычно будет меньше и может быть декодирован браузером, поэтому вы получите лучшую производительность.

Смежные вопросы