什么是细节级别 (LOD)?
细节级别 (LOD) 是一种 3D 渲染技术,当模型在屏幕上占据的区域变小时,它会替换为更简单的模型版本,从而减少几何复杂性,并根据 Assets 的制作方式,减少材质或绘制调用次数,同时保持视觉差异难以察觉。
游戏、VR体验和其他实时3D应用使用LOD来在包含数千个对象的场景中保持稳定的帧率。
细节级别是如何工作的?
细节级别通过准备同一个 Object 的多个版本来实现,每个版本比前一个版本细节更少,并根据 Object 在屏幕上显示的大小选择合适的版本。Unity 和大多数其他引擎将这些版本编号为 LOD0、LOD1、LOD2 等,其中 LOD0 是最详细的。
三角形数量通常随着 LOD 关卡的增加而减少。
在不同级别之间切换可能会引起可见的弹出。交叉淡入淡出在时间间内混合了正在Outgoing和正在Incoming的电平,使Change更难察觉。
细节级别有哪些类型?
细节级别有多种形式,许多 Projects 结合了这些技术:
- Discrete LOD:引擎在预构建的、具有不同细节级别的已修复网格设置之间切换。这是游戏中的一种常见方法。
- Continuous LOD:网格会随着其屏幕空间大小的变化而逐渐简化或细化,而不是在固定的 LOD 级别上切换。
- 分层 LOD (HLOD):将一组远物体合并成一个简化的表示,从而减少绘制Calls和几何复杂度。
- 纹理 LOD (mipmapping):GPU 逐步样本纹理中更小、预过滤的版本,因为表面离得更远或占据的屏幕空间更小。
- 广告牌和冒名顶替者:一个遥远的3D模型被一个简化的表示所取代,通常是一个面向Camera的平面图像。
细节级别和Unity
Unity 提供了多种实现细节级别的方法,包括 Mesh LOD 和 LOD Group 组件。网格LOD可以在资源导入期间GenerateLOD,旨在以最少的额外内存减少几何体和GPUvertex处理。LOD Group 允许您配置独立的 LOD 级别,并根据屏幕大小在它们之间切换。
LOD和剔除有什么区别?
细节级别剔剔除染工作,但它们作用ON对象的方式不同:
大多数实时间Projects都可以将All三者全体学员使用。剔除移除不需要渲染的对象,而 LOD 则简化仍然可见的对象。
使用细节级别的益处是什么?
- 更高的帧率:渲染更少的三角形可以减少 GPU 工作负载,这有助于Project保持Target帧率。
- 更大、更密集的场景:Open世界、森林和城市场景可以同时显示更多的物体。
- 可扩展性能:LOD 可以帮助相同的内容在具有不同性性能能力的平台上缩放,包括移动端Devices和独立平台 VR 头戴设备。
使用细节级别的挑战是什么?
- 可见爆裂:除非进行交叉淡入或调整阈值,否则级别之间的突然切换会很明显。
- 额外内存和存储:每个额外的 LOD 网格都会添加网格数据,增加 Memory Usage 并可能增加版本大小。
- 撰写时间:手工制作的关卡需要艺术家的时间,而自动生成的关卡仍然需要检查视觉伪影。
常见问题解答 (FAQ)
一个模型应该有多少个 LOD 级别?
每个模型的 LOD 级别没有已修复的数量。正确的数量取决ONObject的屏幕大小、观看距离、视觉复杂性、平台和性能Target。额外的层级可以提供更渐进的细节变化,但它们也需要额外的作者或处理。Unity 的 移动端艺术优化技巧 建议在 LOD 级别之间将三角形数量减少大约一半。
细节级别也适用于纹理和网格吗?
是的。Mipmapping 是一种纹理细节关卡技术,其中 GPU 会对纹理较小、预先过滤的副本进行样本,当表面看起来更远或占据更小的屏幕空间时使用。这可以减少纹理内存带宽和闪烁等视觉伪影。网格LOD也可以使用不同的Materials或着色器,具体取决ONLOD是如何编写的。