UE 虚幻引擎 利用LOD,Nanite技术优化场景性能

目录

  • 0 引言
  • 1 LOD
    • 1.1 LOD定义
    • 1.2 UE5中的LOD技术
    • 1.3 HLOD(Hierarchical Level of Detail)
  • 2 Nanite
    • 2.1 UE5的Nanite技术
    • 2.2 Nanite介绍
      • 2.2.1 Nanite的优势
      • 2.2.2 Nanite网格体与传统静态网格体的不同
      • 2.2.3 Nanite支持的类型
      • 2.2.4 在地形中使用Nanite

0 引言

随着游戏场景中的模型数量越来越多,模型精度越来越高(三角面数越来越多),会发现场景的运行速度逐渐减慢。这时就需要进行场景的优化操作。

1 LOD

1.1 LOD定义

以下内容摘自维基百科:

UE 虚幻引擎 利用LOD,Nanite技术优化场景性能_第1张图片

1.2 UE5中的LOD技术

在UE4中,显示在场景中的物体可以分为两大类别:骨骼网格体和静态网格体。

  • 骨骼网格体组件:它内部包含一具骨架(用于连接骨骼);骨架负责移动骨骼网格体的各个顶点,以便匹配当前播放的动画。因此,骨骼网格体组件适用于表现人物、生物、复杂机械或任何具备复杂运动的对象。
  • 静态网格体组件:它是由多个静态多边形构成的几何体,是虚幻引擎的基本场景构建单位。除了用于构建场景,静态网格体组件还能用于创建运动对象(如门或电梯)、刚体物理对象、植物和地形装饰物、程序化创建的建筑、游戏目标和许多其它的视觉元素。

骨骼网格体和静态网格体都可以设置LOD层级

  1. 设置骨骼网格体LOD
    打开UE5人物的骨骼网格体界面,在【资产详情】中可以看到【LOD选择器】面板,我们可以选择4级LOD模型,也可以把自定义勾选,然后自己设置模型有几级LOD。

  1. 设置静态网格体LOD
    静态网格体LOD设置与骨骼网格体类似,是在【细节】-【LOD选取器】中进行设置。在【细节】【LOD设置】的LOD数量属性中可以设置模型有几级LOD。

1.3 HLOD(Hierarchical Level of Detail)

虚幻引擎中的一个复杂关卡可以包含上百个细节丰富的静态网格体资产。对于这种程度的细节,一次加载方圆数公里的关卡会非常缓慢。

当模型处于远距离时,分层细节级别(HLOD)系统可以将多个静态网格体Actor合并成单个代理网格体和材质。这能减少场景中需要渲染的Actor数量,从而减少每帧的绘制调用数量,并提高性能。这在处理大型开放世界时特别有用。

构建HLOD网格体的具体步骤看:UE官方文档。

2 Nanite

2.1 UE5的Nanite技术

UE5 采用了两大核心技术,其中之一就是“Nanite”,这是一个允许将高细节摄影源材料导入游戏的先进技术,Nanite 的出现让 Epic 能够利用其收购最大的摄影测量库 Quixel。

UE5的目标是让开发者轻松的建立有细节的游戏世界而无须花费更多时间在开发精细的资产上。Nanite 可以导入任何三维计算机绘图软件做出的 3D模型和3D场景,像是Zbrush、Blender,从而让开发者使用高面数的模型与高清晰度的贴图,并且无须担心存储器的限制

2.2 Nanite介绍

Nanite是虚幻引擎5的虚拟化几何体系统,它采用全新的内部网格体格式和渲染技术来渲染像素级别的细节以及海量对象。它可以智能地仅处理你能够感受到的细节。另外,Nanite采用高度压缩的数据格式,并且支持具有自动细节级别的细粒度流送。

2.2.1 Nanite的优势

  • 几何体形状的复杂度提高了数个数量级,三角形和对象的实时渲染数量达到了前所未有的高度
  • 帧预算不再会因为多边形数量、绘制调用和内存使用情况而受限
  • 现在可以直接导入电影级品质的美术资源,例如ZBrush雕刻模型和摄影测量扫描数据
  • 通过高模实现细节,而非将细节烘培到法线贴图纹理
  • 自动处理细节级别(LOD),不再需要手动设置单个网格体的LOD
  • 品质损失极少或没有损失,特别是在LOD发生过渡时

2.2.2 Nanite网格体与传统静态网格体的不同

Nanite网格体是一种启用了Nanite的特殊静态网格体。Nanite网格体本质上仍是三角形网格体,但对其数据进行了大量细节和压缩处理。此外,Nanite使用了一种全新系统,能以极高效的方式来渲染这种数据格式。

要让静态网格体利用Nanite,只需一个标记来启用它即可。编辑Nanite网格体的内容和传统网格体没太大不同,区别就在于相比使用传统方法渲染的几何体,Nanite能够渲染的三角形和实例要多出数个数量级。将摄像机移到足够近的位置后,Nanite就会绘制出导入的原始源三角形。

Nanite网格体支持多重UV和顶点颜色。材质可以被指定给网格体的不同分段,并且这些材质可以使用不同的着色模型和动态效果(在着色器中完成)。材质指定可以动态切换,就像其他静态网格体一样。Nanite也无需任何烘焙材质的过程。

虚拟纹理并不要求与Nanite一起使用,但非常推荐这么做。虚拟纹理是正交虚幻引擎功能,它与纹理数据的关系类似于Nanite与网格体数据的关系。

2.2.3 Nanite支持的类型

Nanite目前仅限于刚性网格体。在常见项目场景中,90%以上的几何体都是刚性网格体。Nanite支持刚性网格体的动态平移、旋转和非均匀缩放,但不支持一般的网格体变形,无论是动态还是静态的变形。

Nanite支持混合模式(Blend Mode)是 不透明(Opaque) 类型的材质。其他材质类型则不被允许,或者对Nanite网格体没有影响。

2.2.4 在地形中使用Nanite

你可以在地形上使用Nanite以提高Nanite渲染的性能,尤其是在虚拟阴影贴图方面。使用非Nanite地形时的编辑器内性能不代表在Nanite网格体完全重新编译之前你的项目中启用了Nanite的地形的运行时性能。

你可能感兴趣的:(UE,虚幻)