如何导入 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 Materials
、Material Naming
和Material Search
选项获得成功。但是,这假设至少纹理引用与 .obj 一起使用,但情况可能并非如此。
【讨论】:
我尝试只导入 .obj 文件 --- 它在其下导入了许多对象以及一个包含许多对象的材料文件夹(见屏幕截图)。我不知道该把什么拖到哪里。 在上面进行了编辑,这可能会有所帮助。您提到您尝试了 FBX 转换器。您可以尝试将其放入搅拌机中,然后使用嵌入式媒体从那里导出。 嗯,是的,可能会将 obj 或 fbx 文件导入搅拌机。另请参阅“更新 [2015 年 8 月 25 日]”上方的我的更新 尝试将 obj 和 fbx 文件导入 Blender 中,但均无效 ---- 没有错误或消息 --- 没有实际发生 --- 所以不确定出了什么问题。以上是关于如何导入 3D 场景(.obj 文件和 .mtl 文件)的主要内容,如果未能解决你的问题,请参考以下文章
如何通过SceneKit和Model I / O在.OBJ 3d模型上应用.MTL文件