2

我正在尝试加载一个具有多个 .jpg 作为纹理的 .obj。我的 .obj 正在渲染 - 但没有应用材料。

.mtl 看起来像

newmtl material_0
Ka 0.200000 0.200000 0.200000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000
map_Kd tex_0.jpg

我假设 .jpgs 的路径是正确的 - 如果我更改它,我会在控制台中看到 404 错误。

我的框架代码是:

 <a-scene>
    <a-assets>
           <a-asset-item id="moore-obj" src="obj/moore.obj"></a-asset-item>
           <a-asset-item id="moore-mtl" src="obj/moore.obj.mtl"></a-asset-item>
     </a-assets>
     <a-entity
          obj-model="obj: #moore-obj; mtl: #moore-mtl"
          scale="1 1 1"
          rotation="0 0 0"
          position="1 1 1"></a-entity>
 </a-scene>

3D 模型出现在场景中 - 但上面没有覆盖任何纹理。我在 localhost 上运行它,但没有看到任何 CORS 警告。

对象是http://www.thingiverse.com/thing:36415

4

1 回答 1

2

原来是那个特定的 OBJ 文件的问题。它使用三种材质,但没有为使用这些材质的子对象定义对象组,因此 Three.js 的 OBJLoader 没有正确关联材质。

usemtl您可以通过在 obj 文件中的每一行之前添加组行来解决它。

例如:

g g_0
usemtl material_0
...
g g_1
usemtl material_1

等等

于 2016-08-13T20:50:45.487 回答