[Blender] 导出 OBJ / FBX 并导入Unity
综合文库 2695 6
实名

通过了实名认证的内容创造者

发布于 2017-7-14 14:45:17

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 胖纸_DHW 于 2021-1-6 11:16 编辑


QQ截圖20170712224155.png



第一步: 确保命名一致


61331596866647e67b.png




第二步:确保下列参数


确保

Location x,y,z = 0

Rotation x,y,z = 0

Scale x,y,z = 1





如果不是以上设置,可以选中网格后按下ALT+G 键重置网格位置。按CTRL+A键并选择Rotation & Scale来重置网格的旋转和缩放。








第三步:  导出命名


导出命名与物体内在命名保持一致







第四步:  OBJ导出配置





1. 启动 "仅导出选中的物体" (Selection Only)

        可以仅导出选中的单个或者多个网格,如果禁用此选项,则Blender文件中所有网格都会被导出为.obj


2. 禁用 "写入材质" (Write Materials)      

            Unity不支持编辑mtl文件   不需要启动这一项


3. 禁用 "作为OBJ对象的物体" (Objects as OBJ Objects)      

            以便Unity保留网格命名,而非使用“default”


4. 启用 "多物体转换为OBJ组" (Objects as OBJ Groups)

            以便Unity保留网格命名,而非使用“default”


5. 启用 "保持顶点顺序"  (Keep Vertex Order)




第四步:  FBX导出配置





1. 启动 "选定的物体" (Selected Objects)

        可以仅导出选中的单个或者多个网格,如果禁用此选项,则Blender文件中所有网格都会被导出为.fbx


2.  启用  "!EXPERIMENTAL! Apply Transform"

                避免物体发生不必要的旋转   不要理会警告





第五步:  导入Unity


资源导入Unity后,会出现一个.obj/.fbx文件和一个Materials文件夹。如果直接导入.blend工程文件,Unity会自动将其转换为.fbx文件:





Materials文件夹中包含导入的网格所使用的材质。无论此网格在Blender中是否使用了材质,在.obj文件导入Unity后,它都会自动创建一个名为“网格名字+Mat”的材质。




而不同于.obj文件,.fbx文件的网格可以使用多个材质,.fbx使用了与Blender中相同的材质名称和颜色数据。如果材质在Blender中使用了纹理,导入资源的材质也会使用相同的纹理!.blend工程文件与.fbx文件导入过程一致。


如果Blender中的资源使用了纹理,在导入.fbx文件时,只有先导入纹理,在导入资源到Unity后,纹理才可以自动应用到网格的材质上!






选中刚才导入的网格,可以在检视视图(Inspector)中查看此网格的设置,也可以直接保留所有默认设置。




如果需要为网格烘焙光照贴图,而该网格又没有比较好的UV(重叠的UV就不太好)可用于烘焙光照贴图时,可以启用Generate Lightmap UVs来生成光照贴图UV。如果存在UV2通道,Unity将使用UV2作为光照贴图的纹理坐标。否则将使用主UV。Unity可以展开网格来自动生成光照贴图UV。只需启用Generate Lightmap UVs 选项即可。本例使用的立方体网格,带有为光照贴图烘焙准备的UV2,所以不需要启用Generate Lightmap UVs。




现在将资源拖拽到层级视图(添加到场景)中。




可以看到.obj资源是一个带有Transform组件的父游戏对象。







并且这个父游戏对象有一个子游戏对象,即网格本身,它带有Transform、Mesh、Mesh Renderer和Material组件 。






而.fbx与.blend资源则没有关联网格的子对象。


如果想要对导入资源进行缩放、移动或旋转,.obj资源可以选择父对象并更改其Transform设置(或者使用变换工具)。而.fbx与.blend资源直接操作其自身的Transform设置即可。


注意,.blend资源Transform组件中Rotation的X值默认为-90。因为.blend转换为.fbx的操作是Unity在后台完成的,所以它与在Blender中使用默认导出设置导出的.fbx文件相同。可以为.blend资源添加一个父对象,然后操作父对象的Transform来解决旋转问题。




强烈建议保留子游戏对象(Mesh本身)的默认Transform设置!这对于在Unity中使用脚本或动画来动态改变网格的缩放、位置和旋转非常有用。


为导入的网格资源应用纹理


选择子对象并打开该对象上的材质设置。可以在此改变资源材质的设置,如更改颜色、添加纹理贴图等。






也可以在项目视图(Project)中通过点击资源上的材质,来定位到材质设置。








如果想为资源添加纹理,在项目视图中选择纹理,并将纹理拖拽到材质的纹理栏位即可。比如将Albedo颜色纹理拖拽到Albedo栏位:








也可以通过点击Albedo栏位旁边的小圆圈来选择纹理贴图并添加纹理:






各类文件格式的优缺点:









总结:


  • 如果想导出绑定了材质但不含动画的3D模型,可以选择.obj格式,它既比.fbx占用空间小,又附带父子游戏对象。但关联了材质和纹理时,最快最好的方法就是导出为.fbx文件(取决于实际项目工作流)。
  • 如果想导出带有多个材质或者带有动画的模型,请使用.fbx文件!
  • 如果想快速修改并测试Mesh,请使用.blend文件。不要在最终产品或游戏上使用.blend文件!


感谢Unity官方翻译组成员“fws94”对本文的贡献(如何加入翻译组

转载请注明:来自Unity官方中文社区(forum.china.unity3d.com)






第一个问题:

blender建模后,导入unity3d后,如果在unity3d添加texture,假设是草地,发现表面出现的是纯绿色,而不是斑驳的草地。

解决方法:

在blender建模后,进入Edit Mode, 按键盘a,全选,在Mesh Tools的UV mapping中选取Unwrap,保存后,重新导入unity3d后问题解决。



第二个问题:

blender建模后,导入unity3d后,在平行光下,物体表面有阴影。

解决方法:

在unity3d的project视图中,点击从blender导入的asset,在Inspector的Import Settings中的Normals & Tangents的Normals选择Calculate, Smoothing Angle选择为0,然后apply即可。



第三个问题:

blender建模后(特别是用python脚本建立的模型),导入unity3d,发现物体少了很多面,旋转180度,发现消失的面的反面又出现了。(在unity中,从一个方向如果能看到的话,从另一个方向看则是透明的)

解决方法:

在blender建模后,进入Edit Mode,按键盘a,全选,在Mesh菜单上选择Normals的Recalculate Outside即可。


第四个问题:

blender建模后,导入unity3d,用raycast函数时,blender建的模好像是透明的,被穿过去了。

解决方法:

在unity3d的project视图中,点击从blender导入的asset,在Inspector的Import Settings中的Meshes的Generate Colliders打钩,然后apply即可。












024756oy53dbvmc3bv541c_2.gif
8426559686704df3c7.png
962525968672333b9a.png
1616596867bb858fd.png

评分

参与人数 1元素币 +15 活跃度 +15 展开 理由
Marie + 15 + 15

查看全部评分

本帖被以下画板推荐:

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
星爷万岁  发表于 2017-7-14 14:51:15  
2#
不错的教程
回复 收起回复
使用道具
冬鸦  发表于 2017-9-21 22:36:55  
3#
好资源,谢谢
回复 收起回复
使用道具
Lion.Ray  发表于 2017-12-4 10:01:20  
4#
正需要,好贴帮顶
回复 收起回复
使用道具
幻语  发表于 2017-12-11 20:27:36  
5#
66666
回复 收起回复
使用道具
fozh  发表于 2018-5-20 07:45:13  
6#
不錯的分享
回复 收起回复
使用道具
yhr28  发表于 2019-5-10 20:52:10  
7#
谢谢分享啊!!!!!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表