如何导入 3D 场景(.obj 文件和 .mtl 文件)

Posted

技术标签:

【中文标题】如何导入 3D 场景(.obj 文件和 .mtl 文件)【英文标题】:How to import 3D scene (.obj file with .mtl file) 【发布时间】:2015-11-19 14:33:49 【问题描述】:

我买了一个房间的 3D 模型。该模型采用.obj 格式。现在,我正在尝试将此模型导入 Unity3D。

模型附带:

5 x .obj 文件 5 x .mtl 文件 n x .jpg 文件 n x .tga 文件

.mtl 文件包含我的 PC 上不存在的路径。所以我删除了路径。图像文件 (.jpg & .mtl) 与 .obj 文件位于同一目录中。当我尝试导入.obj 文件时,房间里没有任何材料。 然后我尝试使用 FBX 转换器(选中“嵌入媒体”)将.obj 转换为.fbx,但当我导入它时,3D 房间中没有任何材料(它是不可见的)。我还尝试将所有 .jpg.tga 文件导入 Unity 根 Assets 文件夹下的文件夹,然后导入 .obj.mtl 文件。

我做错了什么? Unity3D 是否使用.mtl 来确定在哪里可以找到所需的图像文件?是否有可能提供一些启示的导入日志?


更新 [2015 年 8 月 25 日]

    我编辑了所有 .mtl 文件并删除了路径,因此它只是图像文件名(即map_Ka Arch 53-wood 14.jpg)。

    我将所有 .jpg.tga 文件复制到同一目录中的 "Textures" 文件夹中。

    我使用 FBX 转换器将 .obj 文件转换为 .fbx

    .fbx 导入Unity3D。

它仍然会创建一个没有材质(不可见)的模型,但它在导入时自动创建的材质文件夹中的文件要少得多,并且这些文件映射到我在 Assets 文件夹下导入的图像——也许这是进步?不确定...

更新 [2015 年 8 月 25 日] #2

可能我的模型导入正确,但我没有设置正确?我导入的.fbx 模型下面有许多网格过滤器。每个网格过滤器的反照率确实映射到我在资产文件夹下导入的图像(见屏幕截图),但当我将根模型拖到场景中时它仍然是透明的——为什么?

更新 [2015 年 8 月 27 日]

我无法让 .obj / .mtl 组合工作。我能够让作者转换为 fbx,所以我试图让它也能正常工作(我在转换后的 fbx 文件时遇到了同样的问题)。我此时创建了一个新的 SO 问题 (Imported .fbx model Is Transparent)

【问题讨论】:

后来有进步吗?我现在面临同样的情况。任何帮助都会很棒! 我的模型在太空中遥遥无期......意味着在我缩小后我可以看到它......然后我将它拖回我所有其他对象所在的位置。跨度> 是的,最终我还将所有内容以及同一文件夹中的所有纹理图像都转换为 fbx,并且它工作正常。不过谢谢:> 【参考方案1】: 使用 fbx(将 obj 转换为 fbx,obj 不起作用) 将 fbx 作为资产导入 将纹理图像文件作为资产导入 (图片命名:modelname_Texture_0.jpg modelname_Texture_1.jpg等,fbx名称:modelname.fbx) 从收藏夹中选择型号 -> 所有型号 在材料下的检查器选项卡中 选择进口材料> 材质命名 选择型号名称+型号材质 素材搜索 选择本地材料的文件夹 点击申请 完成了

【讨论】:

【参考方案2】:

最简单(也是正确)的方法是不使用 .mtl 文件。只需引入纹理和模型,然后在 Unity 中创建材质。作为起点,最好使用标准着色器。然后只需将纹理拖动到材质上的正确属性即可。

如果网格中的 UV 不正确,上述方法可能不起作用,但它很有可能起作用。

你没有提到纹理的名称,但大概它们会与属性名称大致匹配。 例如,_d_ 可能是 Diffuse/Albedo

编辑:在上述不是选项的情况下(例如您的复杂对象),您可以通过在模型的导入设置中使用Import MaterialsMaterial NamingMaterial Search 选项获得成功。但是,这假设至少纹理引用与 .obj 一起使用,但情况可能并非如此。

【讨论】:

我尝试只导入 .obj 文件 --- 它在其下导入了许多对象以及一个包含许多对象的材料文件夹(见屏幕截图)。我不知道该把什么拖到哪里。 在上面进行了编辑,这可能会有所帮助。您提到您尝试了 FBX 转换器。您可以尝试将其放入搅拌机中,然后使用嵌入式媒体从那里导出。 嗯,是的,可能会将 obj 或 fbx 文件导入搅拌机。另请参阅“更新 [2015 年 8 月 25 日]”上方的我的更新 尝试将 obj 和 fbx 文件导入 Blender 中,但均无效 ---- 没有错误或消息 --- 没有实际发生 --- 所以不确定出了什么问题。

以上是关于如何导入 3D 场景(.obj 文件和 .mtl 文件)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 obj 和 mtl 文件导入到 three.js

如何通过SceneKit和Model I / O在.OBJ 3d模型上应用.MTL文件

Google sceneform 3D导入

vue3.x + threeJs 实现3d动画场景

我的OpenGL学习进阶之旅关于3D模型知识之:什么是obj文件和mtl文件

我的OpenGL学习进阶之旅关于3D模型知识之:什么是obj文件和mtl文件