返回介绍

网格(Meshes)

发布于 2021-06-20 00:15:02 字数 4521 浏览 1326 评论 0 收藏 0

您可使用两种主要的文件类型将网格导入至 Unity:

  1. 导出的三维文件格式,如.FBX 或 .OBJ
  2. 专有的三维应用文件,如 3D Studio Max 或 Blender 中的 .Max.Blend 文件格式。

这两种类型的文件可帮助您将网格导入至 Unity,但在选择文件类型时,您需要考虑使用哪种文件格式:

导出的三维文件

Unity 可读取.FBX, .dae (Collada)、.3DS.dxf.obj 文件,您可在此 找到 FBX 导出程序,也可查找可用于多种应用的 obj 或 Collada 导出程序

优势:

  • 仅导出所需数据
  • 使用可验证的数据(在 Unity 重新导入至三维资源包)
  • 文件通常更小
  • 鼓励使用模块化方法 - 例如,根据碰撞类型或交互性选择不同组件
  • 支持其他三维包(我们不直接支持其专有格式的三维包)

劣势:

  • 原型和迭代的管道运行速度更慢
  • 更容易丢失源(工作文件)和游戏数据(如导出的 FBX)之间的版本信息记录

专有三维应用文件

Unity 也可通过转换导入专有三维应用程序文件: MaxMayaBlenderCinema4DModoLightwaveCheetah3D 文件(如 .MAX.MB.MA 等)。 优势:

  • 快速的迭代过程(节省源文件和 Unity 重新导入时间)
  • 简化的初始阶段

劣势:

  • 使用 Unity 工程的所有机器都必须安装有许可证的软件副本
  • 无用数据会大大增加文件大小
  • 文件太大会降低 Unity 更新速度
  • 验证减少 � 故障排除难度增加

下面是一些针对直接支持的三维应用程序的指导,其他三维应用程序通常可以导出上面列出的文件类型。

纹理

Unity 会按照特定搜索计划,在导入时自动查找网格使用的纹理。首先,导入器会在网格所在的相同文件夹中或任何父文件夹中查找名为“纹理”(Textures) 的子文件夹。如果此查找失败,则会对工程中的所有纹理执行详尽搜索。虽然稍微较慢,不过详尽搜索的主要劣势在于工程中可能存在两个或更多同名纹理。在此情况下,不保证将找到正确的纹理。


将纹理置于处于资源级别或该级别以上的纹理 (Textures) 文件夹中

用于模型的 FBX 导入器选项

材质生成和分配

对于每个导入的材质,Unity 将应用以下规则:-

如果禁用材质生成(即取消选中导入材质 (Import Materials)),则将分配默认漫反射材质。如果启用,则将执行以下操作:

  • Unity 将基于材质命名 (Material Naming) 设置为 Unity 材质选取名称
  • Unity 将尝试查找具有该名称的现有材质。材质搜索范围由材质搜索 (Material Search) 设置定义。
  • 如果 Unity 成功找到现有材质,则会将其用于导入的场景,否则会生成新材质

碰撞组件

Unity 使用两种主要类型的碰撞组件:网格碰撞组件和基元碰撞组件。网格碰撞组件是使用导入的网格数据的组件,可以用于环境碰撞。在“导入设置”(Import Settings) 中启用生成碰撞组件 (Generate Colliders) 时,会在将网格添加到场景时自动添加网格碰撞组件。对于物理系统而言,会将其视为固体。

如果在四处移动物体(例如汽车),则不能使用网格碰撞组件。而是必须使用基元碰撞组件。在此情况下,应禁用生成碰撞组件 (Generate Colliders) 设置。

动画

动画会从场景自动导入。有关动画导入选项的更多详细信息,请参阅 Mecanim 动画系统中关于资源准备和导入的部分。

法线贴图和角色

如果某个角色具有从高多边形版本的模型生成的法线贴图,则应使用 180 度的平滑角度 (Smoothing angle) 导入游戏质量版本。这会防止由于切线拆分而在光照中形成看起来奇怪的对接处。如果使用这些设置时仍存在对接处,请启用跨 UV 对接处拆分切线 (Split tangents across UV seams)。

如果将灰度图像转换为法线贴图,则无需担心这一点。

混合形状 (Blendshape)

Unity 支持混合形状(Blendshape,也称为变形目标或顶点级别动画)。Unity 可以从 .FBX(混合形状 (Blendshape) 和控制动画)和 .dae(仅混合形状 (Blendshape))。Unity 混合形状 (Blendshape) 支持顶点、法线和切线上的顶点级别动画。网格可以同时受皮肤和混合形状 (Blendshape) 影响。使用混合形状 (Blendshape) 导入的所有网格都将使用蒙皮网格渲染器(无论其是否具有皮肤)。混合形状 (Blendshape) 动画作为普通动画的一部分导入 - 它仅在蒙皮网格渲染器上对混合形状 (Blendshape) 小组件进行动画处理。

可通过两种方法导入具有法线的混合形状 (Blendshape):

  1. 将法线 (Normals) 导入模式设置为计算 (Calculate),这样会将相同逻辑用于为网格和混合形状 (Blendshape) 计算法线。
  2. 将平滑组信息导出至源文件,这样 Unity 将通过平滑组为网格和混合形状 (Blendshape) 计算法线。

如果希望混合形状 (Blendshape) 上具有切线,则将 切线 (Tangents) 导入模式设置为 计算 (Calculate)。

H提示

  • 尽可能将网格合并在一起。使它们共享材质和纹理。这具有巨大的性能优势。
  • 如果需要在 Unity 中进一步设置对象(添加物理、脚本或其他超棒内容),请无需苦恼,而是在三维应用程序中正确地命名对象。使用大量类似于pCube17Box42 的对象并不有趣。
  • 使网格在三维应用程序中的世界坐标原点上居中。这会使它们更容易放置在 Unity 中。
  • 如果网格没有顶点颜色,则 Unity 在首次渲染网格时会将一组全白顶点颜色添加到网格。

Unity 编辑器显示太多顶点或三角形(与三维应用程序的显示相比)

这是正确的。您所看到的是实际发送给 GPU 进行渲染的顶点/三角形数量。除了材质需要将它们发送两次这类情况,与建模应用程序的显示相比,硬法线和非连续 UV 这类其他内容显著增加了顶点/三角形数量。三角形在三维和 UV 空间中都必须连续以形成剥离,因此在具有 UV 对接处时,必须创建退化三角形才能形成剥离 - 这会增加数量。

另请参阅

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文