当前位置: 首页 > news >正文

【Unity】模型

1 前言

        官方文档“Graphics→Models”学习。基本是复制粘贴,偶尔在哪加些注释。

        文档版本:Unity6

2 模型

        模型是包含有关 3D 对象(如角色、地形或环境对象)的形状和外观的数据的文件。模型文件可包含各种数据,包括网格、材质、纹理。对于动画角色,它们还会包含动画数据。我们通常在外部应用程序中创建模型,然后将它们导入到 Unity 中。

3 在Unity外部创建模型

3.1 模型文件格式

        Unity 支持多种标准和专有模型文件格式。Unity 内部使用 .fbx 文件格式作为其导入链。最佳做法尽可能使用 .fbx 文件格式,并且不应在生产中使用专有文件格式。

3.1.1 支持的模型文件格式

3.1.1.1标准文件格式

Unity 可读取以下标准 3D 文件格式:

  • .fbx

  • .dae (Collada)

  • .dxf

  • .obj.

这些文件格式得到广泛支持,它们通常也比专有类型的要小,这使得我们的项目规模更小,迭代速度更快。我们也可以将导出的 .fbx 或 .obj 文件重新导入所选择的 3D 建模软件,以此确保所有信息都已正确导出。

3.1.1.2 专有文件格式

        我们不应在生产中使用这些文件格式,应尽可能导出为 .fbx 文件格式。但是,有时我们可能需要将这些文件作为项目的一部分包含在内。

Unity 可以从以下 3D 建模软件中导入专有文件,然后将其转换为 .fbx 文件:

  • Autodesk Maya

  • Blender

  • Modo

  • Cheetah3D

以下应用程序不使用 .fbx 作为中间格式。Unity 必须先将其转换为 .fbx 文件之后再导入编辑器:

  • SketchUp

  • SpeedTree

  • Autodesk® 3ds Max®

3.1.2 不支持的模型文件格式

        Unity 不提供对 Cinema4D 文件的内置支持。要在 Unity 中使用 Cinema4D 文件,我们应该将它们从专有软件导出为 .fbx 文件。

        除非在计算机上安装了相应的 3D 建模软件,否则保存为 .ma、.mb、.max、.c4d 或 .blend 文件的资源将无法导入。这意味着,处理 Unity 项目的每个人都必须安装正确的软件。例如,如果我们使用 Autodesk Maya LT 许可证来创建 .mb 文件,并将其复制到我们的项目中,那么任何打开该项目的用户也需要在他们的计算机上安装 Autodesk Maya LT。(即这些专有文件格式的导入是有限制的)

3.2 支持专有模型文件格式

        Unity 支持多种专有模型文件格式。我们不应在生产中使用这些文件格式,应尽可能导出为 .fbx 文件格式。

        注意:本节提供了使用专有文件格式(通过 FBX 转换)的指南。但是,有两种文件格式不使用 FBX 作为中间格式:SketchUp 和 SpeedTree。

        Unity 导入专有文件时,会在后台启动 3D 建模软件。Unity 随后与该专有软件通信,将原生文件转换为 Unity 可读取的格式。

        首次将专有文件导入 Unity 时,3D 建模软件必须在命令行进程中启动。此过程可能需要一段时间,但后续导入操作非常快。

        注意:从 Unity 2019.3 开始,Unity 不再针对 Cinema4D 文件提供内置支持。要继续在 Unity 2019.3 和更高版本中使用 Cinema4D 文件,请安装 Maxon 的 Cinema4D 导入器。或者,也可改从 Cinema4D 导出 FBX 文件。

3.2.1 要求

        必须安装 3D 建模软件才能将专有文件直接导入 Unity。如果未安装该软件,请改用 FBX 格式。

3.2.2 应用程序特有的问题

        无论文件是通用文件还是特定文件,均以相同方式导入文件。但是,在具体支持哪些功能方面存在一些差异。有关特定 3D 应用程序的限制的更多信息,请如下内容:

  • 从 Autodesk® Maya® 导入对象

  • 从 Autodesk® 3ds Max® 导入对象

  • 从 Cheetah3D 导入对象

  • 从 Modo 导入对象

  • 从 LightWave 导入对象

  • 从 Blender 导入对象

3.2.3 从 Autodesk® Maya® 导入对象

Unity 通过 FBX 格式导入 Autodesk® Maya® 文件(.mb.ma),支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及顶点颜色、法线和最多 2 个 UV 集

  • 材质以及纹理和漫射颜色;每个网格多种材质

  • 动画

  • 关节

  • 混合形状

  • 光照和摄像机

  • 可见性

  • 自定义属性动画

限制

        Unity 不支持 Autodesk® Maya® 的旋转轴 (Rotate Axis)(旋转前)。

关节限制包括:

  • 关节方向 (Joint Orient)(仅限关节旋转后)

  • 分段缩放补偿 (Segment Scale Compensate)(仅限关节选项)

        Unity 可导入和支持 Autodesk® Maya® 中指定的任何旋转顺序 (Rotate Order);但是一旦导入,便无法在 Unity 中更改该顺序。

        如果导入的模型使用的旋转顺序不同于 Unity 中的旋转顺序,Unity 会在 Inspector 中的 Rotation 属性旁边显示该旋转顺序。

提示和故障排除

  • 保持场景轻量级:导出时仅导出 Unity 需要使用的对象。

  • Unity 仅支持多边形,因此在导出前应将所有面片或 NURBS 表面转换为多边形;请参阅 Autodesk® Maya® 文档了解相关说明。

  • 如果模型未正确导出,可能是 Autodesk® Maya® 中的节点历史记录导致的问题。在 Autodesk® Maya® 中,选择 Edit > Delete by Type > Non-Deformer History,然后重新导出模型。

  • Autodesk® Maya® FBX Exporter 会烘焙不支持的复杂动画约束,例如 Set Driven Keys(设置受驱动关键点),从而将动画正确导入 Unity。如果在 Autodesk® Maya® 中使用了 Set Driven Keys,确保在驱动者 (driver) 上设置关键点,以便正确烘焙动画。有关更多信息,请参阅 Autodesk® Maya® 提供的关键帧动画 (Keyframe Animation) 文档。

  • 在 Autodesk® Maya® 中,可见性值呈现在各个形状上,但不能添加动画,也不会导出为 FBX 文件。必须在节点上而不是在形状上设置可见性值。

3.2.4 从 Autodesk® 3ds Max® 导入对象

Unity 通过 FBX 格式导入 Autodesk® 3ds Max® 文件 (.max),支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及顶点颜色、法线和一个或多个 UV 集

  • 材质以及漫射纹理和颜色。每个网格多种材质

  • 动画

  • 基于骨骼的动画

  • 变形目标(混合形状)

  • 可见性

3.2.5 从 Cheetah3D 导入对象

Unity 通过 FBX 格式导入 Cheetah3D 文件 (.jas),支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及顶点、多边形、三角形、UV 和法线

  • 动画

  • 材质以及漫射颜色和纹理

3.2.6 从 Modo 导入对象

Unity 通过 FBX 格式导入 Modo 文件 (.lxo),支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及顶点、法线和 UV。

  • 材质以及纹理和漫射颜色;每个网格多种材质

  • 动画

        开始前,请将 .lxo 文件保存到项目的 Assets 文件夹。在 Unity 中,该文件显示在项目视图中。

        Unity 检测到 .lxo 文件变化后会重新导入资源。

3.2.7 从 Lightwave 导入对象

Unity 通过 FBX 格式导入 Lightwave 文件,支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及最多 2 个 UV 通道

  • Normals

  • 材质以及纹理和漫射颜色;每个网格多种材质

  • 动画

  • 基于骨骼的动画

还可以配置 Lightwave AppLink 插件,该插件会自动保存第一次将 Lightwave 场景文件导入 Unity 时使用的 FBX 导出设置。 有关更多信息,请参阅 Lightwave Unity 互换文档。

限制

        应将 Lightwave 特有的材质烘焙为纹理,以便 Unity 可以读取它们。有关使用非破坏性管线执行此操作的信息,请参阅 Lightwave 中的节点系统。

        Unity 不支持样条曲线和面片。必须将所有样条曲线和面片转换为多边形后才能保存和导出到 Unity。有关更多信息,请参阅 Lightwave 文档。

3.2.8 从 Blender 导入对象

Unity 通过 FBX 格式导入 Blender (.blend) 文件,支持以下内容:

  • 所有节点以及位置、旋转和缩放;轴心点和名称也会导入

  • 网格以及顶点、多边形、三角形、UV 和法线

  • 骨骼

  • 蒙皮网格

  • 动画

限制

        纹理和漫射颜色不会自动分配。将纹理拖动到 Unity Scene 视图中的网格上来手动分配它们。

        Blender 不会在 FBX 文件中导出动画内的可见性值。

3.3 做好导出模型文件的准备

3.3.1 缩放因子

        Unity 的物理系统和光照系统希望游戏世界中的 1 米在导入的模型文件中为 1 个单位。

不同 3D 包的默认值如下:

  • .fbx、.max、.jas = 0.01(米)

  • .3ds = 0.1(米)

  • .mb、.ma、.lxo、.dxf、.blend、.dae = 1(米)

将模型文件从具有不同缩放因子的 3D 建模应用程序导入 Unity 时,可以通过启用 Convert Units 选项将文件单位转换为使用 Unity 比例。

3.3.2 优化文件

        在将文件导入 Unity 之前,我们应该遵循一些步骤以确保以最佳方式优化文件。

        思考我们希望导出的内容:有些场景对象必不可少,而其他则可能不必要。因此我们可以通过仅保留基本对象来优化 Unity 中的数据。这有助于从场景中删除不需要的数据,还意味着我们可以使用预设或自定义场景导出器以自动化或简化选择导出过程。

3.3.2.1 准备需要包含的内容

        下表列出了为使每种资源类型在 Unity 中发挥最佳效果而应考虑的特殊注意事项:

Object准备
网格 (Meshes)必须将所有 NURBS、NURMS、样条曲线、面片和细分曲面转换为多边形(三角形剖分或四边形剖分)
烘焙变形体 (Bake deformers)在导出为 .fbx 文件格式之前,请确保将变形体烘焙到应用程序中的模型上。例如,如果要从 Maya 导出复杂骨架,则可以在将模型导出到 .fbx 之前将变形烘焙到蒙皮权重上。
纹理 (Textures)确保应用程序的纹理来自 Unity 项目,或者将它们复制到 Unity 项目中的名为 Textures 的文件夹。 注意:建议不要使用 Embed Media 选项在 .fbx 文件中嵌入纹理。由于 Unity 在使用纹理之前必须先进行提取,因此嵌入它们会导致项目臃肿并减慢导入过程。
平滑 (Smoothing)如果要导入混合形状法线,则 .fbx 文件中必须有平滑组。
3.3.2.2 设置 .fbx 导出选项

        在导出 .fbx 文件之前,请确保使用 3D 建模应用程序支持的最新版本的 .fbx 导出器。导出到 .fbx 时,记录 3D 建模应用程序的导出对话框中的每项设置,以便匹配 Unity 中的 .fbx 导入设置。大多数 .fbx 导出器允许我们启用或禁用某些动画、摄像机和灯光效果的导出,因此如果在导入 Unity 时发现缺少任何内容,请检查该内容是否已导出。

3.3.3 验证并导入到 Unity

        在将 .fbx 文件导入 Unity 之前,请验证导出文件的大小,对文件大小执行完整性检查(例如,查看文件大小是否大于 10KB)。将 .fbx 文件重新导回到用于生成该文件的 3D 建模软件中(例如导入到新场景中),检查并确保能正常工作。

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

3.4 创建最佳性能模型

        以下是一些创建最佳性能模型的技巧。这些技巧有些适用于所有模型,有些仅适用于动画模型。

        使用这些方法可能有助于提高模型的动画和渲染速度,但请注意,这些方法也可能会降低我们要竭力实现的视觉逼真度和逼真效果。对于每种情况,并没有一个唯一的答案可以在更好的性能和视觉真实感之间取得完美平衡。必须根据角色和场景的复杂性以及所需的整体外观和逼真度来找到最佳的平衡。

3.4.1 尽量减少多边形数量

我们应该使用的多边形数量取决于我们需要达到的视觉质量,以及我们的目标平台。然而,以下两个相互冲突的事实都正确:

  • 在网格中使用的多边形越少,应用程序运行的速度就越快。这是因为每个顶点、边或面都需要计算资源。

  • 在网格中使用的多边形越多,游戏对象的外观就越细致和自然,因为较小的多边形使我们可以在更大程度上控制形状。

此外,还需要考虑其他元素也会争夺渲染资源。如果同时在屏幕上有很多游戏对象或地形对象,请考虑减少每个网格的多边形数量。

        请注意,图形硬件必须处理的顶点的实际数量通常与建模应用程序报告的数量不同。建模应用程序通常显示组成模型的不同角点的数量(称为几何顶点计数)。然而,对于图形卡来说,为了渲染目的,一些几何顶点需要分割成两个或更多的逻辑顶点:例如,如果一个顶点有多个法线、UV坐标或顶点颜色,则必须分割它。因此,Unity中的顶点数通常高于3D应用程序给出的顶点数。

3.4.2 使用尽可能少的材质

        尽可能减少每个模型上的材质数量。只有在需要为角色的不同的部分使用不同着色器(例如,我们可能为角色的眼睛使用特殊着色器)时,我们才应该考虑使用多种材质。

3.4.3 使用单个带蒙皮的网格

        对于使用蒙皮网格渲染器(Skinned Mesh Renderer)的动画角色模型,我们应该每个角色只使用一个这些组件。Unity的动画系统使用可见性剔除和边界体积更新来优化动画。只有当我们在一个模型上使用一个动画组件和一个蒙皮网格渲染器时,它才会激活这些优化。

        如果使用两个带蒙皮的网格代替单个网格,模型的渲染时间大概会是单个网格的两倍,并且这样做很少能带来实际的意义。

3.4.4 使用尽可能少的骨骼

        一般来说,骨骼的数量越少,性能就越好。但有些时候,我们需要创建具有大量骨骼的角色模型:例如,在需要大量可自定义的附件时。这些额外骨骼会增加构建大小,并且每个额外的骨骼都可能带来相对处理成本。例如,在通用模式下,已拥有 30 个骨骼的绑定上增加 15 个骨骼会让 Unity 再花费 50% 的时间来解析,这可能会影响解析所花费的时间。

        请注意,对于通用和人形类型,我们可以额外添加骨骼。如果未播放使用额外骨骼的动画,则处理成本应该可以忽略不计。如果连接不存在或为隐藏状态,此成本甚至会更低。

        出于性能原因,请使用线性混合蒙皮,每个顶点最多有四个影响。然而,一些3D建模应用程序允许四个以上的骨骼影响顶点,因此我们必须权衡性能成本和更好的控制(模型)。

3.4.5 正向和反向动力学保持分离

        在导入动画时,Unity 会将模型的反向动力学 (IK) 节点烘焙为正向动力学 (FK),因此 Unity 根本不需要 IK 节点。但是,如果这些节点留在了模型中,那么即使不影响动画,Unity 也会计算它们。可以在 Unity 或 3D 建模应用程序中删除冗余的 IK 节点。为了方便删除 IK 节点,应在建模时保留单独的 IK 和 FK 层级视图。

3.4.6 创建动画模型

        本页面包含有关创建用于 Unity 动画系统的模型的指南。

有两种类型的模型可以与 Unity 的动画系统一起使用:

  • 人形 (Humanoid) 模型是一种非常特别的结构,包含至少 15 种骨骼,这些骨骼的组织方式与实际人体骨架大致相符。

  • 所有其他的通用模型。这可能是从茶壶到龙的任何东西。

两者都需要一个骨骼蒙皮模型。创建这样一个模型的阶段是:

  1. 建模 (Modeling):创建模型。该模型包含网格、纹理等。

  2. 骨骼绑定 (Rigging):创建骨架,也称为骨骼或关节层级结构。这定义了网格内的骨骼,以及它们相互之间的运动关系。

  3. 蒙皮 (skinning):将网格连接到骨架。这定义了给定关节进行动画化时,角色网格的哪个部分移动。

我们通常在 3D 建模软件(如 Autodesk® 3ds Max®、Autodesk® Maya® 或 Blender)中完成所有这些步骤,然后导出所得到的模型并将其导入到 Unity 中。

3.4.6.1 建模

为了确保模型在 Unity 项目中与动画顺利结合,可以遵循以下一些准则:

  • 使用结构良好的拓扑。通常,我们应该考虑模型的顶点和三角形在动画制作时如何扭曲。良好的拓扑结构允许模型在不扭曲网格的情况下移动。请研究现有的角色网格,了解拓扑的排列方式和原因。

  • 检查网格的比例。进行测试性导入,并将导入的模型的大小与“米立方体”(meter cube) 进行比较。标准 Unity 立方体图元的边长为一个单位,因此可在大多数用途中将其作为 1 米立方体。检查 3D 建模软件使用的单位并调整导出设置,使模型的大小与立方体成正比。

  • 在构建时,清理我们的模型。在可能的情况下,请盖住孔洞、焊接顶点并移除隐藏面。这有助于蒙皮,尤其是自动蒙皮过程。

  • 如果角色有脚,对网格进行排列,使角色站在模型的局部原点或“锚点”上。如果角色的锚点(即其变换位置)直接位于地板上,则行走会更容易处理。

  • 如果我们的角色是双足的,以 T 形姿势建模。这样可提供在必要位置(例如腋下)细化多边形细节的空间。此外也更容易将骨架放置在网格内。

3.4.6.2 骨骼绑定

        3D 建模软件提供了多种方法为骨架创建关节。

对于人形模型,对骨架有特定要求,以便 Unity 可以将其匹配到人形 Avatar:

  • 最少 15 块骨骼。骨架需至少具备所需的骨骼。

  • 为了提高与 Avatar 相匹配的机会,请确保骨骼的命名方式反映了其所代表的身体部位。例如,“LeftArm” 和 “RightForearm” 明确显示了这些骨骼的控制对象。

  • 关节/骨骼层级视图应遵循所创建的角色的自然结构。鉴于手臂和大腿成对出现,应使用一致的约定来命名它们(例如,左臂为 “arm_L”,右臂为 “arm_R”)。层级视图的可能结构包括:

    • HIPS - spine - chest - shoulders - arm - forearm - hand

    • HIPS - spine - chest - neck - head

    • HIPS - UpLeg - Leg - foot - toe - toe_end

        对于通用模型,唯一的要求是骨架包含一个骨骼,我们可以在导入模型时将其指定为 Root node(根节点)。这相当于定义了模型的质心。

3.4.6.3 蒙皮

        初始设置通常是自动的。蒙皮通常需要进行大量的工作和动画测试,以便确保皮肤变形取得令人满意的结果。

此过程的一些一般准则包括:

  • 最初使用自动化过程来设置某种蒙皮(请参阅 3D 建模软件提供的蒙皮教程)。

  • 为骨架创建简单的动画,或导入一些动画数据用于蒙皮测试。这样应该就能快速评估蒙皮是否在运动中看起来良好。

  • 逐步编辑和优化蒙皮解决方案。

  • 出于性能原因,在使用软性绑定时,请考虑将影响数限制为最多四个。这是 Unity 默认支持的最大数量。如果我们的网格使用四个以上的影响,则可以选择以下两个选项之一(这里是指几个骨骼来影响网格):

    • 使用“ Skin Weights”属性增加影响的最大数量。

    • 在从 Maya 导出模型之前使用 Bake Deformer 工具烘焙变形关节(使用 Maya 的顶部菜单:Skin > Bake Deformers to Skin Weights)。有关更多信息,请参阅 Autodesk 文档中的在角色上烘焙变形体 (Bake deformers on a character)。

3.4.6.4 导入并验证模型

        Unity 可导入许多不同的通用和原生 3D 文件格式,但建议的文件格式是 .fbx

当使用 .fbx 时,我们可以:

  • 导出网格以及骨架层级视图、法线、纹理和动画。

  • 将网格重新导入 3D 建模软件,从而验证动画模型是否符合预期。

  • 导出不含网格的动画。

4 将模型导入Unity

4.1 导入模型

        模型文件可以包含各种数据,如网格、动画绑定和动画剪辑、材质和纹理。我们的文件可能不包含所有这些元素,但我们遵循任何需要的部分工作流:

  1. 在 Project 视图中选择文件以查看 Import Settings 窗口

  2. 设置模型特有的选项或常规导入器选项

  3. 设置骨架和动画的导入选项(不适用于 SpeedTree 模型)

  4. 处理材质和纹理]

  5. 将文件拖入 Unity 中

有关如何从 3D 建模软件导出 Humanoid 动画的指南,请参阅3.4.6。

注意:Unity主要支持模型文件为FBX格式。但是,你可以将最常见的3D建模软件中的3D文件保存为其原生格式(例如,.max, .blend, .mb, .ma)。当Unity在你的Assets文件夹中找到这些文件类型时,它会调用你的3D建模软件的FBX导出插件,并导入该文件。3D建模软件必须安装在与Unity相同的计算机上,所以在大多数情况下,直接从应用程序导出FBX到资产文件夹是最佳实践。

4.1.1 访问 Import Settings 窗口

无论要从模型文件中提取哪种数据,始终以相同的方式开始:

  1. 打开 Project 窗口和 Inspector,确保能同时看到这两个界面。

  2. Project 窗口的 Asset 文件夹中选择要导入的模型文件。

    Inspector 中将打开 Import Settings 窗口,其中默认显示 Model 选项卡

4.1.2 设置模型特有的选项和常规导入器选项

        SpeedTree 模型(一种树模型)与其他模型可用的选项非常不同。有关更多信息,请参阅 SpeedTree Model tab。

角色和动画模型在其 Model 选项卡上提供了多种选项,允许您:

  • 使用 Scale FactorConvert Units 属性可调整 Unity 对单位的解释。例如,3ds Max 使用 1 个单位表示 10 厘米,而 Unity 使用 1 个单位表示 1 米。

  • 使用 Mesh CompressionRead/Write EnabledOptimize MeshKeep QuadsIndex FormatWeld Vertices 属性可减少资源并节省内存。

  • 如果模型文件来自 Maya 或 3ds Max,或者任何其他支持变形目标动画的 3D 建模应用程序,则可以启用 Import BlendShapes 选项。

  • 可为环境几何形状启用 Generate Colliders 选项。

  • 可启用特定的 FBX 设置,如 Import VisibilityImport CamerasImport Lights

  • 对于仅包含动画的模型文件,可启用 Preserve Hierarchy 选项以防止骨架层级视图不匹配。

  • 如果使用了光照贴图 (Lightmap),则可设置 Swap UVsGenerate Lightmap UVs

  • 可使用 NormalsNormals ModeTangentsSmoothing Angle 选项来控制 Unity 如何处理模型中的法线 (Normals) 和切线 (Tangents)。

4.1.3 设置骨架和动画的导入选项

        如果文件包含动画数据,可遵循使用 Rig 选项卡设置骨架并使用 Animation 选项卡提取或定义动画剪辑。人形和通用(非人形)动画类型的工作流程不同,因为 Unity 要求人形类型有非常具体的骨骼结构,但对于通用类型只需了解哪个骨骼是根节点:

  • 人形类型工作流程

  • 通用类型工作流程

注意:SpeedTree 模型不具有 RigAnimation 选项卡。

4.1.4 处理材质和纹理

如果文件包含材质或纹理,可定义它们的处理方式:

  1. 单击 Import Settings 窗口中的 Materials 选项卡。

  2. 从 Material Creation Mode 下拉菜单中,选择您要如何从 FBX 文件导入材质。除非选择了 None,否则 Materials 选项卡中会显示多个选项,包括 Location 选项, Location 选项的值决定了其他选项应该显示哪些。

  3. 选择 Use Embedded Materials 选项将材质保持在导入的资源中。

  4. 设置完这些选项后,请单击 Import Settings 窗口底部的 Apply 按钮来保存这些设置,也可单击 Revert 按钮取消设置。

4.1.4.1 查找纹理

        Unity 遵循特定的搜索计划在导入时自动查找纹理。首先,导入器在与网格相同的文件夹中或任何父文件夹中查找名为 Textures 的子文件夹。如果此过程失败,Unity 将对项目中的所有纹理执行穷尽搜索。虽然速度只是稍慢,但穷尽搜索的主要缺点是项目中可能有两个或多个同名的纹理。在这种情况下,不能保证 Unity 可以找到合适的纹理。

4.1.4.2 法线贴图

        如果一个角色具有从模型的复杂多边形版本生成的法线贴图,则应导入平滑角为 180 度的游戏质量版本。这样可以防止由于切线分裂而导致光照中出现看起来奇怪的接缝。如果使用这些设置后仍然存在接缝,请从Model选项卡的 Tangents下拉菜单中选择 Calculate Legacy With Split Tangents。如果是将灰度图像转换为法线贴图,则无需担心这一点。

4.1.5 将文件拖入 Unity 中

最后,可将文件导入场景中:

  • 如果文件中包含网格,请将文件拖入 Scene 视图以将其实例化为游戏对象预制件

  • 如果文件中包含动画剪辑,可将文件拖入 Animator 窗口以便在状态机中使用。也可以将动画连续片段直接拖动到 Scene 视图中的实例化预制件上。此操作将自动创建一个动画控制器 (Animation Controller) 并将动画连接到模型。

4.2 导入带有人形动画的模型

动画系统使用两种类型的模型:

  • 人形 (Humanoid) 模型是一种非常特别的结构,包含至少 15 种骨骼,这些骨骼的组织方式与实际人体骨架大致相符。本页面包含有关导入此类模型的指南。

  • 所有其他模型为通用模型。这可能是从茶壶到龙的任何东西。有关导入此类模型的更多信息,请参阅导入带有非人形(通用)动画的模型。

有关适用于所有类型模型的通用导入指南,请参阅导入模型。

4.2.1 概述

        当 Unity 导入包含人形骨架和动画的模型文件时,需要将模型的骨骼结构与其动画进行协调。为了实现这一点,系统会将文件中的每个骨骼映射到人形 Avatar,这样才能正确播放动画。因此,在将模型文件导入 Unity 之前,仔细准备该文件非常重要。

  1. 定义骨架类型并创建 Avatar。

  2. 纠正或验证 Avatar 的映射。

  3. 完成骨骼映射后,可选择单击 Muscles & Settings 选项卡来调整 Avatar 的肌肉配置。

  4. 可以选择将骨架骨骼到 Avatar 的映射保存为人体模板 (.ht) 文件。

  5. 可以选择通过定义 Avatar 遮罩来限制在某些骨骼上导入的动画。

  6. Animation 选项卡中,启用 Import Animation 选项,然后设置其他特定于资源的属性。

  7. 如果文件包含多个动画或动作,可将特定动作范围定义为动画剪辑。

  8. 对于文件中定义的每个动画剪辑,可以:

    • 更改姿势和根变换

    • 优化循环

    • 对人形骨架两侧的动画进行镜像 (Mirror)

    • 向剪辑添加曲线以便动画化其他项的时序

    • 向剪辑添加事件以便在动画期间触发某些动作

    • 丢弃动画的一部分(类似于使用运行时 Avatar 遮罩,但却是在导入时执行的)

    • 选择其他根运动节点来驱动动作

    • 阅读 Unity 提供的有关导入剪辑的任何消息

    • 观看动画剪辑的预览

  9. 要保存更改,请单击 Import Settings 窗口底部的 Apply 按钮,也可单击 Revert 放弃所做的更改。

4.2.2 设置Avatar

        从 Inspector 窗口的 Rig 选项卡中,将 Animation Type 设置为 Humanoid。默认情况下,Avatar Definition 属性设置为 Create From This Model。如果保持该选项,Unity 会尝试将文件中定义的一组骨骼映射到人形 Avatar。

        在某些情况下,可将此选项更改为 Copy From Other Avatar,从而使用事先为其他模型文件定义的 Avatar。例如,如果在 3D 建模应用程序中使用多个不同的动画来创建一个网格(皮肤),则可以将网格导出到一个 FBX 文件,并将每个动画导出到各自的 FBX 文件。将这些文件导入 Unity 时,只需为导入的第一个文件(通常是网格)创建一个 Avatar 即可。只要所有文件都使用相同的骨骼结构,便可以将该 Avatar 用于其余文件(例如,所有动画)。

        如果启用此选项,必须通过设置 Source 属性来指定要使用的 Avatar。

        你还可以通过"Skin weights"属性来更改可以影响给定顶点的骨骼的最大数量。默认情况下,该属性限制影响为四个骨骼,但你可以指定不同的值。

        单击 Apply 按钮时,Unity 会尝试将现有骨骼结构与 Avatar 骨骼结构相匹配。在许多情况下,它可以通过分析骨架中骨骼之间的连接情况来自动执行此操作。

        如果匹配成功,Configure 菜单旁会出现一个复选标记。Unity 还会将 Avatar 子资源添加到模型资源(可以在 Project 视图中找到该资源)。

        成功匹配只是意味着 Unity 能够匹配所有必需的骨骼。但是,为了获得更好的结果,还需要匹配可选骨骼,并将模型设置为正确的 T 形姿势 (T-pose)

        如果 Unity 无法创建 Avatar,Configure 按钮旁将显示一个叉号,且项目视图中不显示任何 Avatar 子资源。

        由于 Avatar 是动画系统极其重要的一个方面,因此为模型正确配置 Avatar 非常重要。

        出于这一原因,无论自动创建 Avatar 是否成功,都务必要检查 Avatar 是否有效并正确进行设置。

4.2.3 配置 Avatar

        如果需要检查 Unity 是否将模型的骨骼正确映射到 Avatar,或者 Unity 未能为模型创建 Avatar,可以单击 Rig 选项卡上的 Configure … 按钮,以便进入 Avatar 配置模式。

        如果 Unity 成功创建了 Avatar,则 Avatar 将显示为模型 Asset 的子资源。可以在 Project 窗口中选择 Avatar 资源,然后单击 Inspector 中的 “Configure Avatar” 按钮进入 Avatar 配置模式。在这种模式中,可以检查或调整 Unity 将模型的骨骼映射到 Avatar 布局的方式。

        进入 Avatar 配置模式后,Avatar 窗口出现在 Inspector 中,并且显示骨骼映射。

        确保骨骼映射正确,并为Unity未分配的任何可选骨骼进行映射。

        骨架必须至少具备所需的骨骼才能让 Unity 产生有效的匹配。为了提高与 Avatar 相匹配的机会,请确保骨骼的命名方式反映了其所代表的身体部位。例如,“LeftArm”和“RightForearm”明确显示了这些骨骼的控制对象。

4.2.3.1 映射策略

如果模型未产生有效匹配,可以使用与 Unity 内部过程类似的过程:

1、从 Avatar 窗口底部的 Mapping 菜单中选择 Clear 来重置 Unity 尝试进行的映射。

2、从 Avatar 窗口底部的 Pose 菜单中选择 Sample Bind-pose 来估算模型的初始建模姿势。

3、选择 Mapping > Automap 从初始姿势创建骨骼映射。

4、选择 Pose > Enforce T-Pose 将模型设置回所需的 T 形姿势。

        如果自动映射彻底失败或部分失败,可以通过从 Scene 视图或 Hierarchy 视图中拖动骨骼来手动分配骨骼。如果 Unity 认为骨骼适合,该骨骼会在 Avatar Mapping 选项卡中显示为绿色;否则显示为红色。

4.2.3.2 重置姿势

        T 形姿势是 Unity 动画所需的默认姿势,也是在 3D 建模应用程序中建模的推荐姿势。但是,如果没有使用 T 形姿势对角色进行建模并且动画无法按预期工作,则可以从 Pose 下拉菜单中选择 Reset

        如果骨骼分配正确,但角色未处于正确的姿势,将看到消息“Character not in T-Pose”。此时可从 Pose 菜单中选择 Enforce T-Pose 来修复该问题。如果姿势仍然不正确,可以手动将剩余的骨骼旋转为 T 形姿势。【所以reset和sample bind-pose的区别是啥】

4.2.4 创建 Avatar 遮罩

        通过遮罩功能可以丢弃剪辑中的一些动画数据,从而让剪辑仅动画化对象或角色的某些部分而不是整体。例如,可能有一个标准的行走动画,其中包括手臂和腿部运动,但如果一个角色用双手抱着大型物体,那么不会希望其手臂在行走时向侧面摆动。但是,仍然可以在角色抱着物体时使用标准行走动画,但需要使用遮罩在行走动画的上层仅播放抱着物体动画的上半身部分。

        可以在导入时或运行时将遮罩应用于动画剪辑。最好是在导入时应用遮罩,因为这样做允许从构建中忽略丢弃的动画数据,从而使文件更小,进而使用更少的内存。此外还可以提高处理速度,因为在运行时需要混合的动画数据更少。在某些情况下,导入遮罩可能对您不适用。这种情况下,可在运行时应用遮罩,为此需要创建 Avatar 遮罩 (Avatar Mask) 资源,并在 Animator Controller 的层设置中使用该资源。

要创建空的 Avatar 遮罩资源,可以:

  • Assets 菜单中选择 Create > Avatar Mask

  • 项目视图中单击要定义遮罩的模型对象,然后单击右键并选择 Create > Avatar Mask

新资源将显示在项目视图中:

现在可以将人体部位添加到遮罩,然后将遮罩添加到动画层或添加对遮罩的引用(在 Animation 选项卡的 Mask 部分)。

4.3 导入带有非人形(通用)动画的模型

动画系统使用两种类型的模型:

  • 人形 (Humanoid) 模型是一种非常特别的结构,包含至少 15 种骨骼,这些骨骼的组织方式与实际人体骨架大致相符。有关导入此类模型的更多信息,请参阅导入带有人形动画的模型。

  • 所有其他模型为通用模型。这可能是从茶壶到龙的任何东西。本页面包含有关导入此类模型的指南。

有关适用于所有类型模型的通用导入指南,请参阅导入模型。

4.3.1 概述

        当 Unity 导入通用模型时,您必须告诉它哪个骨骼是根节点。这相当于定义了模型的质心。

        由于只有一个骨骼要映射,通用设置不使用 Humanoid Avatar 窗口。因此,准备将非人形模型文件导入 Unity 时所需的步骤比人形模型所需的步骤要少。

  1. 设置 Rig 为 Generic

  2. 可以选择通过定义 Avatar 遮罩来限制在某些骨骼上导入的动画。

  3. Animation 选项卡中,启用 Import Animation 选项,然后设置其他特定于资源的属性。

  4. 如果文件包含多个动画或动作,可将特定帧范围定义为动画剪辑。

  5. 对于文件中定义的每个动画剪辑,可以:

    • 设置姿势和根变换

    • 优化循环

    • 向剪辑添加曲线以便动画化其他项的时序

    • 向剪辑添加事件以便在动画期间触发某些动作

    • 丢弃动画的一部分(类似于使用运行时 Avatar 遮罩,但却是在导入时执行的)

    • 选择其他根运动节点来驱动动作

    • 阅读 Unity 提供的有关导入剪辑的任何消息

    • 观看动画剪辑的预览

  6. 要保存更改,请单击 Import Settings 窗口底部的 Apply 按钮,也可单击 Revert 放弃所做的更改。

4.3.2 设置骨骼

        从 Inspector 窗口的 Rig 选项卡中,将 Avatar(动画)类型设置为 Generic。默认情况下,Avatar Definition 属性设置为 Create From This Model,而 Root node 选项设置为 None

        在某些情况下,可将 Avatar Definition 选项更改为 Copy From Other Avatar,从而使用事先为其他模型文件定义的 Avatar。例如,如果在 3D 建模应用程序中使用多个不同的动画来创建一个网格(皮肤),则可以将网格导出到一个 FBX 文件,并将每个动画导出到各自的 FBX 文件。将这些文件导入 Unity 时,只需为导入的第一个文件(通常是网格)创建一个 Avatar 即可。只要所有文件都使用相同的骨骼结构,便可以将该 Avatar 用于其余文件(例如,所有动画)

        如果保留 Create From This Model 选项,则必须从 Root node 属性中选择一种骨骼。

        如果将 Avatar Definition 选项更改为 Copy From Other Avatar,必须通过设置 Source 属性来指定要使用的 Avatar。

        还可以使用 Skin Weights 属性更改可以影响给定顶点的最大骨骼数量。默认情况下,此属性将影响限制为四个骨骼,但是您可以指定更多或更少。

        单击 Apply 按钮时,Unity 会创建通用 Avatar,并将 Avatar 子资源添加到模型资源(可以在 Project 视图中找到该资源)下。

注意:通用 Avatar 与人形 Avatar 不同,但它会显示在项目视图中,也会保存根节点映射。但是,如果单击项目视图中的 Avatar 图标在 Inspector 中显示其属性,则仅会显示其名称,不显示 Configure Avatar 按钮。

4.3.3 创建 Avatar 遮罩

        可以在导入时或运行时将遮罩应用于动画剪辑。最好是在导入时应用遮罩,因为这样做允许从构建中忽略丢弃的动画数据,从而使文件更小,进而使用更少的内存。此外还可以提高处理速度,因为在运行时需要混合的动画数据更少。在某些情况下,导入遮罩可能对您不适用。这种情况下,可在运行时应用遮罩,为此需要创建 Avatar 遮罩 (Avatar Mask) 资源,并在 Animator Controller 的层设置中使用该资源。

要创建空的 Avatar 遮罩资源,可以:

  • Assets 菜单中选择 Create > Avatar Mask

  • 项目视图中单击要定义遮罩的模型对象,然后单击右键并选择 Create > Avatar Mask

新资源将显示在项目视图中:

现在可以从 Transform 层级视图中选择要包含或排除的骨骼,然后将遮罩添加到动画层或添加对遮罩的引用(在 Animation 选项卡的 Mask 部分)。

4.4 Model Import Settings 窗口

        注意:这些设置用于导入在大多数 3D 建模应用程序中创建的模型和动画。但是,在 SketchUp 和 SpeedTree 中创建的模型会采用专用设置。有关更多信息,请参阅 SketchUp 设置和 SpeedTree Import Settings。

        将模型文件放在 Unity 项目下的 Assets 文件夹中时,Unity 会自动导入这些文件并将它们存储为 Unity 资源。要在 Inspector 窗口中查看导入设置,请在 Project 窗口中单击该文件。通过在此窗口的四个选项卡上设置相应属性可以自定义 Unity 导入所选文件的方式:

Model

        一个 3D 模型可表示角色、建筑物或家具。在这些情况下,Unity 从单个模型文件创建多个资源。在 Project 窗口中,主导入对象是模型预制件。通常,该模型预制件还会引用多个网格对象。

Rig

        一个骨架 (Rig)(有时称为 skeleton(骨骼框架))包含一组以层级视图排列的变形体 (deformer),这些变形体用于在 3D 建模应用程序(如 Autodesk® 3ds Max® 或 Autodesk® Maya®)所创建的一个或多个模型上动画化一个“网格”(有时称为皮肤)。对于人形 (Humanoid)*和通用 (Generic)(非人形)模型,Unity 会创建 Avatar 来使导入的骨架与 Unity 游戏对象 (GameObject) 协调。

Animation

        可以定义一组帧上发生的任何不同姿势(例如行走、奔跑甚至空闲状态(从一只脚移动到另一只脚))的序列作为动画剪辑。可以对任何具有相同骨架的模型重用剪辑。通常,单个文件包含多个不同的动作,可将每个动作定义为特定的动画剪辑

Material

        可以提取材质和纹理或将它们嵌入模型中。还可以调整材质在模型中的贴图方式。

4.4.1 Model选项卡

        选择模型时,模型文件的 Import Settings 显示在 Inspector 窗口的 Model 选项卡中。这些设置会影响模型中存储的各种元素和属性。Unity 使用这些设置导入每个资源,因此您可以调整任何设置以应用于项目中的不同资源。

本节提供有关 Model 选项卡中每个部分的信息:

(A) 场景 (Scene) 级别的属性,比如,是否导入光源和摄像机以及使用何种缩放因子。

(B) 特定于网格 (Meshes) 的属性。

(C) 几何体 (Geometry) 相关属性,用于处理拓扑、UV 和法线。

4.4.1.1 Scene
属性功能
Scale Factor当原始文件比例(来自模型文件)不符合项目中的预期比例时,请设置此值以应用导入的模型中的全局比例。Unity 的物理系统希望游戏世界中的 1 米在导入文件中为 1 个单位。
Convert Units启用此选项可将模型文件中定义的模型比例转换为 Unity 的比例。
Bake Axis Conversion如果启用此属性,当您导入使用与 Unity 不同的轴系统的模型时,可将轴转换的结果直接烘焙到应用程序的资源数据(例如,顶点或动画数据)中。如果禁用此属性,将在运行时补偿根游戏对象的 Transform 组件以模拟轴转换。
Import BlendShapes启用此属性可允许 Unity 随网格一起导入混合形状。请参阅下面的导入混合形状以了解详细信息。 注意:导入混合形状法线需要在 FBX 文件中具有平滑组。
Import Visibility导入 FBX 设置,这些设置定义了是否启用 MeshRenderer 组件(可见)。有关详细信息,请参阅下面的导入可见性。
Import Cameras从 .FBX 文件导入摄像机。有关详细信息,请参阅下面的导入摄像机。
Import Lights从 .FBX 文件导入光源。有关详细信息,请参阅下面的导入光源。
Preserve Hierarchy始终创建一个显式预制根,即使这个模型只有一个根。通常,FBX Importer 会将模型中的任何空根节点作为优化策略进行剥离。但是,如果您的多个 FBX 文件中包含同一层级视图的某些部分,则可以使用此选项来保留原始层级视图。 例如,file1.fbx 包含一个骨架和一个网格,file2.fbx 包含相同骨架,但只包含该骨架的动画。如果在不启用此选项的情况下导入 file2.fbx,那么 Unity 将剥离根节点,层级视图将不匹配,并且动画暂停。
Sort Hierarchy By Name启用此属性可在层级视图中按字母顺序对游戏对象进行排序。禁用此属性可保留 FBX 文件中定义的层级视图顺序。

导入混合形状(Import BlendShapes)

        Unity 支持混合形状(变形),并可从 3D 建模应用程序导出的 FBX 和 DAE 文件中导入混合形状。此外还可从 FBX 文件导入动画。Unity 支持混合形状在顶点、法线和切线上的顶点级动画。

        网格可能同时受到皮肤和混合形状的影响。Unity 导入包含混合形状的网格时,它将使用 SkinnedMeshRenderer 组件(而不是 MeshRenderer 组件),无论其是否具有皮肤。

        Unity 将混合形状动画作为常规动画的一部分导入:对 SkinnedMeshRenderer 上的混合形状权重进行动画化。

选择以下两种方法之一来导入具有法线的混合形状:

  • 将 Blend Shape Normals 属性设置为 Import,以便 Unity 使用来自 FBX 文件的法线。有关更多信息,请参阅下面的 Blend Shape Normals 属性文档。

  • 将 Blend Shape Normals 属性设置为 Calculate,以便 Unity 使用相同的逻辑来计算网格和混合形状上的法线。

注意:如果需要混合形状上的切线,则应将 Tangents 导入设置设为 Calculate

导入可见性(Import Visibility)

        Unity 可以通过 Import Visibility 属性从 FBX 文件读取可见性属性。值和动画曲线可以通过控制 Renderer.enabled 属性来启用或禁用 MeshRenderer 组件。

        默认情况下,可见性是可以继承的(设置为 true),但可以覆盖。例如,如果父网格上的可见性设置为 0,那么其子网格上的所有渲染器也将被禁用。在此情况下,将为每个子项的 Renderer.enabled 属性创建一个动画曲线。

一些 3D 建模应用程序要么不支持可见性属性,要么存在限制。有关更多信息,请参阅:

  • 将模型从 Autodesk® Maya® 导入 Unity 的限制

  • 将模型从 Blender 导入 Unity 的限制

导入摄像机(Import Cameras)

从 .FBX 文件导入摄像机时,Unity 支持以下属性:

属性:功能:
Projection 模式正交或透视。不支持动画。
Field of View支持动画。
所有 Physical Camera 属性如果导入包含物理属性的摄像机(例如,从 Maya 导入),那么 Unity 将创建一个启用了 Physical Camera 属性的摄像机,并且采用来自 FBX 文件的 Focal LengthSensor TypeSensor SizeLens ShiftGate Fit 值。 *注意:*并非所有 3D 建模应用程序都有 Gate Fit 概念。当 3D 建模应用程序不支持时,Unity 中的默认值是 None
NearFar Clipping Plane 距离Unity 不会根据这些属性导入任何动画。从 3ds Max 导出时,请启用 Clip Manually 设置;否则,在导入时将应用默认值。
Target Cameras如果导入目标摄像机,Unity 将使用目标对象作为源游戏对象创建具有 LookAt 约束的摄像机。

导入光源(Import Lights)

支持以下光源类型:

  • 全向光

  • 聚光灯

  • 方向光

  • 面光源

支持以下光源属性:

属性:功能:
Range如果启用 UseFarAttenuation__,则使用 FarAttenuationEndValueFarAttenuationEndValue__ 不支持动画。
Color支持动画。
Intensity支持动画。
Spot Angle支持动画。仅可用于点光源。

注意:在 3ds Max 中,导出的默认值是当前选定帧上的属性值。为了避免混淆,在导出时将播放头移动到第 0 帧。

限制

  1. 一些3D建模应用程序在光属性上应用缩放。例如,您可以根据层次结构缩放聚光灯并影响光锥。Unity没有这样做,这可能会导致灯光在Unity中看起来不同。

  2. FBX格式不定义区域光的宽度和高度。一些3D建模应用程序没有这个属性,只允许你使用缩放来定义矩形或圆盘的面积。因此,在导入时,区域灯的大小总是为1。

  3. 不支持目标光照动画,除非它们的动画经过烘焙。

4.4.1.2 Meshes
属性功能
Mesh Compression设置压缩比级别以减小网格的文件大小。提高压缩比会降低网格的精度,方法是在每个组件中使用网格边界和更低的位深来压缩网格数据。 最好是尽可能调高网格,而不会使网格看起来与未压缩版本有太大区别。这对于优化游戏大小很有用。
Off不使用压缩。
Low使用低压缩比。
Medium使用中等压缩比。
High使用高压缩比。
Read/Write Enabled启用此选项时,Unity 会将网格数据上传到 GPU 可寻址内存,但也会将其保存在 CPU 可寻址内存中。这意味着 Unity 可以在运行时访问网格数据,您也可以从脚本中访问网格数据。例如,如果您正在按过程生成一个网格,或者想要从一个网格中复制一些数据,可能会希望这样做。 当禁用此选项时,Unity 会将网格数据上传到 GPU 可寻址内存,然后从 CPU 可寻址内存中删除网格数据。 默认情况下会禁用此选项。在大多数情况下,为节省运行时内存使用量,请将此选项禁用为禁用状态。有关何时启用 Read/Write Enabled 的信息,请参阅 Mesh.isReadable。
Optimize Mesh确定三角形在网格中列出的顺序以提高 GPU 性能。
Nothing无优化。
Everything让 Unity 对顶点以及多边形和顶点的索引进行重新排序。此为默认值。
Polygon Order仅对多边形重新排序。
Vertex Order仅对顶点重新排序。
Generate Colliders启用此属性可在自动附加网格碰撞体的情况下导入您的网格。这可以用于为环境几何体快速生成碰撞网格,但是对于您正在移动的几何体,应避免使用。
4.4.1.3 Geometry

属性功能
Keep Quads启用此属性可使 Unity 停止将包含四个顶点的多边形转换为三角形。例如,如果您正在使用曲面细分着色器,可能会希望启用此选项,因为四边形的曲面细分要比多边形的曲面细分效率更高。 Unity 可以导入任意类型的多边形(三角形到 N 边形)。顶点数量超过四个的多边形将始终转换为三角形,无论此设置如何。然而,如果一个网格有四边形和三角形(或者转换为三角形的 N 边形),那么 Unity 会创建两个子网格来分离四边形和三角形。每个子网格要么只包含三角形,要么只包含四边形。 提示:如果要从 3ds Max 将四边形导入 Unity,必须将其导出为可编辑多边形。
Weld Vertices合并在空间中共享相同位置的顶点,前提是这些顶点总体上共享相同的属性(包括 UV、法线、切线和 VertexColor)。 这通过减少网格的总数量来优化网格的顶点计数。默认情况下会启用此选项。 在某些情况下,您可能需要在导入网格时关闭此优化。例如,如果有意包含重复顶点,这些重复顶点在网格中占据相同的位置,那么您可能更喜欢使用脚本来读取或操作单个顶点和三角形数据。
Index Format定义网格索引缓冲区的大小。 注意:由于带宽和内存存储大小的原因,通常会希望将 16 bit 索引保留为默认设置,并且只在必要时使用 32 bit__,这也是 Auto__ 选项所使用的设置。
Auto在导入网格时,让 Unity 根据网格顶点数来决定是使用 16 位索引还是 32 位索引。对于 Unity 2017.3 和更高版本中添加的资源,这是默认设置。
16 bit导入网格时使用 16 位索引。如果网格较大,则会将其分割为小于 64k 顶点块。对于在 Unity 2017.2 或更低版本中建立的项目,这是默认设置。
32 bit导入网格时使用 32 位索引。如果使用的是基于 GPU 的渲染管线(例如,使用计算着色器三角形剔除),那么使用 32 位索引将确保所有网格使用相同的索引格式。这降低了着色器的复杂性,因为它们只需要处理一种格式。
Legacy Blend Shape Normals启用此选项可基于 Smoothing Angle 值来计算法线。
Normals定义是否以及如何计算法线。这对于优化游戏大小很有用。
Import从文件中导入法线。这是默认选项。如果文件不包含法线,则将计算法线。
Calculate根据 Normals ModeSmoothness SourceSmoothing Angle(下文)属性来计算法线。
None禁用法线。如果网格既没有法线映射也没有受到实时照明的影响,请使用此选项。
Blend Shape Normals定义 Unity 是否以及如何为混合形状计算法线。此值应与 Normals 属性的值匹配。 仅当禁用 Legacy Blend Shape Normals 时,此属性才可见。
Import从文件中导入法线。如果混合形状不包含法线,则 FBX SDK 会使用其自己的方法来计算法线,从而导致法线值通常会不同于 Unity 使用 Calculate 选项创建的法线值。
Calculate根据 Normals ModeSmoothness SourceSmoothing Angle(下文)属性来计算法线。
None混合形状法线不会影响基础形状。
Normals Mode定义 Unity 计算法线的方式。仅当 Normals 设置为 CalculateImport 时,此属性才可用。
Unweighted Legacy旧版的法线计算方法(在 2017.1 版本之前)。在某些情况下,旧版给出的结果与当前实现给出的结果略有不同。对于在将项目迁移到最新版本的 Unity 之前导入的所有 FBX 预制件,这是默认设置。
Unweighted法线不加权。
Area Weighted法线按照图面面积加权。
Angle Weighted法线按照每个图面上的顶角加权。
Area and Angle Weighted法线按照每个图面上的图面面积和顶角加权。这是默认选项。
Smoothness Source设置如何确定平滑行为(哪些边应该是平滑的,哪些应该是粗糙的)。 仅当禁用 Legacy Blend Shape Normals 时,此属性才可见。
Prefer Smoothing Groups尽可能使用模型文件中的平滑组。
From Smoothing Groups仅使用模型文件中的平滑组。
From Angle使用 Smoothing Angle 值来确定哪些边应该是平滑的。
None不拆分硬边的任何顶点。
Smoothing Angle控制是否为硬边拆分顶点。通常,值越大,产生的顶点越少。 注意:此设置仅用于非常光滑的有机物或非常复杂的多边形模型。否则,最好在 3D 建模软件中手动平滑,然后导入,并且需要将 Normals 选项设置为 Import(上文)。由于 Unity 仅以单个角度作为硬边的基础,因此您可能会错误地在模型的某些部分上平滑。 仅当 Normals 设置为 Calculate 时才可用。
Tangents定义如何导入或计算顶点切线。仅当 Normals 设置为 CalculateImport 时,此属性才可用。
Import如果 Normals 设置为 Import,则从 FBX 文件中导入顶点切线。如果网格没有切线,那么将无法使用法线贴图着色器。
Calculate MikkTSpace使用 MikkTSpace 计算切线。如果 Normals 设置为 Calculate,则这是默认选项。
Calculate Legacy使用旧版算法计算切线。
Calculate Legacy - Split Tangent使用旧版算法计算切线,并在 UV 图表上进行拆分。如果网格上的接缝破坏了法线贴图光照,请使用此属性。此属性通常仅适用于角色。
None不导入顶点切线。网格没有切线,因此将无法使用法线贴图着色器。
Swap UVs在网格中交换 UV 通道。如果漫射纹理使用光照贴图中的 UV,请使用此选项。Unity 最多支持八个 UV 通道,但并不是所有的 3D 建模应用程序都会导出两个以上的通道。
Generate Lightmap UVs为光照贴图创建第二个 UV 通道。有关更多信息,请参阅生成光照贴图 UV 文档。

4.4.2 Rig选项卡

        Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格,以便能够将其动画化。对于人形 (Humanoid) 角色,这意味着需要分配或创建 Avatar。对于非人形角色(通用 (Generic) 角色),这意味着需要在骨架中确定根骨骼。

        默认情况下,在项目视图中选择模型时,Unity 会确定哪个动画类型 (Animation Type) 与所选的模型最匹配,然后将其显示在 Rig 选项卡中。如果 Unity 从未导入该文件,则 Animation Type 设置为 None

属性:功能:
Animation Type指定动画类型。
None不存在动画
Legacy使用旧版动画系统。与 Unity 3.x 及更早版本一样导入和使用动画。
Generic如果骨架为非人形(四足动物或任何要动画化的实体),请使用通用动画系统。Unity 会选择一个根节点,但可以确定另一个用作根节点的骨骼。
Humanoid如果骨架为人形(有两条腿、两条手臂和一个头),请使用人形动画系统。Unity 通常会检测骨架并将其正确映射到 Avatar。有些情况下,可能需要更改 Avatar 定义 (Avatar Definition) 并手动对映射进行配置 (Configure)

通用动画类型

        通用动画不会像人形动画那样使用 Avatar。由于骨架可以是任意形状,必须指定哪个骨骼是根节点 (Root node)。通过使用根节点,Unity 可在通用模型的动画剪辑之间建立一致性,并在尚未“在正确位置”(即,整个模型在动画化时移动其世界位置的位置)制作的动画之间正确混合。

        指定根节点有助于 Unity 区分骨骼相对于彼此的移动与根节点在世界中的运动(通过 OnAnimatorMove 进行控制)。

属性:功能:
Avatar Definition选择获取 Avatar 定义的位置。
Create from this model根据此模型创建 Avatar
Copy from Other Avatar指向另一个模型上设置的 Avatar。
Root node选择要用作此 Avatar 的根节点的骨骼。 仅当将 Avatar Definition 设置为 Create From This Model 时此设置才可用。
Source复制另一个具有相同绑定的 Avatar 以导入其动画剪辑。 仅当将 Avatar Definition 设置为 Copy from Other Avatar 时此设置才可用。
Skin Weights设置可影响单个顶点的骨的最大数目。
Standard (4 Bones)使用最多四个骨骼来产生影响。这是默认值,出于性能考虑,建议使用此设置。
Custom设置自定义的最大骨骼数量。 选择此选项时,将显示 Max Bones/VertexMax Bone Weight 属性。
Max Bones/Vertex定义每个顶点的最大骨骼数(以影响给定顶点)。可为每个顶点设置 1 到 32 个骨骼,但是用来影响顶点的骨骼数量越多,性能成本就越高。 仅当将 Skin Weights 属性设置为 Custom 时此设置才可用。
Max Bone Weight设置考虑骨骼权重的最低阈值。权重计算将忽略小于此值的任何值,并且 Unity 会将高于此值的骨骼权重放大为总计 1.0。 仅当 Skin Weights 属性设置为 Custom 时此设置才可用。
Optimize Game Object在 Avatar 和 Animator 组件中删除和存储所导入角色的游戏对象变换层级视图。如果启用此选项,角色的 SkinnedMeshRenderer 将使用 Unity 动画系统的内部骨架,因此可提高动画角色的性能。 仅当 Avatar Definition 设置为 Create From This Model 时才可用。
Extra Transforms to Expose指定已启用 Optimize Game Object 时希望 Unity 忽略的变换路径。有关更多信息,请参阅包含额外变换。 仅当启用了 Optimize Game Object 时才会显示此部分。
Strip Bones只添加骨骼到SkinnedMeshRenderers,有皮肤权重分配给他们。

人形动画类型

        除了极少数例外情况,人形模型具有相同的基本结构。此结构代表了身体的主要关节部位:头部和四肢。使用 Unity 的人形动画功能的第一步是设置和配置 Avatar。Unity 使用 Avatar 将简化的人形骨骼结构映射到模型骨架中的实际骨骼。

属性:功能:
Avatar Definition选择获取 Avatar 定义的位置。
Create from this model根据此模型创建 Avatar
Copy from Other Avatar指向另一个模型上设置的 Avatar。
Source复制另一个具有相同骨架的 Avatar 以导入其动画剪辑。 仅当 Avatar Definition 设置为 Copy from Other Avatar 时才可用。
Configure…打开 Avatar 配置。 仅当 Avatar Definition 设置为 Create From This Model 时才可用。
Skin Weights对于人形角色模型和通用模型,此属性相同。请参阅上文中有关 Skin Weights 属性的文档以了解相关信息。
Optimize Game Object在 Avatar 和 Animator 组件中删除和存储所导入角色的游戏对象变换层级视图。如果启用此选项,角色的 SkinnedMeshRenderer 将使用 Unity 动画系统的内部骨架,因此可提高动画角色的性能。 仅当 Avatar Definition 设置为 Create From This Model 时才可用。
Extra Transforms to Expose指定已启用 Optimize Game Object 时希望 Unity 忽略的变换路径。有关更多信息,请参阅包含额外变换。 仅当启用了 Optimize Game Object 时才会显示此部分。

包含额外变换

        启用 Optimize Game Object 属性时,Unity 将忽略属于层级视图但未映射在 Avatar 中的任何变换,以便提高 CPU 性能。但可以使用 Extra Transforms to Expose 部分来标记游戏对象层级视图中的特定节点以纳入到计算中:

(A) 在搜索框中输入全名或部分名称以过滤变换列表。这样可以更轻松地浏览具有大量骨骼的角色。

(B) 启用希望 Unity 在计算中包含的每个变换(骨架的骨骼)。

(C) 使用按钮有助于选择特定变换。例如,Toggle All 按钮可以一次选择或取消选择所有内容(无论当前选择如何,包括过滤的项)。

(D) 使用 Revert 按钮可以撤消所做的选择,或使用 Apply 按钮对模型应用。

注意:在优化模式下,蒙皮网格矩阵提取是多线程操作。

旧版动画类型

属性:功能:
Generation选择动画导入方法。
Don’t Import不导入动画
Store in Original Roots (Deprecated)已弃用。请勿使用。
Store in Nodes (Deprecated)已弃用。请勿使用。
Store in Root (Deprecated)已弃用。请勿使用。
Store in Root (New)导入动画并将其存储在模型的根节点中。这是默认设置。
Skin Weights请参阅上文中有关 Skin Weights 属性的文档以了解此属性的相关信息。

有关旧版动画的详细信息,请参阅旧版动画系统的文档。

4.4.2.1 Avatar Mapping 选项卡

当 Unity 编辑器处于Avatar配置模式时,Avatar Mapping 选项卡可用。要进入Avatar配置模式,请执行以下任一操作:

  • 在 Project 窗口中选择 Avatar Asset,然后在 Inspector 中单击 “Configure Avatar”,或

  • 在 Project 窗口中选择 Model Asset,在 Inspector 中转到 “Rig” 选项卡,然后单击 Avatar Definition 菜单下的 “Configure…”。

进入Avatar配置模式后,Inspector 内将显示 Avatar Mapping 选项卡,其中显示 Unity 的骨骼映射:

(A) 通过这些按钮在 MappingMuscles & Settings 选项卡之间进行切换。在选项卡之间切换之前,必须对所做的更改执行 ApplyRevert 操作。

(B) 通过这些按钮在 Avatar 的部位之间进行切换:BodyHeadLeft HandRight Hand

(C) 这些菜单提供各种 MappingPose 工具来帮助您将骨骼结构映射到 Avatar。

(D) 通过这些按钮接受所做的更改 (Accept)、放弃更改 (Revert) 以及离开 Avatar 窗口 (Done)。在离开 Avatar 窗口之前,必须对所做的更改执行 ApplyRevert 操作。

Avatar Mapping(Avatar 映射)指示哪些骨骼是必需的(实线圆圈)和哪些骨骼是可选的(虚线圆圈)。Unity 可自动插入可选的骨骼运动。

保存和重用 Avatar 数据(人体模板 (Human Template) 文件)

        您可以将骨架中的骨骼映射保存到磁盘上的 Avatar 作为人体模板(Human Template)文件(扩展名为 *.ht)。您可以对任何角色重用此映射。例如,您希望通过源代码控制 Avatar 映射,并提交基于文本的文件;或者希望使用自己的自定义工具来解析该文件。

        要将 Avatar 数据保存到人体模板文件,请从 Avatar 窗口底部的 Mapping 下拉菜单中选择 Save

Unity 将显示一个对话框,可在其中选择要保存的文件的名称和位置。要加载先前创建的人体模板文件,请选择 Mapping > Load,然后选择要加载的文件。

使用 Avatar 遮罩

        有时,将动画限制为特定的身体部位会很有用。例如,在一个行走动画中,角色可能会挥动他们的手臂,但如果他们拿起火炬,他们应该将火炬举起来投光。您可以使用 Avatar 身体遮罩 (Avatar Body Mask) 来指定应将动画限制在角色的哪些部位。请参阅有关 Avatar 遮罩的文档以了解更多详细信息。

4.4.2.2 Avatar Muscle & Settings 选项卡

        Unity 的动画系统允许使用肌肉 (Muscles) 控制不同骨骼的运动范围。

        正确配置 Avatar 后,动画系统可“理解”骨骼结构,并允许使用 Avatar Inspector 的 Muscles & Settings 选项卡。使用 Muscles & Settings 选项卡可调整角色的运动范围,并确保角色以逼真的方式变形,而不出现视觉瑕疵或自我重叠。

Muscle & Settings 选项卡具有以下区域:

(A) 通过这些按钮在 MappingMuscles & Settings 选项卡之间进行切换。在选项卡之间切换之前,必须对所做的更改执行 ApplyRevert 操作。

(B) 通过 Muscle Group Preview 区域可使用预定义的变形来操作角色。这些设置一次影响多个骨骼。

(C) 使用 Per-Muscle Settings 区域可调整身体的各个骨骼。可以展开这些肌肉设置以便更改每项设置的范围限制。例如,默认情况下,Unity 会将 Head-Nod 和 Head-Tilt 设置的范围设置为 –40 到 40 度,可以进一步减小这些范围以增加这些动作的刚度。

(D) 使用 Additional Settings 可调整身体的特定特效。

(E) Muscles 菜单提供了 Reset 工具,可将所有肌肉设置恢复到默认值。

(F) 通过这些按钮接受所做的更改 (Accept)、放弃更改 (Revert) 以及离开 Avatar 窗口 (Done)。在离开 Avatar 窗口之前,必须对所做的更改执行 ApplyRevert 操作。

预览更改

        对于 Muscle Group PreviewPer-Muscle Settings 区域中的设置,可直接在 Scene 视图中预览所做的更改。可以拖动滑动条来查看应用于角色的每项设置的移动范围:

移动自由度 (Degree of Freedom, DoF)

        可以在 Additional Settings 中启用 Translate DoF 选项,从而启用人形角色的移动动画。如果禁用此选项,则 Unity 仅使用旋转对骨骼进行动画化。Translation DoF 可用于 Chest、UpperChest、Neck、LeftUpperLeg、RightUpperLeg、LeftShoulder 和 RightShoulder 的肌肉。

        注意:启用 Translate DoF 可能会提高性能要求,因为动画系统需要执行额外的步骤来重新定位人形动画。因此,在已知动画包含角色某些骨骼的动画式移动时,才应启用此选项。

4.4.2.3 Avatar Mask 窗口

可通过以下两种方法来定义应该对动画的哪些部分进行遮罩:

  • 从人形身体映射图进行选择

  • 从 Transform 层级视图中选择要包含或排除的骨骼

下面分别进行说明。

人形身体选择

        如果动画使用人形 Avatar,可以选择是否简化人形身体图的某些部分,从而指示需要遮罩的动画位置。选择Avatar Mask后,在Inspector面板如图所示:

身体图将身体部位分为以下部分:

  • 头 (Head)

  • 左臂 (Left Arm)

  • 右臂 (Right Arm)

  • 左手 (Left Hand)

  • 右手 (Right Hand)

  • 左腿 (Left Leg)

  • 右腿 (Right Leg)

  • 根(Root,由脚下的“阴影”表示)

要包含某个身体部位的动画,请在 Avatar 图中单击该部位,直到该部位显示为绿色。 要排除动画,请单击该身体部位,直到显示为红色。 要包含或排除所有部位,请单击 Avatar 周围的空白区域。

        此外还可切换手和脚的反向动力学 (Inverse Kinematics, IK),此选项决定了是否在动画混合中包含 IK 曲线。

选择变换组件

另一方面,如果动画不使用人形 Avatar,或者需要更精确地控制对各个骨骼的遮罩,则可以选择或取消选择模型层级视图的相应部分:

  1. 为需要遮罩变换组件的 Avatar 分配引用。

  2. 单击 Import Skeleton 按钮。Avatar 的层级视图将显示在检视面板中。

  3. 可以在层级视图中选中需要遮罩的每个骨骼。

        当指定动画层在运行时应用遮罩,或者在动画文件的导入设置中将遮罩应用于导入动画时,可在 Animator Controller 中使用遮罩资源。

        使用遮罩的好处在于有助于减少内存开销,因为非活动身体部位不需要相关联的动画曲线。此外,在播放期间不需要计算未使用的曲线,因此还有助于减少动画的 CPU 开销。

4.4.2.4 Human Template 窗口

        人体模板 (Human Template) 文件 (*.ht) 以 YAML 格式存储保存在 Avatar 窗口中的模型的人形骨骼映射:

Human Template 窗口将人体模板文件的内容显示为标准 Unity 文本框。

每个分组代表 YAML 文件中的一个条目,其中骨骼映射目标的名称标记为 First__,而模型文件中的骨骼名称标记为 Second__。

可以使用此属性编辑该文件中的大部分值,但 Unity 会立即更新对文件执行的所有更改。不过,可以在此窗口处于活动状态时撤消任何更改。

4.4.3 Animation选项卡

        动画剪辑是 Unity 动画的最小构成元素。它们代表了一个单独的运动,例如 RunLeft、Jump 或 Crawl,并且可通过各种方式进行操作和组合,从而产生生动的效果(请参阅动画状态机 (Animation State Machines)、Animator Controller 或混合树 (Blend Trees))。 您可以从导入的 FBX 数据中选择动画剪辑。

单击包含动画剪辑的模型时,将显示以下属性:

在“检查器”窗口的“动画”选项卡上有五个区域:

(A) 特定资源属性。这些设置定义了整个资源的导入选项。

(B) 剪辑选择列表。您可以从此列表中选择任何项目以显示其属性并预览其动画。您也可以定义新的剪辑。

(C) 特定剪辑属性。这些设置定义了所选动画剪辑的导入选项。

(D)剪辑属性。这些设置定义了所有动画剪辑的导入选项。

(E)动画预览。您可以在这里播放动画并选择特定的帧。

特定于资源的属性

这些属性适用于此资源中定义的所有动画剪辑和约束:

属性:功能:
Import Constraints从此资源导入约束。
Import Animation从此资源导入动画。 *注意:*如果禁用此选项,则会隐藏此页面上的所有其他选项,并且不会导入任何动画。
Bake Animations烘焙通过反向动力学 (IK) 或模拟 (Simulation) 创建的动画以便推进运动关键帧。 仅可用于 Autodesk® Maya®、Autodesk® 3ds Max® 和 Cinema 4D 文件。
Resample Curves将动画曲线重新采样为四元数值,并为动画中的每一帧生成一个新的四元数关键帧。此选项仅在导入文件包含欧拉曲线时出现。默认情况下启用该选项。禁用此选项以保持动画曲线的原始状态。只有当重新采样的动画与原始动画相比存在插值问题时,才应该禁用此选项。
Anim. Compression导入动画时要使用的压缩类型。
Off禁用动画压缩。这意味着 Unity 不会在导入时减少关键帧数量。禁用动画压缩可产生最高精度的动画,但性能会降低、文件会更大、运行时内存大小将增加。通常建议不要使用此选项;如果需要更高精度的动画,应启用关键帧减少 (Keyframe Reduction) 功能并减小允许的 Animation Compression Error 值。
Keyframe Reduction减少导入时的冗余关键帧。如果启用,检查器显示动画压缩错误选项。这既影响文件大小(运行时内存),也影响曲线的计算方式。适用于传统,通用和人形动画类型。
Keyframe Reduction and Compression导入时减少关键帧并在文件中存储动画时压缩关键帧。这仅影响文件大小;运行时内存大小与 Keyframe Reduction 相同。如果启用此属性,则 Inspector 会显示 Animation Compression Errors 选项。 仅适用于 Legacy 动画类型绑定。(Eu:此选项不是一个,而是多个,见下面)
Optimal让 Unity 决定如何进行压缩:通过减少关键帧还是通过使用密集格式。如果启用此属性,则 Inspector 会显示 Animation Compression Errors 选项。 仅适用于 GenericHumanoid 动画类型绑定。
Animation Compression Errors仅当启用 Keyframe ReductionOptimal 压缩时可用。
Rotation Error设置旋转曲线压缩的容错度(以度为单位的角度)。Unity 使用此值来确定是否可以删除旋转曲线上的关键点。 这表示原始旋转值和减小值之间的最小角度: Angle(value, reduced) < RotationError
Position Error设置位置曲线压缩的容错度(百分比)。Unity 使用此值来确定是否可以删除位置曲线上的关键点。有关更多信息,请参阅设置容错度以减少位置曲线和缩放曲线上的关键点。
Scale Error设置缩放曲线压缩的容错度(百分比)。Unity 使用此值来确定是否可以删除缩放曲线上的关键点。有关更多信息,请参阅设置容错度以减少位置曲线和缩放曲线上的关键点。
Animated Custom Properties导入您指定为自定义用户属性的任何 FBX 属性。 Unity 在导入 FBX 文件时仅支持一小部分属性(例如转换、旋转、缩放和可见性)。但是,您可以借助 extraUserProperties 成员,在导入器脚本中指定标准 FBX 属性(如用户属性)来处理这些属性。在导入期间,Unity 会将所有这些指定属性传递给资源后处理器 (Asset postprocessor),就像“真实”用户属性一样。
Remove Constant Scale Curves移除与对象初始缩放值相同的常量动画曲线。

设置容错度以减少位置曲线和缩放曲线上的关键点

        通过设置容错度百分比,确定 Unity 是否可以删除位置曲线或缩放曲线上的关键点作为动画压缩策略。

        将 Anim. Compression 属性设置为“Keyframe Reduction”或“Optimal”时,Unity 会将原始曲线与删除特定关键帧后的曲线外观进行比较,并应用以下测试:

OriginalValue - ReducedValue > OriginalValue * percentageOfError

如果原始值和消减值之间的差值小于(等于,Eu:根据下面的案例,这里包括等于。)原始值乘以容错度百分比,则 Unity 会删除关键帧。

请注意,Unity 会比较三个曲线分量之间的距离(即,它会比较 distance(x,y,z))以及每个分量的距离(distance(x)distance(y),然后是 distance(z))。

以下示例说明了 Unity 如何使用 10% 的容错度来估算 y 轴上的减少量:

关键帧 A 的值为 11.2:

关键帧 B 的值为 11.1:

所得的消减曲线如下所示:

关键帧 A 未被消减,原因是:

  • 原始值与消减值之间的距离为 D = 11.2 - 10 = 1.2

  • 误差幅度为 E = 10% * 11.2 = 1.12

  • D > E

关键帧 B 被消减,原因是 11.1 - 10 < 10% * 11.1

  • 原始值与消减值之间的距离为 D = 11.1 - 10 = 1.11

  • 误差幅度为 E = 10% * 11.1 = 1.11

  • D = E

请注意,当使用仅略有变化的较高值时,此方法有局限性。这里将场景移开 1000 个单位,动画不会改变,但位置会远离 0,然后我们再进行一次消减处理。

在这种情况下,两个关键帧都会被消减。

关键帧 A 被消减,原因是:

  • 原始值与消减值之间的距离为 D = 1011.2 - 1010 = 1.2

  • 误差幅度为 E = 10% * 1011.2 = 101.12

关键帧 B 被消减,原因是:

  • 原始值与消减值之间的距离为 D = 1011.1 - 1010 = 1.1(Eu:文档似乎有错,我进行了修改。)

  • 误差幅度为 E = 10% * 1011.1 = 101.11

较高的值要求原始值与消减值之间的差值要大得多才能将关键帧保留在消减曲线中。比如,关键帧 A 的值为 1100,将被丢弃;关键帧 B 的值为 1112,将被保留:

剪辑选择列表

Animation 选项卡的此区域中可执行以下任务:

  • 从列表中选择一个剪辑以显示特定于剪辑的属性。

  • 在剪辑预览面板中播放所选剪辑。

  • 使用添加 (+) 按钮为此文件创建新剪辑。

  • 使用删除 (-) 按钮删除所选的剪辑定义。

如果您手动更改已导入剪辑的属性,当源资源更改时,Unity不会导入新的动画剪辑。例如,如果你在动画选项卡上创建一个新的剪辑或改变剪辑时间,剪辑列表不会更新,即使你从Unity外部向FBX文件添加剪辑。要查看新的和更改的动画剪辑,必须在剪辑列表中添加新的源片段。

特定于剪辑的属性

Animation 选项卡的此区域显示以下特性:

(A)所选剪辑的可编辑名称。

(B)动画剪辑时间轴。

(C)剪辑属性,以控制循环,根运动提取,曲线,事件和化身蒙版。

您可以为此资源中定义的每个动画剪辑单独设置以下属性:

属性:功能:
*Area A*
Take name源文件中的源名称。源文件包含一组在外部3D应用程序(如Motionbuilder或Autodesk®Maya®)中创建的源文件。 您可以导入源需要作为单独的动画剪辑。您还可以从帧的子集创建动画剪辑。
*Area B*
时间轴编辑器拖动动画时间轴上的开始和结束指示器来定义每个剪辑的帧范围。 创建剪辑本质上是定义动画片段的开始和结束点。要定义循环剪辑,修剪起始点和结束点,使第一帧和最后一帧尽可能匹配。您还可以缩放和滚动时间轴以更精确。
Start剪辑的起始帧。
End剪辑的结束帧。
*Area C*
Loop Time播放动画剪辑并在到达结尾时重新开始。
Loop Pose无缝循环运动。
Cycle Offset循环动画在其他时间开始时的周期偏移。(Eu:即0点时刻的动画可以偏移为后面时刻的动画,动画整体在时间上偏移。)
Root Transform Rotation
Bake into Pose将根旋转烘焙到骨骼移动。禁用此选项将会存储为根运动。
Based Upon根旋转的基础。
Original保持源文件中的原始旋转。
Root Node Rotation使用根节点的旋转。 仅适用于 Generic 动画类型。
Body Orientation保持上半身朝前。 仅适用于 Humanoid 动画类型。
Offset根旋转偏移(以度为单位)。
Root Transform Position (Y)
Bake into Pose将垂直根运动烘焙到骨骼移动。禁用此选项将会存储为根运动。
Based Upon (at Start)垂直根位置的基础。
Original保持源文件中的垂直位置。
Root Node Position使用垂直根位置。 仅适用于 Generic 动画类型。
Center of Mass保持质心与根变换位置对齐。 仅适用于 Humanoid 动画类型。
Feet保持双脚与根变换位置对齐。 仅适用于 Humanoid 动画类型。
Offset垂直根位置偏移。
Root Transform Position (XZ)
Bake into Pose将水平根运动烘焙到骨骼移动。禁用此选项将会存储为根运动。
Based Upon水平根位置的基础。
Original保持源文件中的水平位置。
Root Node Position使用水平根变换位置。 仅适用于 Generic 动画类型。
Center of Mass保持与根变换位置对齐。 仅适用于 Humanoid 动画类型。
Offset水平根位置偏移。
Mirror在此剪辑中进行左右镜像。 仅当动画类型 (Animation Type) 设置为 Humanoid 时才显示。
Additive Reference Pose启用此选项可以设置附加动画层基础参考姿势的帧。在时间轴编辑器中可以看到蓝色标记。
Pose Frame输入一个帧编号以用作参考姿势。还可以在时间轴中拖动蓝色标记来更新此值。 仅当启用 Additive Reference Pose 的情况下才可用。
Curves展开此部分以管理此动画剪辑的动画曲线。
Events展开此部分以管理此动画剪辑的动画曲线。
Mask展开此部分以管理此动画剪辑的Avatar遮罩。

所有剪辑的属性

这些可扩展的属性适用于所有导入的动画剪辑。

属性:功能:
Motion展开此部分以管理所有导入剪辑的根运动节点。
Import Messages展开此部分可查看有关如何导入动画的详细信息,包括可选的重定向质量报告 (Retargeting Quality Report)

动画导入警告

        如果在动画导入过程中出现任何问题,动画导入检视面板 (Animations Import Inspector) 顶部会显示警告:

这些警告并不一定意味着您的动画未导入或不正常。可能仅表示导入的动画与源动画看起来略有不同。

要查看更多信息,请展开 Import Messages 部分:

在这种情况下,Unity 提供了 Generate Retargeting Quality Report 选项,通过启用该选项可以查看有关重定向问题的更多具体信息。

您可能会看到的其他警告详细信息包括:

  • 此文件中的默认骨骼长度与源 Avatar 中的值不同。

  • 此文件中的中间骨骼默认旋转与源 Avatar 中的值不同。

  • 源 Avatar 层级视图与此模型中的层级视图不匹配。

  • 此动画具有将被丢弃的转换动画。

  • 人形动画具有将被丢弃的中间变换和旋转。

  • 具有将被丢弃的缩放动画。

这些消息表明 Unity 导入动画并将其转换为自己的内部格式时忽略了原始文件中的某些数据。这些警告实质上告诉您重定向的动画可能与源动画不完全匹配。

注意:Unity 不支持除常量 (constant) 以外的前外推 (pre-extrapolate) 和后外推 (post-extrapolate) 模式(也称为前无限 (pre-infinity) 和后无限 (post-infinity) 模式),因此会在导入时将这些模式转换为常量

动画预览

Animation 选项卡的预览区域提供以下特性:

(A)所选剪辑的名称。

(B) 2D预览模式按钮(在正射和透视相机之间切换)。

(C)枢轴和质心显示按钮(在显示和隐藏小部件之间切换)。

(D) Avatar选择器(选择哪个GameObject来预览动作)。

(E)播放/暂停键。

(F)当前动画在预览时间轴上的位置(允许拖拽)。

(G)动画预览速度滑块(向左移动可以减速,右加速)。

(H)回放状态指示灯(以秒、百分比和帧数显示回放位置)。

(I)标签栏,在这里你可以定义和应用标签到你的剪辑。

(J) AssetBundles栏,在这里你可以定义AssetBundles和Variant。(Eu:AB包知识。)

(K)切换脚部IK预览。

4.4.3.1 欧拉曲线重新采样

        3D 应用程序中的旋转通常表示为四元数或欧拉角。在大多数情况下,Unity 在内部将旋转表示为四元数;但是,大致了解 Unity 中的旋转和方向也是很重要的。

        当导入外部动画文件时,导入后文件通常包含欧拉格式的关键帧动画。Unity默认会将这些动画重新采样为四元数值,并为动画中的每一帧生成一个新的四元数关键帧。这样就最大限度减小了源动画与 Unity 中显示的动画之间的差异。

        在某些情况下,即使重新采样,导入的动画的四元数表现也可能与原资源有所差异。因此,Unity 提供了关闭动画重新采样的选项。这意味着您可以在运行时改用原始的欧拉动画关键帧。

        注意:仅当帧之间的默认四元数插值产生不良结果并导致问题时,才使用欧拉曲线。

保持导入动画上的原始欧拉曲线

要使用动画文件中的原始欧拉曲线值,请取消选中 Animation 选项卡中的 Resample Curves 选项:

【Eu:在新版引擎中,并未找到此选项...】

禁用此选项时,Unity会根据曲线类型在欧拉或四元数模式下,将旋转曲线与其原始关键帧保持一致。

注意:FBX SDK会自动重新采样旋转前或旋转后的关节上的任何旋转曲线。这意味着 Unity 会自动将它们导入为四元数曲线。

Unity 支持各种各样的导入文件,并会尝试使导入的曲线尽可能接近原始曲线。为了实现这一点,Unity 支持所有正常(非重复)欧拉旋转顺序,并以原始旋转顺序导入曲线。

欧拉值和 Unity 引擎

        使用原始欧拉(非重新采样)旋转时,您可以看到动画播放中有非常小的视觉差异。在后台,Unity 甚至会在运行时以欧拉表示形式存储这些曲线。但是,Unity 最终必须将旋转值转换为四元数,因为引擎仅支持四元数。

        禁用 Resample Curves 选项后,Unity 会将旋转值保持为欧拉值,直到将这些值应用于某个游戏对象为止。这意味着最终结果看起来应该与原始情况一样好,但内存有所改善,因为尚未在制作软件中烘焙的旋转曲线占用的内存较少。

Transform Inspector 中的非默认欧拉顺序

默认情况下,Unity 按 Z、X、Y 顺序应用 Transform Inspector 中出现的欧拉角。

当播放或编辑导入的动画时,如果这些动画的欧拉曲线的旋转顺序与 Unity 的默认值不同,则 Unity 会在旋转 (Rotation) 字段旁边显示一个差异指示符:

编辑不同旋转顺序的多个变换时【Eu:这句好怪,意思应该是多个不同旋转顺序应用到一个Transform上。】,Unity 会显示一条警告消息,指出应用相同的欧拉旋转会在不同旋转顺序的曲线上得出不同的结果:

4.4.3.2 提取动画剪辑

        动画角色通常具有许多不同的动作,这些动作在游戏中的不同情况下激活,也称为动画剪辑 (Animation Clips)。例如,我们可能有单独用于行走、奔跑、跳跃、投掷和死亡的动画剪辑。根据美术师在 3D 建模应用程序中设置动画的方式,这些单独的动作可以作为不同的动画剪辑导入,也可以作为单个剪辑导入(每个动作紧跟前一个动作)。如果只有一个长剪辑,可以在 Unity 中提取组件动画剪辑,为此需要在工作流程中增加一些额外的步骤。

如果模型有多段已定义为单个剪辑的动画,则 Animations 选项卡如下所示:

(Eu:可以看到有多个剪辑,Jump、Take001、Take001(1)这些。)

可以预览列表中显示的任何剪辑。如果需要,可编辑剪辑的时间范围。

如果模型将多段动画作为一个连续片段提供,则 Animation 选项卡如下所示:

(Eu:这里偷懒的还是用Jump,实际会像这样只有一个剪辑,然后时间是很长的。)

在这种情况下,可以针对这一个连续片段,定义与每个单独动画序列(行走、跳跃、奔跑和空闲)相对应的时间范围(帧数或秒数)(Eu:即拆分。)。可按以下步骤创建新的动画剪辑:

  1. 单击添加 (+) 按钮。

  2. 选择剪辑包含的帧数或秒数范围。

  3. 还可更改剪辑的名称。

例如,可定义:

  • 介于 71–77 帧之间的向前走动画

  • 介于 170–200 帧之间的空闲状态

  • 介于 250–280 帧之间的击中动画

有关更多信息,请参阅 Animation 选项卡。

使用多个模型文件来导入动画

        导入动画的另一种方法是遵循 Unity 支持的动画文件命名方案。可以创建多个单独的模型文件,并以 modelName@animationName.fbx 命名约定为文件命名。例如,如果一个模型名为 goober,则可使用名为 goober@idle.fbxgoober@walk.fbxgoober@jump.fbxgoober@walljump.fbx 的文件导入单独的 idle、walk、jump 和 walljump 动画。导出此类动画时,不必在这些文件中包含网格,但这种情况下应启用 Preserve Hierarchy Model 导入选项。

        Unity 会自动导入所有四个文件,并将所有动画汇集到不含 @ 符号的文件。在上面的示例中,Unity 将自动导入引用 idlejumpwalkwallJump 动画的 goober.mb 文件。

        对于 FBX 文件,可将网格导出到不含动画的模型文件中。然后,通过导出每个剪辑的所需关键帧(在 FBX 对话框中启用动画),将四个剪辑导出为 goober@_animname_.fbx

4.4.3.3 动画剪辑上的循环优化

        动画处理人员经常执行的一种操作是确保动画正确循环。例如,角色沿着一条路径行走,行走动作来自动画剪辑。动作可能仅持续 10 帧,但该动作以连续循环方式播放。为了使行走动作无缝衔接,它必须以类似的姿势开始和结束。这样可确保没有脚滑动作或奇怪的颠簸动作。

        动画剪辑可根据姿势、旋转和位置进行循环。根据行走周期的示例,希望根变换旋转 (Root Transform Rotation) 和 Y 方向根变换位置 (Root Transform Position) 的起点和终点匹配。不希望 XZ 方向根变换位置的起点和终点匹配,因为如果角色的双脚持续恢复水平姿势,角色将永远到不了任何地方。

        Unity 在 Animation 选项卡上的剪辑特定导入设置下提供了一些匹配标记和一组特殊的循环优化图。它们提供了视觉提示,可帮助对动作每个值进行剪辑优化。

        要优化循环动作是否以最佳方式开始和结束,可以查看和编辑循环匹配曲线。(Eu:这两个操作即下面的操作。)

查看循环优化图

        在以下示例中,循环动作显示剪辑范围内的匹配不佳(由红色和黄色标记显示):

要查看循环优化图,请单击并按住时间轴上的开始或结束标记。随后,Based UponOffset 值将消失,而每个循环基础位置将显示一条曲线:

优化循环匹配

        单击并拖动动画剪辑的起点或终点,直到该点显示在图上属性为绿色的位置。Unity 将图绘制为绿色的情况下,剪辑更有可能正确循环。

松开鼠标按钮时,图会消失,但标记仍然存在:

4.4.3.4 曲线

        您可以在 Animation 选项卡中将动画曲线附加到导入的动画剪辑。

        可以使用这些曲线将其他动画数据添加到导入的剪辑。可以根据animator的状态,使用该数据来动画化其他项的时序。例如,在冰冷环境的游戏中,可以使用额外的动画曲线来控制粒子系统的发射速率,以显示玩家在冷空气中的冷凝呼吸。

        要向导入的动画添加曲线,请展开 Animation 选项卡底部的 Curves 部分,然后单击加号图标以向当前动画剪辑添加新曲线:

如果导入的动画文件被拆分为多个动画剪辑,则每个剪辑都可以拥有自己的自定义曲线。

(Eu:如图是Jump的曲线。)

曲线的 X 轴表示标准化时间,范围始终在 0.0 和 1.0 之间(无论持续时间如何,均分别对应于动画剪辑的开头和结尾)。

(A) 曲线操作

(B) 曲线预设

点击动画曲线将显示标准 Unity 曲线编辑器,可以使用该编辑器向曲线添加关键点。关键点(Keys)是沿着曲线时间轴上的点,其具有 Animator 明确设置的值,而不是仅使用插值。关键点(Keys)非常适合用于沿着动画时间轴标记重要的点。例如,对于行走动画,可以使用关键点来标记左脚在地面上的位置点,然后是双脚在地面上的位置点,右脚在地面上的位置点,依此类推。设置好关键点后,通过按 Previous Key FrameNext Key Frame 按钮(Eu:Curves下曲线旁边的两个按钮。)即可方便地在关键帧之间移动。这样就会移动曲线面板上的垂直的线条并显示关键帧的标准化时间。在文本框中输入的值将在线条所在的当前时间修改曲线值。【Eu:并未见到显示的标准化时间。】

动画曲线和 Animator Controller 参数

        如果一条曲线的名称与 Animator Controller 中的某个参数同名,则该参数的值将取自这条曲线在时间轴中每个点的值。例如,如果从脚本调用 GetFloat,则返回的值等于进行调用时的曲线值。请注意,在任何给定的时间点,可能有多个动画剪辑试图设置同一控制器中的同一参数。在这种情况下,Unity 会混合多个动画剪辑中的曲线值。如果动画没有特定参数对应的曲线,则 Unity 将与该参数的默认值混合。

4.4.3.5 事件

        您可以在 Animation 选项卡中将动画事件附加到导入的动画剪辑。

        通过事件可以向导入的剪辑添加其他数据,从而确定何时应该在动画中触发某些动作。例如,您可能希望添加事件去指示一个动画角色在行走和运动周期中,应该何时播放脚步声。

        要向导入的动画添加事件,请展开 Events 部分以显示导入的动画剪辑的事件时间轴:

要将播放头移动到时间轴中的其他位置,请使用窗口预览面板中的时间轴:

将播放头置于要添加事件的位置,然后单击 Add Event。随后将出现一个新事件,由时间轴上的白色小标记指示。在 Function 属性中,填写在发生事件时调用的函数的名称。(Eu:要选中白色小标记才可以填写相关内容。)

确保在其animator中使用此动画的任何游戏对象都附加了相应的脚本,其中包含具有匹配事件名称的函数。

下面的示例演示了一个事件会调用附加到玩家游戏对象的脚本中的 Swipe 函数。此事件可与音频源结合用于播放与动画同步的刺耳声音。

        您还可以选择指定一个参数以发送到事件调用的函数。共有四种不同的参数类型:FloatIntStringObject

        通过填写其中任何字段的值,并实现接受该类型参数的函数,即可将事件中指定的值传递给脚本中的函数。

        例如,您可能希望传递 float(浮点)值来指定在不同动作期间应有的音效声音大小,例如在行走周期中采用安静脚步事件,而在奔跑循环中采用响亮脚步事件。此外,还可以传递对效果预制件的引用,从而让您的脚本在动画期间的特定时间点实例化不同的效果。

4.4.3.6 遮罩

        通过遮罩功能可以丢弃剪辑中的一些动画数据,从而让剪辑仅动画化对象或角色的某些部分而不是整体。例如,如果有一个带有投掷动画的角色,现在希望能够将投掷动画与各种其他身体动作(如奔跑、蹲伏和跳跃)结合使用,则可以为投掷动画创建一个遮罩,使其局限于右臂、上半身和头部。然后,动画的这一部分可在基本奔跑或跳跃动画的上一层播放。

        遮罩可应用于您的构建,使文件大小和内存更小。此外还可以提高处理速度,因为在运行时混合的动画数据更少。在某些情况下,导入遮罩可能对您不适用。在这种情况下,可使用 Animator Controller 的层设置在运行时应用遮罩。本页面与导入设置中的遮罩有关。

        要将遮罩应用于导入的动画剪辑,请展开 Mask 标题以显示 Mask 选项。打开该菜单时,您将看到三个选项:Definition、Humanoid 和 Transform。

Definition

        在此处可以指定是否要在 Inspector 中专门为此剪辑创建一次性遮罩,或者是否要使用项目中的现有遮罩资源。

        如果希望仅为此剪辑创建一次性遮罩,请选择“Create From This Model”。

        如果希望多个剪辑使用相同的遮罩,则应选择“Copy From Other Mask”并使用遮罩资源。这样即可对多个剪辑重复使用同一个遮罩定义。

        选择 Copy From Other Mask 时,Humanoid 和 Transform 选项不可用,因为这些选项仅与在此剪辑的 Inspector 中创建一次性遮罩有关。

Humanoid

        Humanoid 选项可让您选择或取消选择人体图的身体部位,从而快速定义遮罩。如果已将动画标记为人形并具有有效的 Avatar,则可以使用此类选项。

(Eu:操作跟之前在讲Mask的小节里说的一样。)

Transform

        使用此选项可根据各个骨骼或动画的移动部件来指定遮罩。这样可以更精确地控制确切的遮罩定义,还可以将遮罩应用于非人形动画剪辑。

(Eu:操作跟之前在讲Mask的小节里说的一样。)

4.4.3.7 运动

        Unity使用根运动来移动和定位所有动画剪辑中位于Animator层次结构根的GameObject。有时,需要选择一个不同的节点作为根运动源,而不是指定的节点。

为所有动画剪辑选择不同的根运动节点:

  1. 展开Motion部分。

  2. 从根运动节点菜单中选择新的根运动源。该菜单列出了导入文件层次结构根目录下的所有对象和节点。这包括None(指定节点)和Root Transform,你的角色的网格对象,根骨名称,以及每个带有子对象的项目的子菜单。每个子菜单还包含子对象本身和子菜单(如果这些对象有子对象)。

  3. 选择应用。

        当您选择不同的根运动节点时,新选择的根运动源将覆盖每个导入动画剪辑的手动根运动设置。这隐藏并覆盖根变换旋转、根变换位置(Y)和根变换位置(XZ)设置。

4.4.4 Materials选项卡

        可以使用此选项卡更改 Unity 在导入模型时处理材质和纹理的方式。

        当 Unity 导入没有指定任何材质的模型时,它使用 Unity 漫反射材质。如果模型有材质,Unity 会将这些材质导入为子资源。

如果模型有纹理,还可以使用 Extract Textures 按钮将纹理提取到项目中。

属性功能
Material Creation Mode定义希望 Unity 如何为模型生成或导入材质。从该下拉菜单中选择 None 时,Inspector 将在此选项卡上隐藏其余设置。
None不使用此模型中嵌入的任何材质。改用 Unity 的默认漫射材质。
Standard导入时,Unity 应用一组默认规则来生成材质。如果要通过脚本来自定义 Unity 生成材质的方式,请改用 Import via MaterialDescription (Experimental) 模式。
Import via MaterialDescription (Experimental)导入时,Unity 使用 FBX 文件中嵌入的材质描述来生成材质。与先前的导入方法相比,此方法可提供更准确的结果,并且支持更广泛的材质类型,例如 Autodesk 的 Arnold 和 Physical 以及 Unity 的 HDRP 材质。有关更多信息,请参阅下面的材质描述部分。
sRGB Albedo Colors启用此选项可在伽马空间中使用反照率颜色。默认情况下为旧版导入方法启用了此选项。 对于使用线性颜色空间的项目,请禁用此选项。 如果从 Material Creation Mode 下拉菜单中选择 Import via MaterialDescription (Experimental),则该属性不可用。
Location定义如何访问材质和纹理。根据选择的这些选项,可以使用不同的属性。
Use Embedded Materials将导入的材质保持在导入的资源中。从 Unity 2017.2 版本开始,这是默认选项。
Use External Materials (Legacy)将导入的材质提取为外部资源。这是旧版的材质处理方式,适用于使用 Unity 2017.1 或早期版本创建的项目。

Use Embedded Materials

Location 选项中选择 Use Embedded Materials 时,将显示以下导入选项:

(A) 单击 Extract MaterialsExtract Textures 按钮可提取导入的资源中嵌入的所有材质和纹理。如果没有需要提取的子资源,这两个按钮显示为灰色。在这两个按钮下方,Unity 显示有关导入过程的所有消息。

(B) On Demand Remap 部分提供 Naming 和 Search 属性,允许您自定义 Unity 将导入的材质映射到模型的方式。单击 Search and Remap 按钮可将导入的材质重新映射到现有材质资源。如果 Unity 找不到具有正确名称的任何材质,则不会有任何变化。

(C) Unity 显示在 Remapped Materials 列表中的资源中找到的所有导入材质。如果 Unity 无法自动将每种材质与项目中现有的材质资源进行匹配,则可以在此列表中自行设置对材质的引用。

Remapped Materials

        新导入操作或对原始资源的更改不会影响提取的材质。如果要从源资源重新导入材质,必须删除 Remapped Materials 列表中对提取的材质的引用。要从该列表中删除某一项,请选择该项,然后按键盘上的 Backspace 键。

Naming

定义材质的命名策略。

属性功能
By Base Texture Name使用导入材质的漫射纹理名称来命名材质。如果未将漫射纹理分配给材质,Unity 将使用导入材质的名称。
From Model’s Material使用导入材质的名称来命名材质。
Model Name + Model’s Material使用模型文件的名称与导入材质的名称相结合来命名材质。

Search

定义 Unity 尝试在使用 Naming 选项定义的名称时查找现有材质的位置。

属性功能
Local Materials Folder在本地 Materials 子文件夹(即模型文件所在的同一文件夹)中查找现有材质。
Recursive-Up在所有父文件夹(一直向上追溯到 Assets 文件夹)中的所有 Materials 子文件夹中查找现有材质。
Project-Wide在所有 Unity 项目文件夹中查找现有材质。

材质描述【Eu:接口里的东西,暂时不细看了。】

        从 2019.3 版本开始,Unity 引入了在导入期间通过脚本修改材质映射的功能。用户可以修改 Unity 如何将导入的材质属性从 FBX 文件中嵌入的数据映射到 Unity 材质属性。材质描述定义了一个名称和几组值,它们描述了材质及其引用的任何纹理。有关这种描述的结构的更多信息,请参阅 MaterialDescription 类参考页面。

        在 ImportViaMaterialDescription 模式下,模型导入器会将材质的创建任务委派给 AssetPostProcessor.OnPreprocessMaterialDescription 回调。

Unity 提供了该后期处理程序 (Post Processor) 的默认实现方案,可处理以下材质:

  • 来自 FBX 文件的 FBX 标准材质 (FBX Standard Material)、Arnold 标准 (Arnold Standard)、Autodesk Interactive 和 3Ds 物理材质 (3Ds Physical Material)

  • Sketchup、Collada 和 3DS 材质

与 ImportStandard 模式相比,这些默认实现方案处理导入材质的方式有所不同,有以下改进:

  • 支持更多材质类型,例如 Autodesk 的 Arnold 和 Interactive 或 Physical,还支持 Unity 的 HDRP 材质。

  • 支持发光材质。

  • 如果设置了漫射纹理,则会忽略漫射颜色(与 Autodesk® Maya® 和 Autodesk® 3ds Max® 中的处理方式一致)。

  • 将凹凸系数、发光颜色和发光系数纳入考虑范围。

  • 在 FBX 文件中有相应定义时可以导入发光颜色动画。

    注意:3ds Max 不能导出发光颜色动画,因此 Unity 也无法导入发光颜色动画。

  • 以完全透明形式导入透明材质。旧版系统则以完全不透明形式导入透明材质。

此外,还可以导入所有 Autodesk Interactive 材质属性动画,并且从 3DS 文件导入材质时不再忽略不透明度。

Use External Materials (Legacy)

Location 选项中选择 Use External Materials (Legacy) 时,将显示以下导入选项:

此选项提取材质并将它们保存到外部,而不是保存在模型资源内部。Naming 和 Search 属性可帮助 Unity 找到导入的材质以映射到模型。

在 Unity 2017.2 版之前,这是默认的材质处理方式。

4.5 SketchUp Import Settings 窗口

SketchUp 是常用于建筑结构建模的软件。 Unity 直接读取 SketchUp 文件。

【Eu:一般应该用不到,不想看了,这小节直接给个文档链接算了。地址】

5 后记

        基本全是复制粘贴,可实践内容也不多,由于对建模方面了解有限,所以很多细节存有疑问,等以后具体用到回顾的时候再查吧。

http://www.lqws.cn/news/209251.html

相关文章:

  • c++ 单例模式
  • 二.单例模式‌
  • nonlocal 与global关键字
  • vue3 创建图标 按钮
  • rl_sar实现sim2real的整体思路
  • Jetpack Compose瀑布流实现方案
  • 设计模式-观察着模式
  • 行为型设计模式之Interpreter(解释器)
  • C++常用的企业级日志库
  • DeepSeek-R1-0528:开源推理模型的革新与突破
  • 在Ubuntu22.04 系统中安装Docker详细教程
  • 低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?
  • 银行卡二三四要素实名接口如何用PHP实现调用?
  • Linux操作系统故障应急场景及对应排查方法
  • Linux 系统中的算法技巧与性能优化
  • code-server安装使用,并配置frp反射域名访问
  • 【PCIe总线】 -- PCI、PCIe相关实现
  • Java高级 | 【实验七】Springboot 过滤器和拦截器
  • WPF 播放器(AudioPlayer 2025)
  • vue · 插槽 | $slots:访问所有命名插槽内容 | 插槽的使用:子组件和父组件如何书写?
  • mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
  • 【数据结构】6. 时间与空间复杂度
  • STM32学习笔记:外部中断(EXTI)原理与应用详解
  • 如何使用Jmeter进行压力测试?
  • NLP学习路线图(三十一): 迁移学习在NLP中的应用
  • 知识改变命运?如何有规划的学好计算机专业?
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
  • 力扣-17.电话号码的字母组合
  • DL00335-基于深度学习YOLOv11的煤矸石检测含完整数据集