Version: 2020.2
做好导出人形资源的准备
将模型导入 Unity 的限制

在其他应用程序中使用 FBX 文件

注意:本节提供有关使用 FBX 转换的专有文件格式的信息。但是,有两种文件格式不使用 FBX 作为中介格式:SketchUpSpeedTree。有关导入这些文件格式的更多信息,请参阅 SketchUp 设置SpeedTree 主题。

Unity 支持可能从许多 3D 建模应用程序导出的 FBX 文件。请遵循以下准则来确保获得最佳结果:

  1. 选择要在 3D 建模应用程序中导出的内容。
  2. 准备需要在 3D 建模应用程序中包含的内容。
  3. 在导出之前检查 FBX 设置
  4. 验证并导入 FBX 文件到 Unity。

除了以上关于从 3D 建模应用程序执行导出操作的一般准则之外,以下部分还提供了关于这些 3D 建模应用程序的更多具体信息:

Note: As of Unity 2019.3, Unity no longer provides built-in support for Cinema4D files. To continue using Cinema4D files in Unity for versions 2019.3 and later, install Maxon’s Cinema4D importer from the Asset Store. Alternatively, you can export an FBX file from Cinema4D instead.

选择要导出的内容

对于想导出的内容:有些场景对象必不可少,而其他可能不必要。 应用程序通常允许导出选定对象整个场景。 可以通过仅保留基本对象来优化 Unity 中的数据。

如果选择仅导出场景中的特定对象,则可以:

  • 仅导出选定对象(如果应用程序支持此功能)。
  • 从场景中删除不需要的数据并导出整个场景
  • 制作预设或自定义场景导出器以自动化或简化选择导出过程。

准备需要包含的内容

根据以下注意事项准备要导出的资源:

对象: 准备:
网格 (Meshes) 必须将所有 NURBS、NURMS、样条曲线、面片和细分曲面转换为多边形(三角形剖分或四边形剖分)
动画 (Animation) 选择正确的骨架。检查帧率。检查动画长度。
混合形状 (Blend Shapes) 或__变形 (Morphing)|确保分配了混合形状 (Blend Shapes) 或变形目标。正确设置导出网格。| |烘焙变形体 (Bake deformers)|在导出到 FBX 之前,请确保将变形体烘焙到模型上。例如,如果要从 Maya 导出复杂骨架,则可以在将模型导出到 FBX 之前将变形烘焙到蒙皮权重上。| |纹理 (Textures)|确保您的纹理来自 Unity 项目,或者将它们复制到 Unity 项目中的名为 textures 的文件夹。

注意:建议不要使用
Embed Media__ 选项在 FBX 文件中嵌入纹理。在使用纹理之前必须提取纹理,因此嵌入它们只会导致项目出现不必要的臃肿问题并减慢导入过程。
平滑 (Smoothing) 验证所有平滑组和平滑网格设置。

重要信息:导入混合形状法线要求在 FBX 文件中具有平滑组。

设置 FBX 导出选项

检查 FBX 导出设置:

  • 检查 3D 建模应用程序的导出对话框中的每项设置,以便了解与 Unity 中的 FBX 导入设置的匹配情况。
  • 根据需要选择是否导出动画 (Animation)、变形 (Deformations)、皮肤 (Skins)、变体 (Morphs)。
  • 节点、标记及其变换可以导出到 Unity。
  • 选择要导入 Unity 的任何摄像机 (Cameras)、光照 (Lights) 和可见性 (Visibility) 设置。
  • 尽可能使用最新版本的 FBX。Autodesk 会定期更新其 FBX 安装程序。
  • 确保在将文件导入 Unity 时使用的 FBX 版本与从 3D 建模应用程序中导出时使用的版本相同。使用不同版本的软件可能产生意想不到的结果。

验证并导入到 Unity

在将 FBX 文件导入 Unity 之前,请验证导出文件的大小。对文件大小执行完整性检查(例如,查看文件大小是否大于 10KB)。

将 FBX 文件重新导回到用于生成该文件的 3D 建模软件中(例如导入到新场景中)。检查并确保能正常工作。

要将文件导入 Unity,请遵循有关导入操作的说明,务必记住您在 3D 建模软件中的导出选项设置。

从 Autodesk® Maya® 导出

您可以使用 FBX 导出选项选择要在 FBX 文件中导出的内容。

导出混合形状(变形)

从 Maya 导出混合形状(变形)时,请遵循以下准则:

  • 将混合形状按顺序应用于导出网格及其目标。
  • 如果需要 Maya 动画关键帧,可在混合形状节点上对关键帧进行动画化。
  • 导出网格之前,在 Maya 中启用 Animation > Deformed Models > Blend Shapes FBX 导出选项。
  • 如果还想导出皮肤变形,则应在导出网格之前在 Maya 中启用 Animation > Deformed Models > Skins FBX 导出选项。

将文件导入 Unity 之后,请在__项目__视图中选择该文件,然后在 Model Importer 的 Animations 选项卡中启用 Bake Animations

导出复杂变形

可以在 Maya 中创建非常复杂的角色绑定。出于性能原因,Unity 支持每个顶点默认最多有四个影响的线性混合蒙皮。如果您的角色使用四种以上的影响,请在将模型导入 Unity 中时遵循以下说明:

  1. Import Settings 窗口的 Rig 选项卡中,选择 Skin Weights 下拉菜单中的 Custom。Skin Weights 下拉菜单中会出现两个新的属性。
  2. Max Bones/Vertex 属性中设置要用作影响的最大骨骼数。
  3. 还可以调整 Min Bone Weight 属性作为优化手段。这是 Unity 在计算影响力时用于确定是否应该包括骨骼位置的阈值。如果骨骼几乎没有影响,则可以通过不将该骨骼包含在计算中来节省一些资源。

如果选择坚持使用默认的最大值,并且您的网格具有四个以上的影响,则变形可能会出现扭曲。或者,如果使用的是聚类以外的变形,则变形可能完全不存在。

有关更多信息,请参阅 Autodesk 文档中的在角色上烘焙变形体 (Bake deformers on a character)

从 Autodesk® 3ds Max® 导出

您可以使用 FBX 导出选项选择要在 FBX 文件中导出的内容。

如果从 3ds Max 导出,在处理以下内容时还有一些额外的注意事项:

导出四边形

3ds Max 的可编辑网格总是导出三角形。可编辑的多边形在导入时保留四边形和 N 边形。因此,如果要将四边形导入 Unity,必须在 3ds Max 中使用可编辑多边形。

基于骨骼的动画

如果要在 3ds Max 中导出基于骨骼的动画,请遵循以下准则:

  • 设置骨骼结构和动画(使用正向动力学 (FK) 或 IK)后,选择所有骨骼和/或 IK 解算器。
  • 选择 Motion > Motion Paths > Collapse。Unity 会生成一个关键点过滤器,因此导出的关键点数量无意义。
  • 在 FBX Exporter 窗口上,单击 OK 按钮。
  • 将 FBX 文件复制到 Assets 文件夹中。
  • 打开 Unity 并将纹理重新分配给根骨骼中的材质。

将具有网格和动画的骨骼层级视图从 3ds Max 导出到 Unity 时,导出的游戏对象层级视图对应于您可以在 3ds Max Schematic View 中看到的层级视图。但是,Unity 使用游戏对象作为新根(包含动画),并将网格和材质信息放在根骨骼中。

如果您希望将动画和网格信息保留在同一 Unity 游戏对象中,在导出之前,请在 3ds Max 中将网格节点父级指定为骨骼层级视图中的骨骼。

变形目标(混合形状)

如果要在 3ds Max 中导出变形目标,请遵循以下准则:

  • 将变形体修改器 (Morpher Modifier) 应用于导出网格,并在通道列表 (Channel List) 中设置适当的变形目标。
  • 如果需要 3ds Max 动画关键帧,可在网格/修改器上对关键帧进行动画化。
  • 导出网格之前,在 3ds Max 中启用 Animation > Deformed Models > Blend Shapes FBX 导出选项。
  • 如果还想导出皮肤变形,则应在导出网格之前在 3ds Max 中启用 Animation > Deformed Models > Skins FBX 导出选项。

用于光照贴图的 UV 集

Unity 具有内置的光照贴图功能 (lightmapper),但您也可以使用纹理烘焙(Rendering 菜单上的 Render To Texture)功能和 3ds Max 中的自动展开 (unwrapping) 功能来创建光照贴图。

通常情况下,一个 UV 集用于主纹理和/或法线贴图,另一个 UV 集用于光照贴图纹理。为确保两个 UV 集都正确,请将 3ds Max 中的材质设置为标准材质,并设置 Diffuse(用于主纹理)和 Self-Illumination(用于光照贴图)贴图字段:

3ds Max 中的光照贴图的材质设置(使用自发光贴图)
3ds Max 中的光照贴图的材质设置(使用自发光贴图)

注意:如果对象使用 Shell 类型的材质,Autodesk 的 FBX Exporter 不能正确导出 UV

或者,您可以使用多维/子对象 (Multi/Sub Object) 材质类型,并使用漫射贴图字段中的主纹理 (main texture) 和光照贴图 (lightmap) 设置两个子材质,如下图所示。但是,如果模型中的面使用不同的子材质 ID,这种方法会导致导入多个材质,此情况对性能而言并非最佳选择。

3ds Max 中的光照贴图的另一种材质设置(使用多维/子对象材质)
3ds Max 中的光照贴图的另一种材质设置(使用多维/子对象材质)

从 LightWave 导出

通过从 LightWave Layout 中的 File 工具栏选择 Save > Export > Export FBX 即可访问 LightWave 中的 FBX 导出设置窗口:

访问 LightWave Layout 中的 FBX 导出选项
访问 LightWave Layout 中的 FBX 导出选项

随后将显示 Export FBX 窗口。

LightWave FBX 导出设置
LightWave FBX 导出设置
属性: 功能:
FBX Filename 设置 FBX 文件的名称和位置。应使用 Unity Assets 文件夹下的位置。
Anim Layer 要使用的动画层的名称。
Type 使用 Binary 来减小文件大小,或使用 ASCII 生成文本可编辑的 FBX 文件。
FBX Version 从列表中选择最新的 FBX 版本,确保其与 Unity 使用的版本匹配。
Export
Models 导出场景中的所有模型
Morphs (Blend Shapes) 导出场景中的所有混合形状
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 FrameEnd Frame 仅导出此时间范围内的数据。
Scale Scene 为场景设置一个与 Unity File Scale 值匹配的缩放值。
做好导出人形资源的准备
将模型导入 Unity 的限制