-
Notifications
You must be signed in to change notification settings - Fork 4
Description
模型导入的相关设置。
一、模型导入设置

在Project窗口中选中一个模型文件后,Inspector窗口中会显示对应的导入设置。
模型导入设置中有4个Tab:

Unity会从模型文件导入Mesh网格数据。这个Tab主要设置网格数据导入的一些设置。

骨架设置会在动画模块进行详细讲解。

动画设置会在动画模块进行详细讲解。

模型中的材质和纹理也是非常重要的信息,材质Tab中可以提取材质和纹理,调整材质的映射关系。
二、Model选项卡
选中模型时,模型文件的导入设置会显示在Inspector窗口的Model选项卡中。这些设置影响网格及其法线。通常情况下,保留默认设置即可。

| 属性 | 功能 |
|---|---|
| 网格 | |
| Scale Factor | Unity的物理系统需要游戏世界中的1米在导入的文件中为1个单位。如果建模时使用了不同的长度单位,可以在这里设置。不同的3D文件的默认值如下: .FBX,.max,.jas,.c4d = 0.01.mb,.MA,.lxo,.DXF,.blend,.dae = 1 .3DS = 0.1 |
| Use File Scale | 使用模型文件中定义的模型缩放比例。未选中时使用Scale Factor的值。 |
| File Scale | 为模型设置自定义比例。仅在选中 Use File Scale时才可用。 |
| Mesh Compression | 设置压缩比率的级别以减小网格的文件大小。通过使用网格边界和每个组件的较低比特深度来压缩网格数据,增加压缩比会降低网格的精度。在可以接受的模型改变的范围内,这个设置的越高越好,对优化游戏大小很有用。 |
| Off | 不压缩 |
| Low | 使用低压缩比 |
| Medium | 使用中压缩比 |
| High | 使用高压缩比 |
| Read/Write Enabled | 如果启用,Mesh数据将保存在内存中,以便自定义脚本可以读取并更改它。禁用此选项可以节省内存,因为Unity可以在游戏中释放Mesh数据的副本。但是,当Mesh与Mesh Collider一起使用的某些情况下,必须启用此选项。包括:负缩放(例如, (–1, 1, 1) );剪切变换(例如,网格的父物体有缩放时旋转了网格)。 |
| Optimize Mesh | 让Unity确定三角形在网格中的排列顺序。Unity对顶点和索引进行重新排序以获得更好的GPU性能。 |
| Import BlendShapes | 允许Unity导入BlendShapes。 注意导入Blendshape法线需要FBX文件中的smoothing groups设置。 |
| Generate Colliders | 启用后,模型会自动附加的Mesh Colliders。这对于为环境模型快速生成碰撞网格非常有用,但应该避免可移动的模型。 |
| Keep Quads | 启用此功能可停止Unity将具有四个顶点的多边形转换为三角形。例如,如果你正在使用Tessellation Shader,则可能需要启用此选项,因为细化四边形可能比细化多边形效率更高。 Unity可以导入任何类型的多边形(三角形到N角形)。超过4个顶点的多边形一定会被转换为三角形。但是,如果网格具有四边形和三角形(或者将N-gons转换为三角形),Unity会创建两个子网格来分隔四边形和三角形。每个子网格仅包含三角形或仅包含四边形。 |
| Index Format | 定义Mesh索引缓冲区的大小。 注意:基于显卡带宽和内存的原因,通常保留16位索引作为默认值,仅在必要时使用32位,这是Auto选项的用途。 |
| Auto | 让Unity根据Mesh顶点数决定是否在导入Mesh时使用16位或32位索引。这是Unity 2017.3及更高版本中添加的默认值。 |
| 16 bit | 导入Mesh时使用16位索引。如果Mesh较大,会被分割成多个‹64k顶点的子mesh。在Unity 2017.2或之前版本中已经存在的资源在升级Unity版本时会使用此设置。 |
| 32 bit | 导入Mesh时使用32位索引。如果你正在使用基于GPU的渲染管线(例如,基于shader的三角形剔除),使用32位索引可确保所有网格使用相同的索引格式。这会减少shader的复杂性,因为它们只需要处理一种格式。 |
| Weld Vertices | 合并在空间中共享相同位置的顶点。可以减少网格的顶点数。该选项默认启用。在某些情况下,导入Mesh时可能需要关闭此优化。例如,如果有意地在网格中制作了占位的顶点,在代码中有特殊用途的时候。 |
| Import Visibility | 启用时,Unity可以从FBX文件读取可见性属性。值和动画曲线可以通过控制Renderer.enabled属性来启用或禁用MeshRenderer组件。 |
| Import Cameras | 从.FBX文件导入相机。支持Projection、Field of View、Clipping Plane属性,其中Field of View属性支持动画。 |
| Import Lights | 从.FBX文件导入灯光。支持 Omni Spot Directional Area四种类型的灯光。支持Range、Color、Intensity、Spot Angle属性,支持动画。 |
| Preserve Hierarchy | 始终创建一个明确的预制体根节点,即使此模型只有一个root节点。通常,FBX Importer会忽略模型中任何空的根节点作为优化策略。但是,如果您有多个具有相同层次结构的FBX文件,则可以使用此选项来保留原始层次结构。 例如,file1.fbx包含一个骨骼和一个Mesh,file2.fbx包含相同的骨骼,但只包含该骨骼的动画。如果在不启用此选项的情况下导入file2.fbx,Unity将忽略根节点,层次结构不匹配,动画将不能播放。 |
| Swap UVs | 交换网格中的UV通道。如果漫反射纹理使用了光照贴图中的UV,请使用此选项。Unity支持多达8个UV通道,但并非所有3D建模应用程序都能输出两个以上。 |
| Generate Lightmap UVs | 为Lightmapping创建第二个UV通道。更多信息会在光影模块进行讲解。 |
| Normals & Tangents (法线和切线) | |
| ** Normals ** | 定义是否以及如何计算法线。这对优化游戏大小很有用。 |
| Import | 从文件导入法线。这是默认选项。 |
| Calculate | 根据平滑角度计算法线。 |
| None | 禁用法线。如果Mesh既不使用法线贴图也不受实时照明的影响,请使用此选项。 |
| Normals Mode | 定义Unity如何计算法线。只有当法线设置为计算时才可用。 |
| Unweighted Legacy | 计算法线的旧方法(版本2017.1之前)。在某些情况下,与目前的实施情况相比,结果略有不同。这是在将项目迁移到最新版本的Unity之前导入的所有FBX预制的缺省值。 |
| Unweighted | 法线不加权。 |
| Area Weighted | 法线根据面加权。 |
| Angle Weighted | 法线根据每个面上的顶点的角度加权。 |
| Area and Angle Weighted | 法线由面区域和每个面的顶点角度加权。这是默认选项。 |
| Smoothing Angle | 只有在Normals设置为Calculate时才可用。控制是否平滑边缘。通常,较高的值会导致较少的顶点。 注意:仅在非常光滑的物体或非常高面数的模型上使用此设置。否则,最好在3D建模软件中手动平滑,然后Normals选项设置为Import。由于Unity只基于角度平滑,所以可能会错误地平滑模型的某些部分。 |
| Tangents | 定义应如何导入或计算顶点切线。只有当法线设置为计算或导入时才可用。 |
| Import | 如果Normals设置为Import,则从FBX文件导入顶点切线。如果网格没有切线,将不能使用有法线贴图的shader。 |
| Calculate Tangent Space | 使用MikkTSpace计算切线。如果Normals设置为Calculate,这是默认选项。 |
| Calculate Legacy | 用旧算法计算切线。 |
| Calculate Legacy - Split Tangent | 使用旧算法计算切线,并在UV上分割。如果网格上的接缝处的法线贴图照明不正常,请使用此选项。这通常只适用于角色。 |
| None | 不导入顶点切线。网格没有切线,所以不能使用有法线贴图的shader。 |
三、Material选项卡
使用该选项卡中的属性更改Unity在导入模型时如何处理材质和纹理。
当Unity导入没有材质的模型时,会使用Unity漫反射材质。如果模型具有材质,则Unity将它们作为子资源导入。你可以使用Extract Textures按钮将嵌入纹理提取到项目中。

• Import Materials 是否导入材质,如果不勾选,则会使用Unity内置的Default-Diffuse材质。
• Location 如何获取材质和纹理
○ Use Embedded Materials:将材质球保留在模型文件中,这是Unity 2017.2及更高版本的默认选项。
○ Use External Materials (Legacy):将材质球作为子资源导出。使用此选项后,会在模型文件的同级目录中生成一个Materials文件夹,材质球会被导出到该文件夹中。这是处理材质的旧方式,2017.1和之前的Unity版本会是此种方式。
1. 使用嵌入材质
在Location属性中选中Use Embedded Materials后,会显示下方的内容。

| 属性 | 功能 |
|---|---|
| Textures | 点击Extract Textures按钮可以提取嵌入到模型文件中的纹理。如果模型文件中没有嵌入的纹理,则会变灰。 |
| Materials | 点击提取材料按钮可以提取嵌入到模型文件中的材质。。如果模型文件中没有嵌入的材质,则会变灰。 |
| Remapped Materials | |
| On Demand Remap | 如果将Location设置为Use External Materials (Legacy),这些设置与Inspector中出现的设置一致。 |
| Naming | 如何命名材质 |
| By Base Texture Name | 按基于的纹理名称。使用导入材质的漫反射纹理的名称来命名材质。当漫反射纹理未分配给材质时,Unity使用导入材质的名称。 |
| From Model’s Material | 直接使用导入的材质的名称。 |
| Model Name + Model’s Material | 使用模型名称+模型的材质作为名称。 |
| Search | 使用Naming选项中定义的名称尝试查找是否已有对应的材质。 |
| Local Materials Folder | 同级材质文件夹 仅在和模型文件同级的Materials文件夹中找 |
| Recursive-Up | 递归向上 在模型文件夹的所有父文件夹中的Materials文件夹中查找。 |
| Project-Wide | 项目范围 在整个工程中查找 |
| Search and Remap 按钮 | 单击此按钮可按上面On Demand Remap的设置搜索工程中是否已有对应的材质。单击此按钮不会从模型文件中提取材质,如果Unity无法找到对应名称的材质,则不会更改任何内容。 |
| List of imported materials | 此列表显示在工程中找到的所有导入的材质。你可以将每个物料重新映射到项目中的现有材质。 |
材质球是灰色的无法修改,这就是因为Unity现在默认会使用嵌入材质。如果需要修改材质,需要将材质导出。
2. 使用外部材质(旧)
使用此选项时,会出现下面的选项。和上面使用嵌入材质中的On Demand Remap选项中的内容一致。

使用此选项时,Unity会自动将模型文件中嵌入的贴图导出到同级的.fbm文件夹中。对于材质,Unity会先搜索是否已经存在对应的材质,如果没有,会将材质导出到同级的Materials文件夹中。Unity2017.2及之前的版本会默认使用此方法来处理材质。