__网格__构成了 3D 世界的很大一部分。除了一些 Asset Store 插件外,Unity 不提供建模工具。然而,Unity 与大多数 3D 建模软件包之间有很好的交互性。Unity 支持三角形或四边形的多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。
Unity supports importing Meshes from two different types of files:
Unity 可以导入和使用这两种类型的文件,每种文件都有各自的优缺点。
Unity can read .fbx, .dae (Collada), .3ds, .dxf, .obj, and .skp files. Refer to your 3D modeling software documentation for information about exporting 3D files.
优点:
缺点:
Unity can import proprietary files from the following DCC software: Max, Maya, Blender, Cinema4D, Modo, Lightwave & Cheetah3D. Files imported this way are converted into .fbx files by Unity during the import process.
优点:
缺点:
Note: Assets saved as .ma, .mb, .max, .c4d, or .blend files fail to import unless you have the corresponding DCC software installed in your computer. This means that everybody working on your Unity project must have the correct software installed. For example, if you use Maya to create ExampleModel.mb and copy it into your project, anyone else opening that project also needs to have Maya installed on their computer.
Here are some guidelines for directly supported 3D applications, others can most often export file type listed above.
Unity 将尝试通过遵循特定的搜索计划在导入时自动查找网格使用的纹理。首先,导入器将在与网格相同的文件夹中或任何父文件夹中查找名为 Textures 的子文件夹。如果此过程失败,将对项目中的所有纹理执行穷尽搜索。虽然速度只是稍慢,但穷尽搜索的主要缺点是项目中可能有两个或多个同名的纹理。在这种情况下,不能保证找到合适的纹理。
FBX importer options for the model
对于每种导入的材质,Unity 将应用以下规则:
如果禁用材质生成(即取消选中 __Import Materials__),则会分配 Default-Diffuse 材质。如果启用该选项,则执行以下操作:
Unity 使用两种主要类型的碰撞体:__网格碰撞体__和__原始碰撞体。网格碰撞体是使用导入网格数据的组件,可用于环境碰撞。在 Import Settings 中启用 Generate Colliders__ 后,将网格添加到场景时会自动添加网格碰撞体。就物理系统而言,网格碰撞体被认为是实体的。
如果对象正在移动(例如汽车),则无法使用网格碰撞体。必须改用原始碰撞体。此情况下应禁用 Generate Colliders 设置。
Animations are automatically imported from the scene. For more details about animation import options see the section on asset preparation and import in the Mecanim animation system.
如果一个角色具有从模型的复杂多边形版本生成的法线贴图,则应导入__平滑角__为 180 度的游戏质量版本。这样将防止由于切线分裂而导致光照中出现看起来奇怪的接缝。如果使用这些设置后仍然存在接缝,请启用 Split tangents across UV seams。
如果是将灰度图像转换为法线贴图,则无需担心这一点。
Unity 支持 BlendShape(也称为变形目标或顶点级动画)。Unity 可从 .FBX(BlendShape 和控制动画)和 .dae(仅 BlendShape)导出的 3D 文件导入 BlendShape。Unity BlendShape 支持顶点、法线和切线上的顶点级动画。网格可能同时受到皮肤和 BlendShape 的影响。使用 BlendShape 导入的所有网格都将使用 SkinnedMeshRenderer(无论其是否有皮肤)。BlendShape 动画作为常规动画的一部分导入,仅对 SkinnedMeshRenderer 上的 BlendShape 权重进行动画化。
有两种方法可以导入带法线的 BlendShape:
1.将 Normals 导入模式设置为 __Calculate__,这样就会使用相同的逻辑来计算网格和 BlendShape 上的法线。 1.将平滑组信息导出到源文件。这样,Unity 就会通过网格和 BlendShape 的平滑组计算法线。
如果需要 BlendShape 上的切线,则应将 Tangents 导入模式设置为 Calculate。
这是正常的。您正在查看的是实际发送到 GPU 进行渲染的顶点/三角形数量。除了材质要求发送两次这些顶点/三角形的情况之外,其他诸如硬法线和非连续 UV 的元素与建模应用程序显示的情况相比会显著增加顶点/三角形数量。三角形在 3D 和 UV 空间中都需要处于连续状态以形成条带,因此当有 UV 接缝时,必须使三角形退化以形成条带,而这会增加计数。