VR、AR与MR项目开发实战
上QQ阅读APP看书,第一时间看更新

2.3 模型文件准备

2.3.1 建模软件中模型的导出设置

Unity中使用到的模型资源可以从多种多样的3D建模软件中导入,其中包括Maya、Cinema4D、3ds Max、Cheetah3D、Modo、Lightwave、Blender、SketchUp等。可以导入Unity编辑器中的Mesh文件主要分成两大类:

  • 导出的3D文件,其格式如“.FBX”“.OBJ”。
  • 3D建模软件,例如3D Max的“.Max”文件、Blender的“.Blend”文件。

既然这两大类文件都能被Unity所使用,我们应该怎么取舍呢?下面来比较两类文件的优缺点。

(1)对于导出的3D文件,Unity能够读取“.FBX”“.3DS”“.OBJ”格式文件,优点如下:

  • 仅仅导出用户所需要的内容。
  • 用户可以反复地对内容进行修改。
  • 生成的文件比较小。
  • 支持模块化的处理方式。
  • 支持众多的3D建模软件,即使是不被Unity支持的3D建模软件。

其缺点如下:

  • 当用户使用这种导出的格式时,如果需要反复修改,就需要反复地从3D建模软件中导出,这会很烦琐。
  • 不容易做到版本控制,可能把导出文件和Unity中正在使用的文件弄混淆。

(2)对于3D建模软件的原生格式,例如Max、Maya、Blender、C4D等所产生的“.Max”“.Blender”“.MB”等格式,在Unity中的优点如下:

  • 当用户保存修改的文件之后,Unity会自动更新。
  • 比较容易被掌握。

其缺点如下:

  • 文件中可能包含一些用户不需要的内容,例如灯光、摄像机等。
  • 保存的文件会很大,使得Unity变得很慢。
  • 在电脑中必须安装所用到的原生格式的软件。

通过上面两类文件优缺点的比较,在这里使用第一种方式中的使用3ds Max导出“.FBX”文件进行讲解。首先了解什么是FBX格式。FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,用户能够通过FBX访问大多数三维供应商的三维文件。FBX文件格式支持所有主要的三维数据元素以及二维音频和视频媒体元素。FBX文件导入Unity编辑器中可以包含的内容有:

  • 所有的位置、旋转、缩放及轴心、名字等信息。
  • 网格信息,包括网格顶点的颜色、法线、UV等信息。
  • 材质球信息,包括贴图和颜色,也可以导入多维材质球。
  • 各种动画。

在了解这些基本信息之后,可以着手从3ds Max中导出“.FBX”文件,很简单,只需要以下几步。

步骤01 设置3ds Max的系统单位为cm,如图2-16所示。

步骤02 物体的坐标轴中心对齐世界坐标轴中心,如图2-17所示。选中物体,单击“Affect Pivot Only”(仅影响轴)按钮,再单击“Align to World”按钮对齐世界坐标。

图2-16 单位设置

图2-17 对齐世界坐标

步骤03 因为3ds Max中的坐标系与Unity编辑器中的坐标系不是同一种坐标系,所以需要在Max中对物体的轴进行旋转操作。选中物体,单击“Affect Pivot Only”按钮(见图2-17),再右击旋转按钮,在弹出的对话框的“X:”文本框中输入90,如图2-18所示。把X轴旋转90°,这样就能确保在Unity中物体的初始旋转角度为0。

图2-18 轴向旋转

步骤04 把模型转换为可编辑的多边形,如图2-19所示。

步骤05 选择需要导出的物体或者导出场景中的所有物体,导出格式选择“.FBX”格式,在导出的设置中按照需求进行设置,如图2-20所示,主要包含“包含” “高级选项” “信息”三方面内容。

图2-19 可编辑多边形

图2-20 FBX导出

在“包含”选项中,只要根据模型的实际情况进行选择即可。一般情况下,不需要使用Max中的摄影机与灯光,所以“摄影机”与“灯光”两个复选框可以取消勾选。需要强调的是,最好勾选“嵌入的媒体”复选框,确保贴图资源会一起导出,如图2-21所示。

在“高级选项”选项中,可以对FBX的单位、轴、界面、FBX文件格式进行设置。其中单位设置为默认的“厘米”,轴设置为与Unity轴向一致的“Y向上”,界面与文件格式保持默认即可,如图2-22所示。

图2-21 “包含”选项

图2-22 “高级选项”选项

最后一项“信息”保持默认即可。至此,Max中导出FBX模型流程完毕。接下来介绍在Unity中导入FBX模型并对导入进行设置。

2.3.2 Unity中模型的导入设置

在2.3.1小节中导出了一个FBX格式的模型。这一节学习将FBX文件导入Unity编辑器中并进行设置。

导入Unity编辑器的方法有两种,一种是直接将FBX文件拖曳到编辑器中的Project面板中;另一种是在编辑器中右击Project资源面板,在弹出的快捷菜单中单击“Import New Asset...”命令进行导入,如图2-23所示。

在FBX文件被导入后,选中该FBX文件中的模型,在Inspector面板中对模型进行设置与预览,如图2-24所示。若预览视图中的模型没有显示贴图资源,则可能是贴图资源没有被导入,可以单击图2-23中的“Refresh”命令进行刷新,这样贴图资源就会被导入。

图2-23 单击“Import New Asset...”命令

图2-24 导入设置

在Inspector面板中的导入设置分为三类:Model(模型)、Rig(动画类型绑定)、Animations(动画)。下面先从模型中的选项开始讲解。

  • Scale Factor(缩放因子):Unity中默认一米为游戏世界中的一个单位。
  • File Scale(文件缩放):设置模型的缩放,一般保持默认。
  • Mesh Compression(网格压缩):通过这个选项改变网格的面数,但是网格有可能出错,一般保持默认“OFF”选项。
  • Read/Write Enabled(模型读写开启):建议开启。
  • Optimize Mesh(优化网格):建议开启。
  • Import BlendShapes(导入表情控制器):例如用Maya制作的BlendShapes或者Max制作的Morpher动画表情。
  • Generate Colliders(生成碰撞):若勾选此复选框,则会在模型上自动加上“Mesh Collider”网格碰撞组件,建议关闭。
  • Keep Quads(保留四边形):建议关闭。
  • Swap UVs(交换UV):若灯光贴图识别的UV通道不正确,则可以勾选此复选框交换第一和第二通道UV。
  • Generate Lightmap UVs(生成灯光贴图的UV):建议关闭。
  • Normals(法线):法线的方式。
    • Import:到模型文件中导入,默认选项,建议使用。
    • Calculate:计算发现,配合Smoothing Angle计算。
    • None:禁用法线。
  • Tangents(切线):定义如何计算切线。
    • Import:从文件中导入,只有法线已从文件中导入时,此选项才能被启用。
    • Calculate:计算法线,默认选项。
    • None:关闭切线和法线,不再支持法线贴图着色器。
  • Import Materials:是否从文件导入材质球,一般保持勾选状态。
  • Material Naming:材质球的命名方式。
    • By Base Texture Name:使用导入的材质球中的漫反射贴图的名字命名,若没有漫反射贴图,则使用导入的材质球的名字命名。
    • From Model's Material:使用导入材质的名字做材质球的名字,建议使用。
    • Model Name+Model's Material:使用导入的模型名加导入的模型材质球名命名。
  • Material Search:查找材质球的方式。
    • Local Materials Folder:Unity仅在局部材质球文件夹中搜索,例如和模型文件夹在同一个文件夹下的材质球子文件夹。
    • Recursive-Up:递归向上搜索,Unity将递归向上搜索直至Assets文件夹,建议使用。
    • Everywhere:任意地方,Unity将搜索整个工程文件。

接着将介绍第二项“Rig”,如图2-25所示。Rig可以依据用户导入的物体指定或者创建一个“Avatar”控制器,从而对其制作动画。如果模型是一个人形的角色,那么可以选择“Humanoid”与“Create From This Model”选项,创建一个匹配骨骼的“Avatar”。若模型不是人形的角色,则选择“Generic”选项。

图2-25 “Rig”选项

  • Animation Type:动画类型。
    • None:没有动画。
    • Legacy:旧版的动画系统,使用“Animation”组件播放。
    • Generic:通用动画系统,使用“Animator”组件控制播放。
    • Humanoid:人形动画系统,使用“Animator”组件控制播放。

第三项为“Animations”动画选项,若FBX文件中没有动画,则为提示信息,如图2-26所示;若有动画,则为其设置选项,如图2-27所示。

图2-26 没有动画的提示信息

图2-27 有动画时的设置选项

  • Import Animation:导入动画。
  • Bake Animations:烘焙动画,这个选项只对Maya、3ds Max、Cinema4D文件有效。
  • Resample Curves:曲线重复采样,默认勾选。
  • Anim.Compression:动画压缩方式。
    • Off:关闭动画压缩,导入时不减少帧数,保留最高的精确度。但是降低了执行效率,文件和使用的内存将变大,不建议使用。若想获得较高的精度,则可以选择第二项“Keyframe Reduction”。
    • Keyframe Reduction:减少关键帧,建议使用。
    • Optimal:使用Rig。
  • Rotation Error:旋转角度误差,定义多少旋转曲线将会被降低,值越小,精度越高。建议使用默认值。
  • Position Error:位置误差,定义多少位置曲线将会被降低,值越小,精度越高。建议使用默认值。
  • Scale Error:缩放误差,定义多少缩放曲线将会被降低,值越小,精度越高。建议使用默认值。

我们可以使用“Animations”选项最下方的窗口进行动画预览,如图2-28所示,单击左上方的播放按钮进行预览。

图2-28 动画预览