Как несколько текстур из mtlLoader и objLoader, используя в three.js?

Я имею .mtl,.obj и несколько текстур .jpg файл. Я пытался использовать различные текстуры в экспорт загрузчика объекта. Я могу сделать мой объект видимым на сцене, но мой объект black цвет виден. Любая идея о том, что не так / отсутствует в моем коде?

var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath('models/LivingRoom/Sample/');
mtlLoader.load( 'small plant.mtl', function( materials ) {
  materials.preload();

  var objLoader = new THREE.OBJLoader();
  objLoader.setMaterials(materials);
  objLoader.setPath('models/LivingRoom/Sample/');
  objLoader.load( 'small plant.obj', function ( object ) {

      var geometry = object.children[ 0 ].geometry;
      var materials = [];
      var mat1=new THREE.MeshLambertMaterial( { map : THREE.ImageUtils.loadTexture('models/LivingRoom/Sample/Listik-2.jpg')});
      var mat2=new THREE.MeshLambertMaterial({ map : THREE.ImageUtils.loadTexture('models/LivingRoom/Sample/22_zemlya_oboi_1920x1080.jpg')});
      materials.push(mat1);
      materials.push(mat2);
      mesh = THREE.SceneUtils.createMultiMaterialObject(geometry,materials);
      mesh = THREE.SceneUtils.createMultiMaterialObject(geometry,threeDTexture);

      object.traverse(function (child) {
        if (child instanceof THREE.Mesh) {
          child.materials = materials;

        }
      });

    },
    function ( xhr ) {
      returnValue = ( xhr.loaded / xhr.total * 100 ) + '% loaded';
      console.log(returnValue);
    },
    function ( error ) {
      console.log( 'An error happened' );
    }
  );
});     

1 ответ

Проверьте путь к текстуре из вашего файла.mtl. Если путь указан неверно, вы можете использовать редактор 3D-объектов (например, Blender или другой инструмент 3D-редактора).

Blender импортирует файлы obj с текстурами, просто используя Blender Internal рендерер в качестве активного рендерера. Но импорт obj-файлов с текстурой, когда Cycles является активным средством визуализации, в настоящее время не поддерживается. С помощью Cycles вы должны создать новый материал с вашей текстурой. Итак, первая идея - проверить, какой рендерер вы используете, пытаясь импортировать сетку. Тогда был сам формат файла. Формат файла Obj состоит из двух файлов, а не одного. Файл *.obj содержит данные меша. Файл *.mtl содержит один или несколько простых фонговых материалов с соответствующими путями текстур. И хорошая новость в том, что Obj - это супер простой формат файла в текстовом виде. Вы можете открыть файлы в текстовом редакторе и редактировать их по своему усмотрению. Если файл *.mtl отсутствует, то для Blender нечего импортировать. Отсутствие mtl-файла означает отсутствие материала и текстуры. Если файл *.mtl существует, но пути к текстурам в нем являются абсолютными, а текстура находится в другом месте, то для Blender нечего импортировать, поскольку текстуры не найдены. Итак, первое, что нужно проверить: существует ли файл *.mtl? И если это так, а текстуры не импортируются: являются ли пути текстур в файле *.mtl относительными или абсолютными? Откройте файл *.mtl в WordPad, например. Посмотрите на строку (и) с map_kd впереди. Например, абсолютный путь будет map_Kd C:\UserX\myfolder\mytextures\mytexture.png Если вы измените его на map_Kd mytexture.png, то этот путь станет относительным. И когда вы помещаете свою текстуру помимо файла obj, тогда текстура обычно загружается - когда Blender Internal является активным средством визуализации. Как уже было сказано, Cycles на данный момент не поддерживается.

Как экспортировать файл формата.obj с текстурой в блендер?

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