0

我有.mtl,.obj和多个纹理.jpg文件。我尝试在导出加载程序 obj 中使用不同的纹理。我能够使我的对象在场景中可见,但我的对象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' );
    }
  );
});     
4

1 回答 1

0

检查 .mtl 文件中的纹理路径。如果路径错误,您可以使用 3d 对象编辑器(例如 - Blender 或其他一些 3d 编辑器工具)。

Blender 使用 Blender Internal 渲染器作为活动渲染器导入带有纹理的 obj 文件。但目前不支持在 Cycles 是活动渲染器时导入带有纹理的 obj 文件。使用 Cycles,您必须使用纹理创建新材质因此首先要检查您在尝试导入网格时使用的渲染器。然后是文件格式本身。Obj 文件格式由两个文件组成,而不是一个。*.obj 文件包含网格数据。*.mtl 文件包含一种或多种简单的 phong 材质以及相关的纹理路径。好消息是 Obj 是一种超级简单的文本文件格式。您可以在文本编辑器中打开文件并根据需要对其进行编辑。当 *.mtl 文件是missig 时,Blender 就没有什么要导入的了。没有 mtl 文件意味着没有可用的材质和纹理。当。。。的时候 *。mtl 文件存在,但是文件中的纹理路径是绝对的,并且纹理在另一个位置,那么由于找不到纹理,因此对于 Blender 没有什么要导入的。所以首先要检查:*.mtl 文件是否存在?如果是这种情况并且纹理不导入: *.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。但是文件中的纹理路径是绝对的,并且纹理位于另一个位置,那么由于找不到纹理,因此对于 Blender 没有什么要导入的。所以首先要检查:*.mtl 文件是否存在?如果是这种情况并且纹理不导入: *.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。但是文件中的纹理路径是绝对的,并且纹理位于另一个位置,那么由于找不到纹理,因此对于 Blender 没有什么要导入的。所以首先要检查:*.mtl 文件是否存在?如果是这种情况并且纹理不导入: *.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。那么因为没有找到纹理,所以没有什么可以导入 Blender 的。所以首先要检查:*.mtl 文件是否存在?如果是这种情况并且纹理不导入: *.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。那么因为没有找到纹理,所以没有什么可以导入 Blender 的。所以首先要检查:*.mtl 文件是否存在?如果是这种情况并且纹理不导入: *.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。在这种情况下,纹理不导入:*.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。在这种情况下,纹理不导入:*.mtl 文件中的纹理路径是相对的还是绝对的?例如,在写字板中打开 *.mtl 文件。查看前面带有 map_kd 的行。例如,绝对路径为 map_Kd C:\UserX\myfolder\mytextures\mytexture.png 当您将其更改为 map_Kd mytexture.png 时,此路径将变为相对路径。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。png 然后这条路径就变成了相对的。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。png 然后这条路径就变成了相对的。当您将纹理放在 obj 文件之外时,通常会加载纹理 - 当 Blender Internal 是活动渲染器时。如前所述,目前不支持 Cycles。

如何在搅拌机中导出带有纹理的 .obj 格式文件?

于 2018-03-01T06:39:28.763 回答