我正在尝试加载一个.obj,它有几个.jpgs作为纹理。我的.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错误。
我的aframe代码是:
<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警告。
答案 0 :(得分:2)
原来是该特定OBJ文件的问题。它使用三种材质,但没有为使用每种材质的子对象定义对象组,因此Three.js的OBJLoader不能正确关联材质。
您可以通过在obj文件中的每个usemtl
行之前添加分组行来解决此问题。
例如:
g g_0
usemtl material_0
...
g g_1
usemtl material_1
等