对于许多在建模、渲染和动画方面经验丰富的 3D 建模者来说,3D 优化可能是一个令人畏惧的过程 - 特别是当你正在优化实时应用程序的 3D 模型时! 在 Google 上快速搜索“如何优化 3D 文件”将会出现一些建议,例如减少多边形数和消除多余的顶点。
然而,针对实时应用程序优化 3D 文件存在许多细微差别,这些细微差别可能会让 3D 建模者感到不知所措。 无论你是在优化 Sketchup 或 Revit 建筑文件,还是在 Solidworks 中创建的工程模型,都需要牢记一些要点,在优化 VR 3D 模型时,我们将这些要点汇总到了最佳实践列表中。
1、实例化重复零件
想象一下重新处理相同的 3D 网格一百次。 听起来像是浪费资源,对吧? 这正是游戏引擎处理文件中重复网格时发生的情况。 无论你的模型是由数千个螺栓组成,还是多次包含相同的门模型,在渲染你的设计时,这些重复的零件都会重复处理。
虚幻引擎中的 3D 模型显示了各种重复的零件
你可以实例化重复项并创建它们的克隆,而不是处理相同的重复项并使用设备上的其他资源。 现在,当你编辑或渲染模型时,所有实例都会立即收到更新并更有效地进行处理。 速度和效率是在 VR 中实现优化的实时可视化的两个关键要求。
2、修正重叠或隐藏的部分
丢失或隐藏零件是由多名设计师处理同一项目的 3D 团队中的常见问题。 例如,在设计过程中,用户可能会隐藏某个部件而不是将其从项目中删除,而下一个用户导出文件时并不知道存在隐藏的部件或图层。 该问题也可能是由于转换过程中的错误造成的。 如果一个零件太复杂,它可能会意外地被转换两次。 无论哪种方式,隐藏的部分都会消耗额外的资源,从而损害 CPU 的处理能力。
最好检查并找到隐藏部分并将其删除,以避免实时可视化中不必要的延迟。
图像显示重叠的弹簧
3、减少面数
移动 VR 耳机具有标准 FPS,你需要保持在该标准内,以避免出现滞后问题和晕动病。 这通常在 60 到 90 FPS 之间。 详细且高多边形的 3D 模型是 FPS 缓慢的主要原因。 减少面数可以降低模型的复杂性,从而:
- 游戏引擎渲染速度更快,实时性能提高
- 3D 建模者可以更轻松地编辑网格、纹理和 UV 展开它。
对于 Autodesk Maya 用户来说,新的 2020 版本配备了新的重新网格和重新拓扑工具,用户可以控制修改设置。 对于需要简化的单个零件,Maya 的工具提供了一个很好的解决方案。
4、应用 LOD
当 3D 模型远离相机时,应用细节级别 (LOD) 可降低 3D 模型的复杂性,从而消除多余的细节。 应用 LOD 会删除网格特征,例如开口、间隙、凹凸、透明度等。 当网格靠近相机时,LOD 会渲染出所有所需的细节。 但当网格远离相机时,网格会与自身质量较低的版本进行交换,从而卸载来自 CPU 或 GPU 的渲染请求。
应用 LOD 时要记住的另一个因素是体积分辨率。 在可视化中不重要的较小对象不需要与较大对象一样高的分辨率。 例如,在为食品制造厂创建可视化时,模型的较大部件(例如传送带和机械臂)可以具有更详细的分辨率,而机械不同部件上的螺栓和螺钉可以采用低得多的 LOD。
Autodesk Maya 的全新重新拓扑工具和全新虚幻引擎 LOD 生成器可帮助 3D 开发人员达到最佳 FPS。
5、减少材质数量
3D 模型中的材质过多会增加文件大小和复杂性,使其难以在实时游戏引擎中使用。 保留尽可能少的材料对于实时优化 3D 模型非常重要。 另一个好的做法是使用纯色而不是图像纹理,因为它们更容易渲染。
生成 LOD 时,你会创建较低分辨率的多边形网格,并以较低的分辨率创建材质 LOD 副本。 创建材质 LOD 后,最好检查 LOD 材质是否具有任何金属、透明度或不透明属性。 如果存在,则可以将其删除,因为你不太可能在渲染中看到任何这些功能。
6、生成新的法线
基于物理的渲染(PBR)是改进实时可视化的重要一步。 PBR 使用一些可快速计算的参数来近似材料的最佳属性(参考)。 为了生成 PBR 的准确结果,3D 引擎在方程中使用多边形法线。 因此,CAD 转换后生成准确的法线对于最终结果至关重要。 反射、漫射、透明度、粗糙度和金属度在很大程度上依赖于法线。
在多边形网格转换期间,法线可能会被错误地面对。 渲染模型时,倒置的面会创建不正确的着色器。 为了避免这种情况,3D 建模者必须手动确保所有面都朝向正确的方向,就像在游戏引擎中渲染之前的 Maya 一样。
反转法线会在渲染中产生阴影
7、整理大纲
大纲是模型的支柱。 它组织 3D 文件中的每个零件或节点,以及在你需要移动或操作场景中的组或单个网格时连接零件和父级。 凌乱的大纲不仅会使模型难以使用,还会在导入或保存过程中引起问题。
在将 CAD 转换为多边形网格的过程中,在许多情况下,所有网格的位置、旋转和比例都会转换为单独的父级。 这意味着网格将具有多个父节点,每个父节点都包含上述属性之一。 这种多重父问题会产生大量无用的数据集,通常会导致软件崩溃。
为了部分解决这个问题,Autodesk Maya 和其他软件包提供了冻结变换工具,该工具可以重置网格变换,从而消除上述的父依赖性。 现在可以安全地删除这些空父节点,而无需移动、旋转或重新缩放网格。 但问题是,将冻结变换工具应用于大文件中的所有网格可能会导致崩溃。 此外,手动删除所有网格的空父节点也是一个繁琐的过程。
右:优化前的大纲。 左:优化后的大纲
除了冻结和删除多个父节点之外,汇总工具还可以删除空节点。 一些空节点携带对可视化无用但占用空间的元数据,例如历史记录、零件 SKU、制造信息等。删除这些空节点是减少不必要的数据复杂性的简单方法。
8、合并相邻网格
正如上一节所讨论的,最小化的大纲对于 VR 开发的优化工作流程至关重要。 实现此目的的另一种有效方法是组合相邻网格。 例如,将五个螺钉组合成一个网格 - 因此在大纲视图中它显示为一个节点而不是五个。 组合零件将有助于使大纲视图更易于管理,并使零件选择和操作方式更加高效。
组合网格还可以减少对 CPU 和 GPU 的处理绘制调用的数量。 例如,当你组合了五个螺丝时,渲染时将只有一个绘制调用,而不是五个绘制调用。 这有效地帮助提高你的 FPS。 最后要注意的一件事是,组合网格后,UV 壳将全部移动到一个新的 UV 集,该集与壳重叠。 打开 UV 编辑器来组织 UV 布局。
9、重新拓扑模型
重新拓扑是通过更优化的几何形状改善网格边缘流的过程。 这一步尤其重要,你需要将面数从数百万减少到数百。 但是,如果你在不先生成 LOD 的情况下开始应用重新拓扑工具,则重新拓扑可能会导致不正确的边流出现错误。 确保首先使用 LOD 生成器或 Autodesk Maya 的“减少网格”工具来减少面数。 较少的面数有助于软件最大限度地减少 CPU 使用率并加快重新网格划分过程和准确性。
10、删除不必要的物体
删除可视化中不需要的部分是实时优化 3D 模型的另一种好方法。 这包括额外的节点、网格、材质和纹理,这些都会增加文件大小并使您的项目难以实时渲染。 例如,在汽车模型的可视化中,移除大量内部零件(例如螺钉或电线)将显着降低文件的复杂性和大小,从而使其更适合实时可视化。 移除螺钉等结构部件不会影响模型的完整性,因为机械和物理属性不适用于游戏引擎。
11、优化 VR 3D 文件,最终想法
我们希望本指南在你优化 VR 可视化项目的 3D 模型时有所帮助。 正如你所看到的,在优化 VR 3D 文件时需要考虑许多小细节。 随着 3D 文件变得越来越复杂,良好优化的好处变得更加明显。