【问题标题】:My .obj model is white even though I attached an .mtl file to it我的 .obj 模型是白色的,即使我附加了一个 .mtl 文件到它
【发布时间】:2015-08-20 21:43:15
【问题描述】:

我正在处理three.js,我正在尝试导入一个带有相应mtl 文件的.obj 文件。 mtl 文件引用的纹理是 .bmp,所以我调整了 mtl 文件以指向所有 .dds 文件并将我的所有资产转换为 dds。问题是它只是渲染白色纹理。我不确定它是否相关,但它说不支持 PVRTC 压缩纹理。 这是我用于 obj/mtl 加载器的代码:

var onProgress = function(xhr) {
  if (xhr.lengthComputable) {
    var percentComplete = xhr.loaded / xhr.total * 100;
    console.log(Math.round(percentComplete, 2) + '% downloaded');
  }
};
var onError = function(xhr) {};
THREE.Loader.Handlers.add(/\.dds$/i, new THREE.DDSLoader());
var loader = new THREE.OBJMTLLoader();
loader.load('assets/FirstPersonExampleMap.obj', 'assets/FirstPersonExampleMap.mtl', function(object) {
  object.position.y = 0;
  scene.add(object);
}, onProgress, onError);

这是我调整的 .mtl 文件的示例:

newmtl assets/M_WhiteEditQuarter_M_WhiteEditQuarter
	map_Kd M_WhiteEditQuarter_M_WhiteEditQuarter_D.dds
	map_Ks M_WhiteEditQuarter_M_WhiteEditQuarter_S.dds
	bump M_WhiteEditQuarter_M_WhiteEditQuarter_N.dds

【问题讨论】:

  • 当我的文件是 bmp 时,它也呈现为白色......在我调整 mtl 文件(assets/M_WhiteEdit... 部分)之前的某个时刻,它呈现黑色
  • 你的纹理在资产中吗?
  • 是的,纹理在 assets 目录中。我拥有所有代码的资产和 JS 文件夹都是根目录(但彼此分开)。

标签: three.js .obj dds-format


【解决方案1】:

.mtl 目录中对纹理的引用应该与 html 文件所在的位置有关。所以 .mtl 应该是这样的:

newmtl M_WhiteEditQuarter_M_WhiteEditQuarter
    map_Kd assets/M_WhiteEditQuarter_M_WhiteEditQuarter_D.dds
    map_Ks assets/M_WhiteEditQuarter_M_WhiteEditQuarter_S.dds
    bump assets/M_WhiteEditQuarter_M_WhiteEditQuarter_N.dds

newmtl 只是一个名称,因此它不必以assets 为前缀。其余的是纹理的实际路径。

更新 1

一般 cmets:你的模型很大。那是一回事。另一个是您使用了很多 1x1 纹理。为什么?他们造成了很多延误。第三个问题是你的纹理也很大。对于您的漫反射纹理可以吗?但是您的法线贴图没有这样的细节来保证它们占用的空间。

回到问题

查看您的 bmp 版本;您的 .obj 和 .mtl 文件需要修复。正如我所说,newmtl 只是一个名称,所以它不必是路径前缀。但是您的 .obj 和 .mtl 文件之间存在不一致。在一个文件中newmtl 是路径前缀,而在另一个文件中则不是。因此,当 .obj 加载时,它永远不会找到材料。所以一旦我修复了纹理就会出现。

在一种情况下,mtl 定义FirstPersonExampleMap_FirstPersonExampleMap_PersistentLevel_SkySphereBlueprint_Sky Sphere mesh_MaterialInstanceDynamic_3 中有空格。我不确定这是否有效。

我用来查看更改的工具是http://www.finalmesh.com/

注意:你的世界似乎是一个很大的球体,而且你的教堂周围也有一些元素实际上是白色的。我不得不放大很多,直到我有材料可以展示。

http://imgur.com/JtQcT2u

http://imgur.com/UwfD0Rb

【讨论】:

  • 对不起,它没有用...它之前已经找到了文件。如果您想再看一下,我将我的代码推送到了 github:github.com/mgavaudan/gacVR
  • 你也可以推送bmp文件吗?
  • 没问题,我正在创建一个新分支,我尝试在其中加载 bmp 文件。它将在三分钟内完成
  • 两个分支都起来了(dds 和 bmp)并且都在渲染白色模型
  • 更新了我的答案,在查看您的 .obj 和 .mtl 文件后仍然正确。
猜你喜欢
  • 2019-07-30
  • 1970-01-01
  • 2017-07-17
  • 2021-03-08
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
相关资源
最近更新 更多