Blender是一款免费且开源的3D建模软件,它在游戏开发中的应用也越来越广泛。将游戏资源从Blender导入Unity 5中有3种方式。您可以将3D模型以.obj和.fbx格式从Blender导出,然后将它们导入到Unity。或者将整个Blender工程的.blend文件导入到Unity。本教程将分别介绍这三种方式,以及每种方式的优缺点。

在Blender中制作游戏资源

选择网格并重命名。切记要在Object与Data选项卡中均为网格命名。
 
 


选中网格后按N键打开右侧面板,顶部会出现Location, Rotation, 和Scale设置。
 


请确保在Blender中将网格设置为如下:
•        Location x,y,z = 0
•        Rotation x,y,z = 0
•        Scale x,y,z = 1

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


将资源从Blender中导出

选中网格后,依次点击File > Export > Wavefront (.obj)导出为.obj格式,或选择FBX(.fbx)导出为.fbx格式:
 


选择导出路径,并将其命名为与网格在Object和Data选项卡中相同的名字(以保持一致)。
 


现在,在左侧面板(默认设置)中更改一些Export OBJ /Export FBX设置:
 


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

导出为.obj格式时禁用Write Materials选项,Unity不支持编辑.mtl文件,所以不需要启用该选项。禁用Objects as OBJ Objects 并启用Objects as OBJ Groups,以便Unity保留网格命名,而非使用“default”。启用 Keep Vertex Order。

导出为.fbx格式时启用!EXPERIMENTAL! Apply Transform选项以避免物体发生不必要的旋转。注意,Blender对!EXPERIMENTAL! Apply Transform选项的描述为:“警告!实验性选项,已知风险包括中断armatures/animations。”用不包含Armatures 和Animations 的网格测试该选项,没有任何问题。

所有导出设置如下图所示:
 


如果要保存为.blend工程文件,则直接删掉Blender项目中所有多余的资源,仅保留材质资源及其绑定的纹理,然后保存工程即可。

将资源文件导入到Unity 5

将资源导入到Unity有以下几种方法:

1.        可以简单地拖拽.obj/.fbx文件到Unity编辑器Project视图的任意文件夹下。
 


2.        也可以在Project视图中单击鼠标右键,在弹出菜单中选择Import New Asset…选择.obj/.fbx文件并点击Import。
 


3.        或者直接点击菜单项Assets > Import New Assets… 导入资源。
 


资源导入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文件!

锐亚教育