Unity 支持可能从许多 3D 建模应用程序导出的 FBX 文件。请遵循以下准则来确保获得最佳结果:
1.选择要在 3D 建模应用程序中导出的内容。 2.准备需要在 3D 建模应用程序中包含的内容。 3.在导出之前检查 FBX 设置。 4.验证并导入 FBX 文件到 Unity。
注意:除了以上关于从 3D 建模应用程序执行导出操作的一般准则之外,有些 3D 建模应用程序在以下部分还有更具体的信息:
对于想导出的内容:有些场景对象必不可少,而其他可能不必要。 应用程序通常允许导出选定对象或整个场景。 可以通过仅保留基本对象来优化 Unity 中的数据。
如果选择仅导出场景中的特定对象,则可以:
根据以下注意事项准备要导出的资源:
对象: | 准备: |
---|---|
网格 (Meshes) | 必须将所有 NURBS、NURMS、样条曲线、面片和细分曲面转换为多边形(三角形剖分或四边形剖分) |
动画 (Animation) | 选择正确的骨架。检查帧率。检查动画长度。 |
混合形状 (Blend Shapes) 或__变形 (Morphing)|确保分配了 BlendShape (Maya) 或变形目标 (Max)。正确设置导出网格。|
|纹理 (Textures)|确保您的纹理来自 Unity 项目,或者将它们复制到 Unity 项目中的名为 textures 的文件夹。注意:建议不要使用 Embed Media__ 选项在 FBX 文件中嵌入纹理。在使用纹理之前必须提取纹理,因此嵌入它们只会导致项目出现不必要的臃肿问题并减慢导入过程。 |
|
平滑 (Smoothing) | 验证所有平滑组和平滑网格设置。 重要信息:导入混合形状法线要求在 FBX 文件中具有平滑组。 |
检查 FBX 导出设置:
在将 FBX 文件导入到 Unity 之前:
1.验证导出的文件的大小。对文件大小执行完整性检查(例如 >10kb?)。
2.将 FBX 文件重新导入到新场景中,导回到用于生成该文件的 3D 建模软件中。检查并确保能正常工作。
要将文件导入 Unity,请遵循有关导入操作的说明,务必记住您在 3D 建模软件中的导出选项设置。
您可以使用 FBX 导出选项选择要在 FBX 文件中导出的内容。
从 Maya 导出 BlendShape(变形)时,请遵循以下准则:
将文件导入 Unity 之后,请在__项目__视图中选择该文件,然后在 Model Importer 的 Animations 选项卡中启用 Bake Animations。
如果使用 IK 在 Cinema 4D 中对角色进行动画化,必须在导出之前使用 Cinema 4D 中的 Plugins > Mocca > Cappucino 菜单烘焙 IK。 如果您在导入 Unity 之前未烘焙 IK,则只能获得动画定位器 (locator) 和动画骨骼。
为了加快文件导入 Unity 的速度,可在导出之前关闭 Cinema 4D 中的 Embed Textures 偏好设置。请查看 Cinema 4D 文档了解相关说明。
Autodesk 针对通常作为游戏资源导出的资源提供了一个 Game Exporter Utility。您还可以使用标准 FBX 导出实用程序选择要在 FBX 文件中导出的内容。
例如,默认的 FBX Exporter 选项(基本上导出所有内容)允许将纹理作为图像映射嵌入到文件中。虽然这会使文件非常易于移植,但也增加了文件大小。
此外,如果从 Maya 导出,在处理以下内容时还有一些额外的注意事项:
3dsMax 的可编辑网格总是导出三角形。可编辑的多边形在导入时保留四边形和 N 边形。因此,如果要将四边形导入 Unity,必须在 3ds Max 中使用可编辑多边形。
如果要在 3ds Max 中导出基于骨骼的动画,请遵循以下准则:
将具有网格和动画的骨骼层级视图从 3ds Max 导出到 Unity 时,生成的游戏对象层级视图对应于您可以在 3ds Max Schematic View 中看到的层级视图。但是,Unity 使用游戏对象作为新根(包含动画),并将网格和材质信息放在根骨骼中。
如果您希望将动画和网格信息保留在同一 Unity 游戏对象中,在导出之前,请在 3ds Max 中将网格节点父级指定为骨骼层级视图中的骨骼。
如果要在 3ds Max 中导出变形目标,请遵循以下准则:
Unity 具有内置的光照贴图功能 (lightmapper),但您也可以使用纹理烘焙(Rendering 菜单上的 Render To Texture)功能和 3ds Max 中的自动展开 (unwrapping) 功能来创建光照贴图。
通常情况下,一个 UV 集用于主纹理和/或法线贴图,另一个 UV 集用于光照贴图纹理。为确保两个 UV 集都正确,3ds Max 中的材质必须为标准材质,并且必须设置 Diffuse(用于主纹理)和 Self-Illumination(用于光照贴图)贴图字段:
注意:如果对象使用 Shell 类型的材质,Autodesk 的 FBX Exporter 不能正确导出 UV。
或者,您可以使用多维/子对象 (Multi/Sub Object) 材质类型,并使用漫射贴图字段中的主纹理 (main texture) 和光照贴图 (lightmap) 设置两个子材质,如下图所示。但是,如果模型中的面使用不同的子材质 ID,这种方法会导致导入多个材质,此情况对性能而言并非最佳选择。
通过从 LightWave Layout 中的 File 工具栏选择 Save > Export > Export FBX 即可访问 LightWave 中的 FBX 导出设置窗口:
随后将显示 Export FBX 窗口。
属性: | 功能: | |
---|---|---|
FBX Filename | 设置 FBX 文件的名称和位置。应使用 Unity Assets 文件夹下的位置。 |
|
Anim Layer | 要使用的动画层的名称。 | |
Type | 使用 Binary 来减小文件大小,或使用 ASCII 生成文本可编辑的 FBX 文件。 | |
FBX Version | 从列表中选择最新的 FBX 版本,确保其与 Unity 使用的版本匹配。 | |
Export | ||
Models | 导出场景中的所有模型 | |
Morphs (Blend Shapes) | 导出场景中的所有 BlendShape | |
Mesh type | ||
Cage (Subdivision Off) | 导出对象但不进行任何细分 | |
Subdivision | 导出网格时对其进行细分 | |
Re-parent bone hierarchy | 创建一个 null 充当骨骼层级视图的新父级。 从布局中导出骨架时,如果骨骼层级视图以网格为父级,变形网格的实际移动将是预期值的两倍。启用此新父级会使网格保持原样。 |
|
Materials | 转换 LightWave 的标准表面通道和图像映射。这不包括程序化纹理和节点。 | |
Embedded Textures | 将嵌入的纹理保存为直接包含在 FBX 文件中的图像映射,而不是保存到单独的图像目录。这会创建更大但更独立的 FBX 文件。 | |
Smoothing Groups | 将 LightWave 的法线转换为平滑组。 | |
Collapse Materials | 折叠具有相同材质名称的表面,分别导出材质。但是,如果材质名称和所有表面参数都匹配,则无论此设置如何,始终都会合并两个材质。 | |
Merge UVs | 将多个 UV 贴图折叠为每个对象的单个贴图。 | |
Unity 3D Mode | 纠正 LightWave、FBX 和 Unity 的坐标系之间的转换导致的旋转错误。 LightWave 和 Unity 均使用左手坐标系,但 FBX 使用右手坐标系。当 LightWave 导出到 FBX 时,它会沿 Z 轴转换为右手坐标。当 Unity 导入 FBX 文件时,它会沿 X 轴转换回左手坐标,从而使场景旋转 180 度。使用该设置意味着,当您进入 Unity 并向下观察 Z 轴时,导入的 FBX 看起来与在 LightWave 内部完全相同。 |
|
Cameras | 导出场景中的所有摄像机。 | |
Lights | 导出场景中的所有光照。 | |
Animations | 无需烘焙即可导出基于移动、旋转或缩放的简单动画。使用 IK 或动态的角色动画或其他动画仍应使用 Bake Motion Envelopes 进行烘焙。 | |
Bake Motion Envelopes | 当存在您不想捕获的设置帧时,设置烘焙的任意起始点和结束点。仅当选中 Animations 时才可用。 | |
Start Frame 和 End Frame | 仅导出此时间范围内的数据。 | |
Scale Scene | 为场景设置一个与 Unity File Scale 值匹配的缩放值。 |