unity3d导入导出教程之网格fbx模型文件
在Unity3D中,游戏资源的导入导出教程内容丰富。本文主要聚焦于网格FBX模型文件的导入导出,为有需要的开发者提供详细指引。
一、3D模型基础与准备
所有3D游戏的核心都是网格,它是由三角面片组成且附有贴图的物体。以下是将3D模型导入Unity3D的基本步骤:
- 模型制作:使用3D建模软件,如3D Max、Maya等制作模型。
- 模型保存:将制作好的模型保存在“Assets”(资源)文件夹下。
- 放入场景:把模型放入Unity的场景中。
- 属性调整:Unity中由渲染器(renderer)组件负责渲染网格。渲染器组件有多种变种,其中网格渲染器是最常用的。完成模型放置后,需调整相关属性参数。
二、FBX文件导出
(一)3D MAX导出FBX文件
在3D MAX中,点击“File”(文件) -> “Export”(导出),将模型文件导出为FBX文件,并保存到创建文件夹中的“Assets”(资源)文件夹下。在弹出的“FBX Export”面板中,包含了模型动画、骨骼工具、材质等一系列导出设置。若模型中未添加这些内容,需将不必要的复选框勾选掉。
(二)Unity3D导出带动画资源的两种方式
1. 导出单个文件
导出资源时,只导出一个文件,保留模型、骨骼和所有的动作帧(把所有动作,如idle、attack、hit等全部做成一个长动画)。导出后放入Unity3D,在“Project”窗口中选中FBX文件,在“Inspector”窗口中找到“Split Animations”选项,拆分整个长动作为数个子动作。
- 优点:操作简单,美术人员操作时不易出错。
- 缺点:灵活性差,单个资源文件过大,更新、修改和加载都存在问题。
2. 导出多个文件
导出的资源分成模型和多个动作文件。一个FBX文件为模型,其他为动作文件。导出模型时,删除所有动画(包括T - POS),然后导出成一个FBX文件,此为模型资源。接着,针对相同的max资源,删除其中的模型,保留骨骼和某一段动作(如idle的30帧),删除其他动作帧,再导出成一个FBX文件,此为该骨骼的一个动作。
- 优点:组合方式灵活,单个资源文件小,加载、更新和修改的代价小。
- 缺点:导出操作复杂,美术人员操作时容易出错。
(三)导出设置
- Bake Animation:勾选该选项。
- Curve Filters:勾选该选项。
- Constant Key Reducer:勾选该选项,在真人动作捕捉时,勾选后的优化效果尤为明显。
- Cameras:不勾选该选项。
- Light:不勾选该选项。
- Embed Media:若要导出贴图和材质,需勾选该选项。
(四)3ds Max资源导出注意事项
确认系统的使用单位,选择“Customize > Units Setup > Metric > Meters”,按下“OK”键确认。Unity能识别大多数3D软件的专属格式并进行转换,也可直接将3ds Max(max档案)或Maya(ma或mb档案)制作好的模型存储到“Assets”目录中,Unity会自动将模型转换成FBX格式。需要注意的是,Unity无法导入灯光,可使用光照贴图实现相关效果。
三、纹理查找
Unity会依据以下方案尝试自动导入与网格相关的贴图:首先,贴图导入器会在与网格同级或上级文件夹下的“Textures”子文件夹中查找贴图。若查找失败,导入器将对项目中所有的贴图进行穷举搜索。但穷举搜索速度较慢,且当存在两个或多个同名贴图时,无法保证能找到正确的贴图。因此,建议将纹理放到与资源文件同级或上级的“Textures”文件夹中。
四、网格属性设置
当网格被选中时,其导入设置会显示在检视面板中,主要属性设置如下:
(一)通用属性
- Scale Factor(缩放系数):Unity的物理系统默认游戏世界中的1米为导入文件中的1单位。调整此参数可塑造不同比例的模型。
- Use File Units(使用文件单位):此选项仅适用于3ds Max文件。启用该选项时,以1Max单位 = 1Unity单位导入3DS MAX文件;否则,以1厘米 = 1Unity单位导入。
- Mesh Compression(网格压缩):提高该值会减小网格的文件大小,但可能导致模型走样变形。应在与未经压缩网格版本差异不大的前提下,尽量将其设置得高一些,这对优化游戏大小有帮助。
- Mesh Optimization(网格优化):该选项决定了三角形在网格中的排列顺序。
- Generate Colliders(产生碰撞体):启用该选项后,网格导入时会自动生成其网格碰撞体。这对快速生成环境几何体的碰撞网格很有用,但应避免用于要移动的几何体。
- Swap UVs(交换UV):当有光照贴图的物体的UV通道不正确时,启用此选项可交换主UV通道与次UV通道。
- Generate Lightmap UVs(产生光照贴图UV):启用此选项会为光照贴图创建第二个UV通道。
- Advanced Options(高级选项):可参考Unity文档中的“Lightmapping UVs document”。
(二)法线和切线相关属性
- Normals(法线):决定是否使用法线及如何计算法线,对优化游戏大小有帮助。
- Import(导入):从文件导入法线。
- Calculate(计算):根据平滑角度(Smoothing angle)计算法线。选中此选项时,需启用平滑角度。
- None(不使用):禁用法线。若网格既没有法线贴图,也不受实时光照影响,可使用此选项。
- Tangents(切线):决定是否使用切线和副法线及如何计算,对优化游戏大小有帮助。
- Import(导入):从文件导入切线和副法线。此选项仅适用于FBX、Maya和3DS MAX文件,且只有当法线从文件中导入时可用。
- Calculate(计算):默认选项,计算切线和副法线。只有当法线为导入或计算时,此选项可用。
- None(不使用):禁用切线和副法线。若网格没有切线,则不能使用法线贴图着色器。
- Smoothing Angle(平滑角):设置边被作为硬边处理的锋利程度,还用于切分法线贴图切线。
- Split Tangents(分离切线):若网格上的接缝破坏了法线贴图光照,启用此选项,通常适用于角色模型。
(三)材质相关属性
- Import Materials(导入材质):若不想让Unity自动生成材质,可禁用此选项。禁用后,所有材质都为默认的漫反射材质。
- Material Naming(材质命名):此选项决定了Unity材质的命名方式。
- Material Search(材质搜索):决定Unity根据材质命名选项中定义的名字查找已有材质的方式。
- Local(本地):Unity只会在本地的“Materials”文件夹中查找已有材质,即与模型文件在同一文件夹下的“Materials”子文件夹。
- Recursive - Up(向上递归):Unity会在所有父文件夹中的“Materials”子文件夹中查找已有材质。
- Everywhere(所有地方):Unity会在所有项目文件夹下查找已有材质。