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.

Другие вопросы по тегам