three.js: MTLLoader не загружает текстуры tga
У меня есть экспорт некоторых .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, но я не использовал ни одного примера использования OBJLoader и MTLLoader с текстурами TGA. Поэтому мне интересно, есть ли что-то, что нужно сделать, чтобы это сработало.
Любая помощь будет оценена.
PS: файлы (.obj
, .mtl
а также .tga
) экспортируются из 3D max).
2 ответа
Вам придется использовать TGALoader для загрузки файлов.tga. Вы можете найти это здесь.
Посмотрите источник webgl_materials_texture_tga для примера.
Есть ли причина, по которой вы используете текстуру.tga вместо.png? В большинстве случаев они будут давать идентичные результаты, и.png, как правило, будет меньше и может быть изначально декодирован браузером, чтобы вы получили лучшую производительность.
Если количество файлов не очень велико: измените содержимое файла mtl, сделайте "tga" на "jpg", затем я использую Photoshop, чтобы превратить каждый файл "tga" в файл jpg.