UE5新功能个人学习笔记

  • Lumen全局光照和反射
    • Lumenr入门
    • Lumen光照功能
      • Lumen全局光照
      • 带有天空光照的Lumen
      • Lumen和自发光材质
      • Lumen反射
    • Lumen设置
      • Lumen项目设置
      • 后期处理设置
    • 材质环境光遮蔽
  • Nanite虚拟几何体
    • 在网格体上启用Nanite支持
      • 导入静态网格体
      • 导入静态网格体
      • 在资产上启用Nanite
    • 支持的Nanite特性
      • 几何体
      • 材质
      • 渲染
      • 支持的平台
    • Nanite回退网格体和精度设置
      • 顶点精度
      • 优化数据
      • 回退网格体
      • 回退网格体可视化
      • 对启用了Nanite的网格体使用自定义回退网格体LOD
      • 聚合几何体
      • 紧密堆叠的表面
      • 面片法线和硬边法线
    • 数据大小
    • 可视化模式
    • 审核Nanite内容
    • Nanite工具:优化
    • Nanite回退渲染模式
  • 虚拟阴影贴图(测试版)
    • 启用虚拟阴影贴图
    • 基于阴影贴图光线追踪的柔和阴影
    • 阴影贴图光线追踪的局限性
    • 半影大小限制
    • 非一致半影
    • 定向光源的裁剪图
    • 局部光源
    • 可视化
  • 时序超分辨率
  • 局部曝光后处理
    • 自动曝光(Automatic Exposure) (通常称为眼部适应)
      • 曝光测光模式
      • 曝光补偿曲线
      • 曝光测光遮罩
    • 游戏设置
      • 自动曝光直方图设置
      • 基本自动曝光设置
      • 手动设置
    • 可视化和调试
  • 后动态模糊半透明
  • 为大型开放场景而生的世界分区
    • 启用世界分区
      • 使用游戏模板创建你的项目
      • 使用开放世界(Open World)默认地图
      • 在编辑器中加载和卸载网格单元
      • 为世界分区窗口生成小地图
    • 世界分区的数据层
    • 一Actor一文件
    • 自动网格化HLOD
  • 吸附
  • PolyEdit工具
  • PolyCut
  • LOD管理器
  • 细分
  • 新的UV编辑器面板
  • Quixel Bridge集成
  • Mass避障(试验性)

Lumen全局光照和反射

Lumen是一种全动态的全局光照和反射解决方案,能够对场景变动和光源变化作出实时响应,赋予美术师和设计师创建逼真动态场景的能力。当阳光照射角度发生变化时、当打开手电筒或大门时,甚至是在天花板上炸开一个洞后,间接光照和光照反射都会实时变化。

Lumen实现了高效的软件光线追踪,可在各种显卡上运行全局光照和反射,同时支持能实现高品质视觉效果的硬件光线追踪。

该系统可以渲染间接漫反射,支持无限反弹和间接镜面反射。即使在精心设计的宏大环境中也能突出最微小的细节。
可以直接在编辑器中看到更改的结果,无需重新生成光照或为单个静态网格体设置光照贴图UV。

Lumenr入门

项目从虚幻引擎4升级到虚幻引擎5时, 不会(not) 自动启用Lumen功能。这能防止破坏或更改这些项目中的光照路线。

Lumen可以在项目设置下的 渲染(Rendering) > 动态全局光照(Dynamic Global Illumination) 和 反射(Reflections) 类别中启用。

全局光照和反射可以单独设置。在每个类别中,设置以下功能以启用Lumen:

动态全局光照 Lumen 反射方法: Lumen
(启用之后,将会启用 生成网格体距离场(Generate Mesh Distance Fields) 属性(如果尚未启用)。此属性是Lumen的软件光线追踪模式所必需的。需要重新启用引擎。)

Lumen的全局光照取代了屏幕空间全局光照(SSGI)和距离场环境光遮蔽(DFAO)。Lumen的反射取代了屏幕空间反射。
(为项目启用Lumen之后,将会禁用预先计算的静态光照补充,并隐藏所有光照贴图。)

Lumen光照功能

Lumen为虚幻引擎带来了稳定的动态全局光照,并与虚幻引擎5中的其他支持系统充分集成,例如Nanite、世界分区和虚拟阴影贴图。

虚幻引擎4功能,例如屏幕空间全局光照和光线追踪全局光照 (RTGI),对于依赖实时提供充足数量的项目而言不太可靠或者性能不足。此外,这些功能未与其他重要系统完全集成,无法广泛支持引擎的大部分功能。

Lumen全局光照

Lumen全局光照解决了间接漫反射光照问题。例如,在表面上散乱弹射的光线将使用表面的颜色,并将带有颜色的光线反射到其他附近的表面,从而造成颜色溢出效果。场景中的网格体还会拦截间接光照,这也会造成间接阴影。

Lumen支持无限散乱弹射,这在具有明亮漫反射材质的场景中非常重要,例如下面的公寓白色绘画。


虚幻引擎5的Nanite虚拟化几何体允许几何体具有比以往更多的细节。Lumen实现了全分辨率阴影,同时还可以用低得多的分辨率来计算间接光照,从而实现较高的实时性能。

带有天空光照的Lumen

天空光照在Lumen的 最终采集(Final Gather) 过程中解决。此过程还解决天空阴影问题,让室内空间可以比室外光照环境暗得多,实现更加自然的效果。

Lumen还为光照半透明和体积雾提供更低质量的全局光照

Lumen和自发光材质

自发光材质通过Lumen的最终采集过程来传播光线,不会对性能造成任何影响。但是,小型而明亮的自发光区域将会受到限制,以避免出现噪点瑕疵。这种解决方式会受到内在限制,比手动放置光源困难得多。

Lumen反射

Lumen为所有材质粗糙度数值解决了间接高光度或反射问题。
所有反射中都可以看到全局光照漫反射和带阴影的天空光照。Lumen反射还支持透明涂层材质,例如下面示例中的汽车。
Lumen为半透明材质提供有光泽的反射,例如下面示例中的汽车窗户。(目前不支持镜面反射。)

Lumen设置

可以在两个地方找到Lumen的设置: 项目设置(Project Settings) 和 后期处理体积(Post Process Volumes)

Lumen项目设置

适用于或能够影响Lumen的所有项目设置都可以在 引擎(Engine)> 渲染(Rendering) 部分中找到。项目设置中包含Lumen可以用于项目的所有默认设置。

以下是Lumen需要或能够影响Lumen的所有设置的列表。

后期处理设置

后期处理体积包含Lumen的重载和由美术师控制的属性。这些设置可以在 全局光照(Global Illumination) 和 反射(Reflections) 类别中找到。

以下是可以在后期处理体积中找到的Lumen的所有设置:

材质环境光遮蔽

Lumen全局光照支持材质环境光遮蔽,这样可以在骨骼网格体上提供可靠的自遮挡。

要在Lumen中使用材质环境光遮蔽,请进行以下设置:

在项目设置中禁用 允许静态光照(Allow Static Lighting) 。这会在GBuffer中腾出空间。

将材质设置为输出到 环境光遮蔽(Ambient Occlusion) 。
左侧:骨骼网格体上启用了Lumen全局光照,并且仅启用了屏幕追踪(软件光追);右侧:材质环境遮蔽。

Lumen全局光照支持材质的环境法线贴图。但是,相对于材质环境遮蔽,这两种方法所导致的渲染成本高得多,但视觉提升非常有限。

要在Lumen中使用环境法线贴图,请进行以下设置:

在 DefaultEngine.ini 配置文件的 [SystemSettings] 部分中,就设置 r.GBufferDiffuseSampleOcclusion=1 。

将材质设置为输出至 BentNormal 自定义输出节点。

Nanite虚拟几何体

Nanite是一种虚拟微多边形几何体系统,借助它,开发者可以创建出含有海量几何体细节的游戏。你可以直接导入由数百万多边形构成的电影级品质的源美术资产——无论是ZBrush雕刻模型,还是摄影测量扫描数据——并在场景中放置百万次,而且能够保证帧率稳定且无任何明显失真。

Nanite十分智能,它可以只流送并处理你能够感知到的细节,能在很大程度上消除多边形数量和绘制调用方面的限制。同时,它摒弃了耗时的工作(例如将细节烘焙到法线贴图、手动创建细节层次等),真正解放了开发者的双手,让你能专注于创作。
Nanite是虚幻引擎5的虚拟化几何体系统,它采用全新的内部网格体格式和渲染技术来渲染像素级别的细节以及海量对象。它可以智能地仅处理你能够感受到的细节。另外,Nanite采用高度压缩的数据格式,并且支持具有自动细节级别的细粒度流送。

Nanite的优势

                   几何体形状的复杂度提高了数个数量级,三角形和对象的实时渲染数量达到了前所未有的高度帧预算不再会因为多边形数量、绘制调用和内存使用情况而受限现在可以直接导入电影级品质的美术资源,例如ZBrush雕刻模型和摄影测量扫描数据通过高模实现细节,而非将细节烘培到法线贴图纹理自动处理细节级别(LOD),不再需要手动设置单个网格体的LOD品质损失极少或没有损失,特别是在LOD发生过渡时(尽管Nanite带来了前所未有的变革,但在实际使用上,仍会存在一些限制。例如,在考虑实例总数、单个网格体的三角形数量、材质复杂度、输出分辨率、项目性能等方面时,还是需要根据实际项目内容和硬件水平来仔细衡量。与此同时,在虚幻引擎未来的版本中,Nanite将不断扩展功能并提升性能。)

在网格体上启用Nanite支持

以下方法可在几何体上启用Nanite(前提是几何体支持):

         导入时使用单独的网格体编辑器在内容浏览器中的批量选择(将几何体转换为Nanite时,在每个网格体上都需要花费一些处理时间。在大型项目上,如果有很多Nanite资产,使用共享的派生数据缓存(DDC)将非常有帮助。如需更多信息,请参阅共享DDC文档。)

导入静态网格体

在导入要启用Nanite的网格体时,勾选 构建Nanite(Build Nanite) 复选框。

(假如不使用Lightmass预计算光照,建议禁用 生成光照贴图UV(Generate Lightmap UVs) 属性。

启用此属性后,高精度网格体会显著增加静态网格体数据的导入和构建时间。此属性还将增加一个额外的UV通道,这对于非常密集的网格体而言将会产生大量的数据。因此,如果你的项目不使用烘焙光照,则没有必要产生这两项开销。)

导入静态网格体

在资产上启用Nanite

假如你的项目已经有了大量内容,并且你希望启用Nanite,那么有两种办法:一是使用内容浏览器批量启用资产,二是在每个资产的编辑器中单独启用。

在网格体上批量启用Nanite
对于你要启用Nanite的批量静态网格体资产,使用 内容浏览器(Content Browser) 选择它们,然后,右键点击 并从上下文菜单选择 Nanite > 启用(Enable)

在单独的网格体上启用Nanite
打开支持Nanite的网格体的编辑器,例如静态网格体和几何体集合(Chaos物理驱动的破裂网格体),并通过 细节(Details) 面板启用Nanite。
在静态网格体编辑器(Static Mesh Editor)中,找到 Nanite设置(Nanite Settings) 并选中 启用Nanite支持(Enable Nanite Support) 复选框。

在几何体集合编辑器(Geometry Collections Editor)中,找到 Nanite 分段,并选中 启用Nanite(Enable Nanite) 复选框。

支持的Nanite特性

本小节介绍了如何在虚幻引擎项目中充分利用Nanite的特性,并详细说明了支持和不支持的内容以及可能的限制。

几何体

Nanite可以在静态网格体和几何体集合上启用。

启用了Nanite的网格体可以搭配以下组件类型使用:

静态网格体

实例化静态网格体

分级实例化静态网格体

几何体集合

Nanite目前仅限于刚性网格体。在常见项目场景中,90%以上的几何体都是刚性网格体。Nanite支持刚性网格体的动态平移、旋转和非均匀缩放,但不支持一般的网格体变形,无论是动态还是静态的变形。这意味着,Nanite网格体的位置无法简单地通过将4x3矩阵乘法应用于整个网格体来表达。

变形(Deformation)不支持且不限于以下几点:

   骨骼动画变形目标材质的世界位置偏移样条线网格体

此外,Nanite目前还不支持:

     自定义深度或模板在实例上绘制顶点特指使用编辑器网格体绘制(Mesh Paint)模式进行的逐实例绘制的颜色。确认 支持在原始网格体上导入的顶点颜色

场景中存在的最大实例数量不大于1600万。这包括场景中的所有流送进来的实例,而不仅仅是为Nanite启用的那些。只有流送进来的实例会被计算在内。

静态网格体启用Nanite时,不会保存静态网格体每个顶点切线的信息。相反,切线空间会在像素着色器中隐式继承。为了减少数据大小,目前没有存储切线数据。使用这种方法的切线空间会有所不同,可能会导致边缘不连续。但是,目前尚无事实证明这是一个重大问题。虚幻引擎未来版本将计划支持顶点切线。

材质

Nanite支持混合模式(Blend Mode)是 不透明(Opaque) 类型的材质。其他材质类型则不被允许,或者对Nanite网格体没有影响。
(当检测到不受支持的材质时,系统会指定一个默认材质,并在 输出日志(Output Log) 中放置警告以及附加信息。)
以下是Nanite不支持的材质功能:

           使用遮罩和半透明的混合模式延迟贴花将Nanite网格体用于网格体贴花。Nanite支持将贴花投射到其表面。线框双面材质像素深度偏移世界位置偏移自定义逐实例数据

如果在材质中使用以下内容并指定给启用了Nanite的网格体,则会导致网格体显示异常:

            顶点插值器节点自定义UV

渲染

以下渲染功能尚不支持:

            使用以下内容的视图相关对象筛选:最小屏幕半径距离剔除正向渲染虚拟现实中的立体渲染分屏多重采样抗锯齿(MSAA)光照通道针对细节丰富的Nanite网格体的光线追踪Nanite支持光线追踪功能,但光线只与Nantie网格体的代理模型(回退网格体)相交,而不是与拥有完整细节的Nanite网格体相交。某些可视化视图模式还不支持显示Nanite网格体(在查看细节十分丰富的几何体时,在静态网格体编辑器中使用某些可视化模式应该谨慎。查看法线和UV可能会导致编辑器的性能出现问题。)

支持的平台

Nanite目前支持PlayStation 5、Xbox Series S|X、以及符合以下显卡要求的PC(需要使用最新显卡驱动并支持DirectX 12):

NVIDIA:Maxwell显卡或更新版本的显卡

AMD:GCN显卡或更新版本的显卡

凡是支持DirectX 12 Agility SDK的较新版Windows 10(高于版本1909.1350)和Windows 11都受支持。

Windows 10版本1909 — 修订版号应该超过或等于.1350。

Windows 10版本2004和20H2 — 修订版号应该超过或等于.789。

DirectX 12(带着色器模型6.6原子),或Vulkan(VK_KHR_shader_atomic_int64)

最新显卡驱动程序

(PlayStation 4和Xbox One也支持Nanite,但对这些平台的支持目前是实验性的。如果希望在这些平台上发布拥有高保真度的内容,预计Nanite的性能可能无法完全满足要求。)

Nanite回退网格体和精度设置

静态网格体中的某些属性可控制Nanite模型的精度以及其代理网格体(也称为回退网格体,相对粗糙一些)的精度。

这些设置可以在静态网格体编辑器 细节(Details) 面板的 Nanite设置(Nanite Settings) 分段下找到。
Nanite设置包括以下属性:

顶点精度

Nanite会对网格体顶点位置进行量化,以便最大化内存密度并最小化磁盘占用空间。量化步长是二的幂,步长的大小可以通过 位置精度(Position Precision) 属性来选择,以匹配各个网格体的要求。默认设置是 自动(Auto) 根据网格体尺寸以及三角形密度挑选合适的精度。你也可以通过选择精度大小手动覆盖,以便提升精度效果或优化磁盘占用空间。

量化(Qantinization)是一种有损压缩形式。而在处理模块化网格体或具有共享边界的网格体时,使用有损压缩特别具有挑战性,特别是当这些边界需要完全对齐,避免几何体中出现孔洞或裂缝时。

为了确保一致性,量化发生在以网格体原点为中心的非标准化对象坐标上。这能确保当网格体使用相同的精度设置,而网格体中心之间的平移是该精度的倍数时,量化不会导致裂缝的出现。

优化数据

有时你需要减少Nanite存储的数据量,优化磁盘大小。Nanite含有一些设置,能让你在生产过程中随时从存储的Nanite网格体中优化细节数据,这意味着你事先过度提升质量也不要紧,稍后相应调整即可。

要优化细节数据,你需要使用 保持三角形百分比(Keep Triangle Percent) 和 优化相对误差(Trim Relative Error) 属性。你可以将它们视为在存储为Nanite网格体之前的预抽取选项。在Nanite的案例中,网格体中的细节不需要统一。最不重要的数据会首先删除,更类似于有损压缩。

使用 保持三角形百分比(Keep Triangle Percent) 设置要从源网格体中保留的三角形百分比。

使用 优化相对误差(Trim Relative Error) 设置从源网格体优化数据时允许的最大相对误差量。凡是删除后会导致相对误差小于此数量的三角形,将一律删除。你也可以这样认为,凡是视觉影响小于该值的细节,将一律优化。相对误差没有单位大小,与网格体大小有关。

这两个属性的默认设置是默认不优化任何内容,Nanite会存储所有原始源网格体的三角形。

(优化数据对于减小磁盘大小(即下载大小)很重要,但并不能提高性能。有关此主题的更多信息,请参阅下面的数据大小小节。)

回退网格体

虚幻引擎的很多子系统都需要访问以传统方式渲染的网格体提供的传统顶点缓冲。为静态网格体启用Nanite之后,将对细节丰富的网格体生成粗糙呈现,以便在Nanite数据无法使用的情况下访问和使用。回退网格体是在不支持Nanite渲染时使用的生成网格体。它还用于不适合使用细节丰富网格体的情况,例如需要复杂碰撞时,需要使用光照贴图进行烘焙光照,以及使用Lumen进行硬件光线跟踪反射时。

回退三角形百分比(Fallback Triangle Percent) 属性表示原始源网格体中用于生成粗糙呈现的三角形百分比。你可以指定0%到100%之间的三角形百分比,百分比越大,保留的原始网格体细节越多。

回退相对误差(Fallback Relative Error) 设置从源网格体中删除细节时允许的最大相对误差量。凡是删除后会导致相对误差小于此数量的三角形,将一律删除,首先删除视觉影响较小的细节。相对误差没有单位大小,与网格体大小有关。

例如,如果你希望你的网格体完全不进行抽取,你将使用回退三角形百分比100和回退相对误差0。

在下面的比较中,有从原始源网格体创建的细节丰富的Nanite网格体,与生成的Nanite回退网格体的默认设置进行比较。

使用回退相对误差指定从原始源网格体中保留多少原始细节,使用回退百分比设置使用多少细节。

在下面的比较中,回退网格体保持100%的回退三角形百分比,但调整回退相对误差,以便使用更多来自原始源网格体的三角形。调整这些值时,你可以在视口中将Nanite三角形的Nanite细节用作更改其值的指示器。

回退网格体可视化

在静态网格体编辑器(Static Mesh Editor)中,你可以使用 显示(Show) 下拉菜单中的视口 Nanite回退(Nanite Fallback) 选项,在细节丰富的Nanite网格体和Nanite回退网格体之间切换。你也可以使用热键 Ctrl + N 在两个可视化选项之间快速切换。

对启用了Nanite的网格体使用自定义回退网格体LOD

回退网格体在引擎的许多功能中都会用到,例如复杂的逐多边形碰撞、光线追踪、光源烘培等等。它也可用于不支持Nanite的平台。生成回退网格体时,启用了Nanite的网格体始终使用源网格体的 LOD0 槽来自动生成回退网格体。但是,有时需要使用手动指定的回退网格体或一系列传统LOD,而不是自动生成的网格体。

这种控制级别允许你在项目中使用Nanite,同时也可以直接控制你在光线追踪反射中看到的几何体或不支持Nanite的平台中的几何体。

按照以下步骤指定你自己的自定义回退网格体,或使用一系列LOD:

将 回退三角形百分比(Fallback Triangle Percent) 设置为 0 ,以便回退网格体尽可能小,因为在使用此方法时它将被忽略。

使用此传统LOD设置程序将一个或多个LOD添加到网格体。

使用 LOD导入(LOD Import) 下拉菜单,从 LOD设置(LOD Settings) 分段 导入LOD关卡1(Import LOD Level 1) 。

在 LOD设置(LOD Settings) 分段下,将 最低LOD(Minimum LOD) 设置为 1 。这会使得Nanite生成的回退网格体被忽略。

复杂碰撞是一种特殊情况。使用 通用设置(General Settings) 下 用于碰撞的LOD(LOD for Collision) 属性,指定用于碰撞的LOD。所有LOD都可用于碰撞,包括LOD 0。

(此特殊方法可能无法让Nanite项目自动兼容不支持Nanite的平台,应该针对你的项目进行测试和评估。
Nanite可以高效处理大量实例,但如果Nanite被禁用,那么可能会出现大量绘制调用,以至于传统渲染管线可能无法应对。你可以使用 r.Nanite 0 来关闭和开启Nanite支持,测试它在你的项目中是否可行。)

聚合几何体

聚合几何体(Aggregate geometry )是指许多不连贯的对象在远处合并成单个体积,例如毛发、树叶和草。这种类型的几何体打破了Nanite的细节级别和遮挡剔除方式。

Nanite本身是一种分层细节级别结构,它依赖的方法是将小三角形精简为大三角形,在差异小到无法感知时,Nanite会选择较粗糙的三角形。这在连续的表面上效果很好,但在聚合体几何体上效果不佳,从远处看时它们更像是部分不透明的云,而不是固体表面。

因此,Nanite可能认为它无法像处理常见的固体表面那样大幅度减少聚合几何体,因此,在覆盖相同数量的像素时,会绘制出更多的三角形。

还有一种优化技巧会受到聚合几何体的影响,那就是遮挡剔除。尽管遮挡剔除非常精细,但它的精细度还无法达到像素级。若几何体充满孔洞,会导致大量的过度绘制,若几何体不仅充满孔洞而且还相互重叠,那么情况会更坏,这是因为要先建立许多个深度层才能让屏幕区域遮挡住背后的内容。想象一下,屏幕上有一片8x8像素的区域,需要绘制多个深度层才能将填充所有像素。这种过度绘制就意味着,在覆盖相同数量的像素时,Nanite会尝试绘制更多的三角形,导致它的渲染速度变慢。

植被是导致遮挡剔除相关问题的一个最明显的例子,不过即便如此,这也不意味着Nanite不能应用于植被网格体。假如是充满树冠的森林,并且树冠由单独建模的树叶构成,那么Nanite的效果肯定不会很好。但将Nanite用于树干和树枝时,效果可能会好一些。若应用于建筑物表面的藤蔓,效果应该也不错,因为藤蔓与底下固体表面之间只有一层。

你可以试验一下各种用例,看看哪些适合你的项目。使用分析工具来确认Nanite在处理这些网格体时的性能情况。

紧密堆叠的表面

由于各种实际存在的限制,传统网格体的遮挡剔除使得大规模的模型搭建(kitbashing)流程几乎不可能实现。Nanite的高精细遮挡剔除可以实现使用这些类型的工作流,有助于减少开发流程中的麻烦。

正如上述"聚合几何体"小节中介绍的,导致过度绘制的一种情况是,可见表面与底部隐藏表面的距离过于接近。如果某个几何体妥当地隐藏在可见表面之下,Nanite检测并剔除它的成本是相当低的,甚至可以认为没有开销。然而,如果有一些相互堆叠的几何体,并且都位于最顶部的表面上,Nanite可能无法确定哪个位于上面或下面,导致两个几何体同时被绘制出来。

这种特殊剔除情况通常最糟糕,因为Nanite不知道哪个表面在最上层,导致绘制出所有内容。像这样的精度误差会随着屏幕尺寸和距离的变化而变化,所以,尽管10厘米的距离足够分开各个层,并且在近处看起来很好,但在更远的位置,距离差可能会小于一个像素,从而导致过度绘制。
在下面的示例中,移动摄像机并俯视角色站立的区域,Nanite 过度绘制(Overdraw) 可视化可以显示这些堆叠的表面是如何渲染的。区域越亮,表明在该区域发生的过度绘制越多。
过度绘制可视化能够最有效地发现过度绘制的问题。尽管一定程度的过度绘制是可以接受的,但过量会导致Nanite的剔除和光栅化开销变大,并且Nanite的缩放功能也会更加容易受到场景复杂度的影响。

面片法线和硬边法线

有个值得注意的问题是,在导入细节丰富的网格体时,因为网格体有面片法线,两个不同多边形之间的法线不平滑。此问题很常见,并且容易忽视,应该加以避免,因为网格体中顶点共享不足会导致渲染性能和数据大小的开销变得非常大。

理想情况下,一个网格体的顶点数量要少于三角形数量。如果这个比例是2:1或更高,那就可能出现问题,尤其是当三角形数量较多时。如果比例为3:1,意味着网格体完全是面状的,每个三角形都有单独的三个顶点,没有一个顶点是和其他三角形共享的。大多数情况下,这是法线不一样导致的,因为法线不平滑。

考虑到这一点,顶点越多,意味着数据越多。这也意味着顶点变换工作更多,而比率高于2:1时会陷入一些缓慢的渲染路径。在硬表面建模中专门使用不会引起任何问题,没有不用的理由。然而,若意外遇到100%面片极密集的网格体,开销要比预期的高得多。另外,要注意在其他DCC软件包中生成的密集有机型表面的导入法线,其硬法线阈值在低模网格体上可能是合理的,但在Nanite中会增加不必要的开销。

以下面的两个网格体为例,左边的网格体有面片法线,右边的网格体有平滑法线。对比使用Nanite的 三角形(Triangles) 可视化的情况,Nanite在绘制时所用的三角形数量存在明显差异。相比右边的平滑法线,左边的面片法线绘制的三角形要多得多。

使用面片法线(左)和平滑法线(右)且启用了Nanite的网格体

使用面片法线(左)和平滑法线(右)且启用了Nanite的网格体的Nanite三角形可视化

数据大小

Nanite能够实现大量微观细节,这可能会让人认为几何体数据会大量增加,导致玩家的游戏包大小和下载数据增加。然而,现实并没有那么可怕。事实上,Nanite的网格体格式要比标准的静态网格体格式小得多,因为Nanite有专门的网格体编码格式。

例如,对虚幻引擎5示例《古代山谷》来说,平均而言,Nanite网格体的每个输入三角形会消耗14.4字节。这意味着平均一个拥有100万三角形的Nanite网格体,在磁盘上需要约13.8兆字节(MB)。

将一个传统的低模网格体(带有法线贴图)和一个高模Nanite网格体相比较,你会看到以下效果:


低模静态网格体,带4K法线贴图

高模静态网格体,带4K细节法线贴图

不过压缩包的大小并不代表资产的全部大小。项目中还有一些只有这个网格体会用到的特有纹理,也必须计算在内。 许多网格体使用的材质都有自己独特的纹理,包括各种法线、基础颜色、金属感、高光度、粗糙度和遮罩纹理。

这个资产只使用了两种纹理(基础颜色和法线),因此不像其他一些采用了各种独特纹理的资产那样耗费磁盘空间。 例如,注意Nanite网格体的大小(约150万个三角形)要小于4k法线贴图纹理的大小(19.64MB)。


由于Nanite网格体的细节已经非常丰富了,我们可以尝试用平铺细节法线贴图(与其他资产共享)来代替独特的法线贴图。虽然在这种情况下,这会导致一些品质上的损失,但损失很小,无疑比低模网格体和高模网格体之间的品质差异小得多。因此,相比一个采用4K法线贴图的低模网格体,一个由150万个三角形组成的Nanite网格体既可以看起来更美观,体积也可以更小。

启用了Nanite的网格体和纹理的压缩包总大小:27.83MB

高模静态网格体

Nanite网格体,带4K细节法线贴图

(纹理分辨率和细节法线贴图方面可以做很多实验。这个比较是为了证明Nanite网格体的数据大小与美术师早已熟悉的数据大小没有太大区别。)

可视化模式

Nanite包含多种可视化模式来检查其在当前场景中的数据。

在关卡视口中的 查看模式(View Modes) 下拉菜单中,将鼠标悬停在 Nanite可视化(Nanite Visualization) 上,然后从选项中进行选择。


例如,概览(Overview) 可视化选项会在图像中心显示渲染后的场景,并在屏幕上显示各个Nanite可视化视图以供参考。


以下Nanite可视化模式可供选择:

审核Nanite内容

Nanite尚不支持虚幻引擎的某些功能,而某些功能可能永远不会受支持。Nanite工具(Nanite Tool) 使你能够在单个窗口中对支持Nanite的可用资产进行审核。你可以在内容浏览器(Content Browser)中审核资产,通过禁用或启用Nanite来查找错误或找到优化机会。

选择 工具(Tools)>Nanite工具(Nanite Tools) ,即可从主菜单打开Nanite工具(Nanite Tools)窗口。

Nanite工具(Nanite Tools)窗口显示将导致Nanite相关错误的静态网格体。

打开Nanite工具(Nanite Tools)窗口时,有两个选项卡:

错误(Errors) 选项卡将显示所有启用了Nanite且已知当前会导致Nanite相关错误的资产,例如应用了不支持Nanite的材质的资产。

优化(Optimize) 选项卡将根据它们拥有的三角形数量以及是否排除使用不受支持的材质的资产,筛选项目中支持Nanite的资产。

要评估Nanite应该如何处理错误或优化,你需要对每个资产进行审核。

Nanite工具:错误
错误(Errors) 选项卡有助于快速识别在启用了Nanite的资产上应用的不受支持的材质类型。对于将项目转换为使用Nanite的项目,例如使用批量选择方法,错误(Errors)选项卡将在执行审核后显示所有不受支持的Nanite资产。

要开始对项目中启用了Nanite的资产进行审核,请点击 执行审核(Perform Audit) 按钮。

在审核期间,Nanite资产上启用的 材质错误(Material Errors) 项中的所有材质都将生成错误,该错误会列于资产列表中

此 Nanite网格体错误(Nanite Mesh Errors) 列表将显示全部有问题资产的名称、它拥有的三角形数量、关卡中使用的实例数量以及它产生的错误数量。

你可以使用编译后的列表决定是启用Nanite,还是使用窗口右下角的 禁用Nanite(Disable Nanite) 按钮批量禁用选项。

Nanite工具:优化

在三角形超出指定数量、未使用不受支持材质类型且当前未启用Nanite时,优化(Optimize) 选项卡有助于快速识别支持Nanite的资产。

在执行审核之前,如果你需要转换资产但三角形数量少于默认数量,请考虑在 几何体筛选器(Geometry Filters) 下,设置 三角形阈值(Triangle Threshold) 。

点击 执行审核(Perform Audit) ,开始对未启用Nanite的所有资产进行项目审核。
所有符合筛选器条件的非Nanite资产都会显示在 非Nanite网格体(Non-Nanite Meshes) 列表中。

你可以决定在此列表中要启用Nanite的资产,点击 启用(Enable Nanite) 即可。

Nanite回退渲染模式

当Nanite遭到禁用或平台不支持时,Nanite还提供了回退网格体渲染模式。你可以通过控制台变量 r.Nanite.ProxyRenderMode 来控制使用哪种模式。

               0 是默认模式,如果进行设置,就会回退为渲染回退网格体,或采用基于屏幕空间的LOD。其中包括在静态网格体编辑器(Static Mesh Editor)属性中识别 最小LOD(Min LOD) (见上方回退网格体小节所述)。1 禁用渲染所有启用了Nanite的网格体。2 与模式1类似,但允许在静态网格体编辑器(Static Mesh Editor)中通过 显示(Show)>Nanite回退(Nanite Fallback) 来渲染Nanite回退。

(假如场景的实例数量非常大,远超过普通情况下的数量(即未启用Nanite时),则回退(Fallback)渲染模式1和2都很有用。这些模式使你能够在不支持Nanite的平台上用编辑器打开该场景。

例如,在虚幻引擎5的示例项目《古代山谷》中,禁用Nanite会导致产生数以万计的常规绘制调用,导致在那些不支持Nanite的平台上甚至难以打开该贴图。)

虚拟阴影贴图(测试版)

得益于虚幻引擎5的Nanite、Lumen和世界分区功能,虚拟阴影贴图将提供次世代实时动态阴影。它们可以为电影级品质的资产和大型开放世界提供稳定的高质量阴影。

传统的动态阴影技术通常仅限于中小型场景,迫使设计师和美术师不得不牺牲品质来换取性能。相比之下,虚拟阴影贴图提供了一种单一、统一的阴影方法,可以在最需要的地方自动应用质量。这意味着阴影能够在更远的距离为各种尺寸的对象提供始终一致的品质效果,软半影效果和接触硬化的效果也会更真实。
虚拟阴影贴图的开发目标如下:

显著提升阴影分辨率,以便配合拥有高度细节内容的Nanite几何体

以合理、可控的性能开销,获得真实的柔和阴影

提供一个简单解决方案,能够默认使用,并且只需少量的调整工作

用单一、统一的方法替代各种固定光源阴影技术

从概念上讲,虚拟阴影贴图只是分辨率非常高的阴影贴图。在目前的实现中,它们的虚拟分辨率为16k x 16k像素。裁剪图(Clipmap)用于进一步提高定向光源的分辨率。为了在合理内存开销下保证高性能,VSM会将阴影贴图分成128x128个区块(或页,Page)。系统会对深度缓冲进行分析,根据需要动态地分配并渲染页,来对屏幕上的像素进行着色。页会在不同帧之间缓存(除非因为移动对象或光源而失效),从而进一步提升性能。
(Nanite不支持许多固定光源相关的阴影技巧,例如预阴影和逐对象(或内嵌)阴影。虽然固定光源阴影的某些偏动态部分(例如摄像机查看器附近的级联阴影贴图)可能可行,但并不支持具有传统阴影贴图的Nanite和固定光源。如果你想在项目中使用Nanite,你必须使用可移动光源或使用虚拟阴影贴图。)

启用虚拟阴影贴图

在项目设置(Project Settings)的 引擎(Engine)>渲染(Rendering) 的 阴影(Shadows) 分段中,你可以设置项目支持的 阴影贴图方法(Shadow Map Method) ,可以是 虚拟阴影贴图(Virtual Shadow Maps) 或是此前虚幻引擎版本中的传统 阴影贴图(Shadow Maps) 。
(现有项目需要通过项目设置或控制台变量r.Shadow.Virtual.Enable来设置。新项目默认使用虚拟阴影贴图。)
启用VSM后,它们将替换虚幻引擎中的各种现有阴影方法,包括:

       固定预计算阴影,包括2D距离场和阴影因子"阴影贴图"预阴影逐对象/内嵌阴影级联阴影贴图(CSM)基于局部光源的可移动动态阴影

用于静态光源的全烘焙阴影(Fully baked shadows)仍会像以前一样运作(假设不使用Lumen)。它们的贡献只体现在烘焙光照贴图中,不会参与运行时的光照计算。固定光源会采纳来自烘焙光照贴图的间接漫反射信息,但启用VSM后,它们的直接光照与阴影会动态计算生成(与可移动光源相同)。

距离场阴影不会被替换,可以与定向光源的虚拟阴影贴图配合使用。距离场阴影替代超出可移动光源动态阴影距离的非Nanite几何体,该距离使用级联阴影贴图属性 动态阴影距离可移动光源(Dynamic Shadow Distance Movable Light) 在定向光源上设置。使用距离场阴影非常有用,可以降低复杂场景中的运行时开销,例如有大量非Nanite植被的场景。

无论距离如何,Nanite几何体始终渲染到虚拟阴影贴图,因为这是性能最高的选项,可提供最高质量。可以通过控制台变量 r.Shadow.Virtual.UseFarShadowCulling 0 使非Nanite几何体的行为方式与Nanite相同。

局部光源(点光源和聚光光源)不受影响,为这些光源选择的距离场阴影仍将覆盖当前的阴影贴图方法。

由于VSM自身的高分辨率和高精度属性,不再需要通过屏幕空间接触阴影(Contact Shadow)功能(通过接触阴影长度(Contact Shadow Length)属性控制)来获得锐利的接触阴影效果。在为某些对象(不会渲染进阴影贴图的对象)渲染低开销阴影时,它仍然有用,但其他情况下不推荐用它,因为它的精度要比VSM创建的阴影低。

光线追踪阴影的优先级仍然高于VSM,因为它们通常提供最高质量的解决方案。

基于阴影贴图光线追踪的柔和阴影

阴影贴图光线追踪(Shadow Map Ray Tracing,SMRT) 是一种结合虚拟阴影贴图的采样算法,能生成更为真实的柔和阴影和接触硬阴影。对象投射的远处阴影比近处阴影拥有更柔和的效果。 例如,下图中的网格体很高,其阴影会投射到很远的距离。靠近底部的阴影比远处的阴影更清晰锐利。

使用了阴影贴图光线追踪后的点光源阴影效果,近处为接触硬阴影,远处为柔和阴影。

传统的百分比渐近筛选(Percentage-Closer Filtering,PCF)法会导致过度模糊,并降低高分辨率几何体和阴影的视觉影响。
SMRT算法的工作原理是向光源发射一定数量的光线,但它并不像传统的光线追踪一样计算与几何体的相交点,而是沿光线投射一定数量的取样,并针对虚拟阴影贴图进行测试,以实现柔和阴影和接触硬化效果。 阴影射线的分布是基于光源的,可通过局部光源的 源半径(Source Radius) 或定向光源的 源角度(Source Angle) 控制。局部光源半径
定向光源角度

局部光源默认没有光源半径,相比之下,定向光源初始拥有低光源角度。只要设置的值比较合适,SMRT就能生成带有接触硬化效果的实时柔和阴影。下图就展示了源半径为10的点光源阴影效果。

控制半影品质
局部光源和定向光源照射下的半影的柔和度和品质可通过控制台变量来设置。它们包含自身的可扩展性设置,通常适用于大多数场景。

图中的定向光源角度为5.0,阴影贴图取样数量分别为8(默认)和0时的效果。

阴影贴图光线追踪的局限性

SMRT的品质在默认设置下通常很不错,但假如使用来自单一阴影贴图投射的数据(而非针对真实几何体进行测试),就可能存在一些固有的局限性。

半影大小限制

局部光源和定向光源的阴影半影会被限制,以避免取样偏离光线原点,与沿光线自身的理想测试相比,其会变得越来越"弯曲"。使用合理的局部光源半径和定向光源角度值可避免出现过于极端的结果,从而限制光线以各种方式发散的范围。太大的值可能会影响性能,并在摄像机接近它们时导致阴影半影出现视觉扭曲。

非一致半影

由于虚拟阴影贴图仅保存首个深度层,Naive迭代会忽略与首个深度层背后的所有遮挡物的相交,因此在遮挡物重叠的位置可能发生多种光照泄漏瑕疵。这类光照泄漏问题可以通过间隙填充方法(gap-filling heuristic)来解决;此算法是基于在遮挡点之前看到的深度,来推断首个遮挡物后面的深度。

这能够很好地解决光照泄漏问题,但会导致表面上与光线平行的半影缩小。目前还没有直接的方法来抵消这种影响,只能将半影大小保持在合理范围内。

定向光源的裁剪图

单张虚拟阴影贴图无法提供足够的分辨率来覆盖大型区域。定向光源使用裁剪图(Clipmap)结构来扩展摄像机周围的范围,每个裁剪图级别都有其单独的16K VSM。每个裁剪图级别的分辨率相同,但覆盖半径是前一个的两倍。

局部光源

聚光光源使用单个16k VSM和一个Mip链来处理阴影的细节等级,而非使用裁剪图。类似地,点光源使用的立方体贴图中,每张面都是16k VSM。

与传统阴影贴图相比,局部光源显著提高了分辨率。对于非常大的局部光源来说,虚拟分辨率有可能会耗尽。在这些情况下,应注意尽可能使用定向光源。

通过将屏幕像素的大小投射到阴影贴图空间中,挑选合适的MIP等级。与定向光源一样,你可以通过阴影可扩展性设置或使用控制台变量 r.Shadow.Virtual.ResolutionLodBiasLocal 来调整分辨率。(目前还无法针对单个光源的分辨率进行控制,但可能会在未来版本中添加。)

可视化

使用 视图模式(View Modes) 下拉菜单并选择 虚拟阴影贴图(Virtual Shadow Map) ,可以从关卡视口(Level Viewport)访问虚拟阴影贴图的可视化选项。

时序超分辨率

随着Nanite微多边形几何体的问世以及次世代游戏对真实感的需求,对屏幕细节的要求达到了前所未有的高度。为了满足这些需求,我们编写了时序超级分辨率(Temporal Super Resolution)算法。该算法将取代虚幻引擎4的时序抗锯齿(TAA),以满足高端平台需求。

时序超级分辨率提供了内置于虚幻引擎中的原生高质量上采样技术,广泛支持各类硬件。时序超级分辨率将是默认的抗锯齿方法,并用于所有项目。

时序超级分辨率具有以下特点:

在输入分辨率低至1080p的情况下,可以输出接近原生4K品质的渲染画面,并且保证更高帧率和真实度。

降低高刷新率背景画面中的重影(该问题在UE4的TAA中普遍存在)。

减少复杂几何体的闪烁问题。

支持在游戏主机上实现动态分辨率缩放。

可在任何支持D3D11、D3D12、Vulkan、Metal的硬件上以及PlayStation 5和Xbox Series S / X上运行。

支持DirectX 12着色器模型6。

着色器专门针对PlayStation 5和Xbox Series S|X GPU架构进行了优化。

在下图中,我们比较了基于原生4K分辨率渲染的画面以及基于1080p分辨率渲染并上采样到4K的画面,展示了其品质和性能差异。使用TSR可以实现接近原生4K分辨率的图像品质,同时将GPU时间减少近50%。

局部曝光后处理

局部曝光(Local Exposure)是一种新技术,它可自动将局部调整应用于曝光(在美术师控制的参数内),从而在已有全局曝光系统上,保留高光和阴影细节。

如果项目包含一些复杂的高动态范围场景,并且其中使用了动态光照,但在这些场景中应用单一的全局曝光调整不足以避免高光溢出和完全黑暗的阴影,则特别适合使用这项技术。

例如,对于某些具有动态时间系统的游戏,玩家很容易在场景中同时遇到曝光不足和过度曝光的问题,例如在室内场景中通过门或窗看到非常明亮的户外。这种情况可能会带来游戏体验问题。如果场景的原有光照不能满足要求时,可以使用局部曝光获得更一致的最终画面。

局部曝光属性位于:镜头(Lens)> 局部曝光(Local Exposure) 类目下的 后期处理体积(Post Process Volume) 设置。

要查看如何将局部曝光应用于场景,请使用关卡视口的 显示(Show)> 可视化(Visualization) 菜单中的"可视化(visualization)"。

自动曝光(Automatic Exposure) (通常称为眼部适应)

后期处理体积(Post Process Volume) 提供 自动曝光(Automatic Exposure) (通常称为眼部适应)控制选项,可自动调整当前场景视图的曝光效果,使其变亮或变暗。此效果可再现人眼适应不同光照条件的体验,例如从昏暗的室内走到明亮的室外,或从室外走到室内。

曝光测光模式

在场景中设置自动曝光时,引擎提供几种测光模式选项。此类不同测光模式提供可精确模拟实际摄像机的设置,可在后期处理过程中控制场景中的曝光。

自动曝光直方图(Auto Exposure Histogram) 模式通过由64bin直方图构成的高级设置更好地控制自动曝光。这是虚幻引擎中的默认曝光测光模式。

                       基本自动曝光(Auto Exposure Basic) 模式提供的设置较少,但这是通过下采样曝光计算单个值的更快速方法。手动(Manual) 模式支持使用后期处理和摄像机设置中的 摄像机(Camera) 设置控制曝光,而非仅使用 曝光(Exposure) 类别中的设置。

曝光补偿曲线

借助 曝光补偿曲线(Exposure Compensation Curve) 资产槽,美术师可更好地控制场景中的曝光补偿。此曲线资产可直接控制X和Y轴。使用高动态范围可视化模式 HDR(眼部适应) 时,可从屏幕上显示的信息中提取此类值。后期处理设置曲线资产图表

使用内容浏览器选择 新增(Add New) 按钮并导航到 其他(Miscellaneous) 类别,选择 曲线(Curve) 资产类型,添加自己的曲线。在选择曲线类(Pick Curve Class) 窗口中,选择 曲线浮点(Curve Float) 类型。

在启用"HDR(眼部适应)"可视化模式的关卡视口中,X轴在直方图上由 平均场景EV100 值(1)和 实际 (紫色)线(1)表示。Y轴由 曝光补偿(曲线) 值(2)表示。
上面的示例场景显示 平均场景EV100 为0.548,将转换为曲线资产X轴的插入值(如下所示)。还将返回 曝光补偿(曲线)(Exposure Compensation(Curve)) 值0.864。
曝光补偿值分为各自的 设置 值和 曲线 值,可更精确地控制调整方式。同时解释了通过分离此类值以特定方式进行曝光补偿的原因。

相关值为:

                  平均EV100 是计算的目标EV100值,在直方图中用目标(蓝色)线表示。曝光补偿(设置) 是后期处理设置中设置的曝光补偿值。曝光补偿(曲线) 是后期处理中指定给曝光补偿曲线槽的曲线资产中生成的Y轴值。曝光补偿(全部) 是生成最终曝光补偿值的 设置 和 曲线 曝光补偿值之和。

曝光测光遮罩

曝光测光遮罩(Exposure Metering Mask) 为美术师提供可选纹理槽来控制自动曝光的全屏影响,其中每个像素由指定纹理遮罩进行重要性加权。注重屏幕中心而非边缘的像素有助于稳定自动曝光(参见下例)。后期处理设置
曝光测光遮罩实例纹理

通过朝屏幕中心对遮罩中的像素加权,沿屏幕边缘出现的明亮对象不太可能引起预期曝光突然发生变化。
(虚幻引擎4.25发布后,控制台命令 r.EyeAdaptation.Focus 已删除。此命令在整个屏幕均匀应用加权值,提供现在通过创建自己的测光遮罩处理的类似功能。另外,此命令仅支持基本自动曝光测光模式,而曝光测光遮罩同时支持直方图和基本测光模式。)

游戏设置

默认的自动曝光后期处理和后期处体积控制 游戏中 的自动曝光设置。自动曝光默认为开启,可用于关卡视口和资产编辑器视口。

可从 镜头(Lens) 类别中的 曝光(Exposure) 下拉菜单下访问自动曝光(Auto Exposure)设置。后期处理体积设置
资产编辑器预览才场景设置
关卡视口 细节(Details) 面板中提供后期处理设置,资产编辑器 预览场景设置(Preview Scene Settings) 面板包含调整场景自动曝光所需的相关设置。可通过所选 测量模式 访问后期处理中的不同属性集。每种模式均设置用于自动曝光的亮度计算方法。

从以下测光模式中选择:

              自动曝光直方图(Auto Exposure Histogram) 构造64bin直方图,可通过高级设置更好地控制自动曝光。基本自动曝光(Auto Exposure Basic) 是一种通过下采样计算单个值的更快速方法。手动(Manual) 可使用内部的 摄像机 后期处理设置而不是曝光(Exposure)属性控制曝光。

自动曝光直方图设置


基本自动曝光设置


手动设置


可视化和调试

HDR(眼部适应) 可视化模式提供当前场景视图中测得曝光值的直方图表示,并快速引用后期处理体积和曲线资产中设置的值。

1.后期处理体积和曲线资产中设置的曝光和曲线值列表。

2.提供NIT(以cd/m2为单位)和勒克斯值的焦点计。

3.设置最小和最大范围的直方图。

使用关卡视口启用此可视化模式,选择 显示(Show) > 可视化(Visualize) > HDR(眼部适应)(HDR(Eye Adaptation))。

后动态模糊半透明

出于某些后处理效果的影响(例如动态模糊和TAA),某些效果(例如场景内的UI元素)在当前的半透明通道中渲染时,会出现品质下降和瑕疵问题。

虚幻引擎5.0引入了一个新的后动态模糊半透明(Post-Motion Blur Translucency)通道,使美术师能够创建不受动态模糊和时序抗锯齿影响的半透明材质。

你可以在材质的细节面板(Details Panel)属性中将半透明材质分配给后动态模糊通道。在 半透明(Translucency)> 高级(Advanced) 分段下,从 半透明通道(Translucency Pass) 下拉菜单中选择 后动态模糊(After Motion Blur)。
(此通道当前不支持深度测试。这意味着动态模糊后渲染的对象不能被场景中的其他对象遮挡,即使后者离摄像机更近。)

为大型开放场景而生的世界分区

世界分区(World Partition)是一个在编辑器和运行时都能使用的自动数据管理和流送系统,它完全避免了手动将世界划分为无数子关卡来管理流送的麻烦,并减少了数据争用。

使用世界分区后,世界场景将作为单一持久关卡存在。在编辑器中,世界将使用2D网格进行分割,并使用世界分区编辑器窗口根据你感兴趣的区域部分加载数据。这使得处理庞大的世界成为可能,否则这些世界将无法完全加载到内存中,或需要很长时间才能加载。在烘焙或启动PIE时,世界被划分网格单元,通过对这些网格单元的运行时流送优化,使其分别成为动态载入关卡。

以往制作者在制作大型地图时,需要手动将其分为多个子关卡,然后在玩家探索地图时使用关卡流送系统加载卸载不同的子关卡。这样的方法往往导致多用户共用文件的问题,并且使得制作者难以同时审视整个地图。

世界分区是一种自动数据管理和基于距离进行加载的关卡流送系统,它针对大型世界管理提供了一个完整的解决方案。这个系统将整个世界划分为网格单元,保存在一个固定的关卡,使制作者不再需要划分繁冗的子关卡,并提供一个自动流送系统,基于与流送源之间的距离来加载和卸载这些网格。

世界分区常常与以下功能搭配使用:

          一Actor一文件 (One Actor One File)世界分区 - 数据层(Data Layers)关卡实例(Level Instancing)世界分区 - HLOD

启用世界分区

在虚幻引擎中启用世界分区的三种方法:

           使用 游戏(Games) 类目下的模板创建新项目。使用开放世界(Open World)模板创建新关卡。转化已有的关卡来使用世界分区。

使用游戏模板创建你的项目

由 游戏(Games) 类目下的大部分模板创建新项目时,世界分区将默认启用。
为了简化并提供可拓展的解决方案,网格流送可以在 世界设置(World Settings) 中的 启用流送(Enable Streaming) 设置中选择启用或者禁用。

以下模板使用世界分区,但是 启用流送(Enable Streaming) 选项默认禁用:

空白(Blank)

       第一人称(First Person)第三人称(Third Person)俯视角(Top Down)高级载具(Vehicle Advanced

使用开放世界(Open World)默认地图

默认的开放世界(Open World)地图被设计为创建大型开放世界地图的起始参考,并且默认启用以下功能:

           世界分区(World Partition)一Actor一文件(One File Per Actor)数据层(Data Layers)HLOD (Hierarchical Levels of Detail)


该地图包括一个示例 2 km x 2 km 的地形,采用户外环境的材质和光影设定。包括天空大气系统,天空光照,定向光源,指数型高度雾,体积云。

在你的项目中使用默认的开放世界(Open World)类型地图:

1.在 文件(File) 菜单中选择 新关卡(New Level)。

2.选择 开放世界(Open World) 地图类型。

3.点击 创建(Create) 按钮创建新地图。

在编辑器中加载和卸载网格单元

为了便于开发大型世界,所有网格单元初始都是卸载状态。关卡打开后,编辑器只会加载那些将其网格放置(Grid Placement)设置标记为"始终加载(Always Loaded)"的Actor,例如场景背景和管理类。这有助于开发大型世界,因为这类场景通常无法在编辑器中同时加载整个地图。
在"世界分区"窗口中,你可以手动选择要在哪些网格单元中工作。在主菜单中选择 窗口 > 世界分区 来打开该窗口。

在窗口中,点击并拖动网格单元来选中它们。然后,右键单击所选内容,打开上下文菜单,加载和卸载单元格。

为世界分区窗口生成小地图

你可以使用 构建(Build) 菜单的世界分区部分中的 构建小地图(Build Minimap) 选项,或者使用构建器命令来生成小地图,以便在世界分区窗口中更容易导航。

运行这个命令可以为世界分区世界创建一个小地图,并将其放在世界分区窗口中。
(如果你生成了小地图,但没有出现在世界分区窗口中,你需要在项目中启用虚拟纹理支持。要启用虚拟纹理,请在主菜单中点击 编辑(Edit) > 项目设置(Project Settings)。然后勾选 启用虚拟纹理支持(Enable virtual texture support) 复选框。)

世界分区的数据层

世界分区的数据层是一个系统,通过在编辑器和运行时激活和停用某些数据层,有条件地加载世界数据。数据层是在编辑器中组织场景的绝佳方式。你还可以使用它来处理游戏中的不同场景,并且创建同一世界的不同变体。这对于白天和黑夜的不同设置或完成任务后的世界变化非常有用。

你可以在编辑器的"数据层(Data Layers)"选项卡或Actor的"细节(Details)"面板中控制数据层。

一Actor一文件

全新的"一Actor一文件"系统在与世界分区配合使用后,可以让世界协作编辑更轻松。关卡编辑器会将各Actor保存为单独文件,而不是将它们添加到一个单一关卡文件中。这意味着用户只需从源码控制中检出需要的Actor,而不是整个关卡。

现在使用世界分区时,将默认启用此功能。

有关更多信息,请参阅一Actor一文件 文档。

自动网格化HLOD

使用世界分区时,自动网格化HLOD(Automatic Grid-Based Hierarchical Level of Detail)系统会创建数据驱动的自定义HLOD层,从而优化在加载区域外显示的大量静态网格体Actor。此功能会在未加载区域的网格上覆盖实例化静态网格体(ISM)或代理网格体,通过一组最低数量程度的HLOD,减少绘制调用数量并提高性能。
这些代理网格体是使用原始Actor几何体生成的,并经过简化以减少内存使用量

吸附

            PolyEdit吸附(PolyEdit Snapping)- PolyEdit工具现在具有额外的吸附和对齐功能。体积和动态网格体的顶点/边吸附(Vertex/Edge Snapping for Volumes and DynamicMeshes)- 现在可以在体积和动态网格体组件上吸附顶点和边。

PolyEdit工具

PolyEdit 工具包括许多改进,可增强功能和提高效率。

                 插入边缘循环(Insert Edge Loop) - 边缘循环插入器现在可以突出显示导致循环停止的有问题的(非四边形)组。这使得更容易理解插入限制,并为用户提供有关如何调整组拓扑来辅助工具的提示信息。插入组边缘(Insert Group Edge)- 为改进工作流程并最大限度减少工具之间的来回切换,插入组边缘工具已移至PolyEdit工具。剪切面(Cut Faces)- 添加了一个剪切工具。该工具将使用用户定义的剪切方向来剪切选定的面。重新三角化(Retriangulate)- 重新三角化将重新计算选定多边形组上的三角形。区域选择(Marquee Selection)- 现在,区域选择在PolyEdit中适用于所有网格体组件类型。挤压(Extrude)- 挤压具有用于方向、测量方向和创建多边形组的新选项。按组简化(Simplify by Group)- 在重复建模操作之后,拓扑可能变得低效。按多边形组简化是一个强大的工具,可根据用户定义的区域细化网格体。推/拉(Push/Pull)- 推/拉工具充当"布尔挤压"工具。挤压的网格体不是拓扑编辑,而是作为实体进行添加或消减。这允许进行诸如在网格体中推出一个洞之类的操作。斜面(Bevel)- 在PolyEdit中添加了一个新的斜面工具。

PolyCut

Polycut 工具的功能已增强,现在可以使用网格体布尔运算。新模式允许穿过多个层进行剪切,或在剪切时让剪切曲线延伸超过主体网格体的边缘。

LOD管理器

LOD管理器(LOD Manager) 允许直接在视口中探索和管理LOD。

           从高分辨率源模型恢复LOD0在视口中预览上下文中的各个LOD在SourceModel和RenderData LOD之间进行比较

细分

细分(Subdivide) 工具允许建模师和雕刻师使用不同的细分技术添加/平滑网格体以获得更高分辨率,从而满足分辨率需求。该工具目前支持:

           双线性细分(Bilinear Subdivsion)- 双线性细分只是对多边形组进行细分,而不会生成平滑的表面。循环细分(Loop Subdivision)- 循环细分直接作用于三角形网格体,这意味着它可以应用于具有任何多边形组拓扑或根本没有多边形组的网格体。它会产生类似的平滑表面。openSubdiv/Catmull-Clark - Catmull-Clark旨在处理四边形网格体,并依赖于相对简单且结构良好的多边形组拓扑。新建多边形组(New PolyGroups)- 现在有一个选项可以为每个细分级别生成新的多边形组。这样就可以使用PolyEdit等工具继续细化/建模。

新的UV编辑器面板

虚幻引擎5.0中的UV编辑工具进行了大幅更新和扩展,使得直接在编辑器内创建和编辑UV的功能大幅增强。
新的UV编辑器面板是编辑UV布局的主要工作区。2D UV面板是评估布局打包和UV方向的主要区域,并提供以下支持:

                2D选择和变换UV通道可视性UV通道复制、添加和删除自动解包和每个岛状区剪切和拼接操作。3D预览纹理显示

Quixel Bridge集成

Quixel Bridge现在直接集成在虚幻编辑器中。你可以将Quixel Bridge停靠在编辑器布局中,然后将资产直接拖到关卡中。可从关卡编辑器主工具栏中新增的 创建(Create) 菜单或从 窗口(Window)> Quixel Bridge 访问Quixel Bridge面板。
(如果你以前安装了虚幻引擎5.0预览版,则需要在使用前将Quixel Bridge更新到最新版本。可在Epic Games启动程序中更新该插件。)

Mass避障(试验性)

Mass避障(Mass Avoidance) 是与 MassEntity 集成的基于力的避障系统。该系统为使用MassEntity系统的任何实体提供了高性能避障。

UE5新功能个人学习笔记相关推荐

  1. 新唐芯片学习笔记——概要

    ##新唐芯片学习笔记--概要 特性 编号信息列表与管脚定义 NuMicroNUC029 命名规则 特性 ARM®Cortex®-M0 内核 – 运行频率可达50MHz – 一个 24位系统定时器 – ...

  2. 新唐芯片学习笔记——UART

    新唐芯片学习笔记--UART 概述 NuMicro®NUC029 提供2个通用异步收/发器(UART)通道,UART支持普通速度UART,并支持流控制.UART控制器对从外设收到的数据执行串到并的转换 ...

  3. 新唐芯片学习笔记——GPIO

    新唐芯片学习笔记--GPIO 概述 NuMicro®NUC029 最多有40个通用I/O引脚,这些引脚和其它功能共享.40个引脚分为6个端口,分别命名为P0, P1, P2, P3, P4和P5,每个 ...

  4. 新唐芯片学习笔记——ADC

    新唐芯片学习笔记--ADC 概述 NuMicro®NUC029xAN 包含一个12位逐次逼近型模数转换器(SAR A/D转换器) ,包含8个输入通道:NuMicro®NUC029FAE 包含一个10位 ...

  5. HTML5新特性的学习笔记

    HTML5新特性的学习笔记 HTML 超文本标记语言: HyperText Markup Language 这份学习笔记的主要内容是HTML5的新标签 基于菜鸟教程的个人向学习笔记 菜鸟教程 文章目录 ...

  6. 基于ISO26262的功能安全 学习笔记2

    学习笔记1中提到了对整个ISO26262的概括和综述,这篇笔记会针对Funkitonale Sicherheit nach ISO 26262此书第2章内容做出一个总结和学习. 文章目录 第2章 一. ...

  7. 基于ISO26262的功能安全 学习笔记1

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引言 (1)为何选择汽车专用安全标准IOS26262:2011 (2)符合ASIL的产品等级 总结 前言 最近正在 ...

  8. 【学习笔记】新基建/新动能——部分学习笔记

    新基建背景下企业智能化升级的趋势 企业数智化:以远程办公为例 远程办公,指的是基于互联网.物联网.云计算等技术,通过第三方插件.软件.网站等工具,实现非本地化办公,如在家办公.异地办公.移动办公等模式 ...

  9. python实现日历功能_python学习笔记之—— calendar(日历)模块

    原博文 2017-12-22 14:34 − 内置函数month() #!/usr/bin/python import calendar print calendar.month(2017,12) 输 ...

  10. PyCharm——搜索功能的学习笔记

    1 致谢 感谢网友mjiansun的帮助, 原文链接如下: https://blog.csdn.net/u013066730/article/details/82848453 2 前言 今天在学习MT ...

最新文章

  1. pipeline和java的区别_总结:四个Pipeline脚本式与声明式语法差异
  2. 手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法
  3. 数据结构的映像方法(数据元素的机内表示)
  4. 如何赋能零售行业数字化转型? SAP从这些方向发力
  5. 【深度学习】深度学习的发展方向: 深度强化学习!
  6. PL/SQL经典练习
  7. 01背包问题--动规
  8. Docker学习文档之三 其他相关-生产环境
  9. tf.Variable、tf.get_variable、tf.variable_scope、tf.name_scope、random、initializer
  10. c 语言 二进制 十进制,C 语言实例 - 二进制与十进制相互转换
  11. 辨异 —— 概率与统计
  12. jquery淡入淡出效果及突出显示案例
  13. 计算机开机报一长两短,电脑开机发出一长两短报警声启动不了怎么办
  14. 大学计算机基础案例教程章测试答案,大学计算机基础案例教程--Win7+Office2010(高等院校公共基础课规划教材)...
  15. ICPCCamp 2016 Day 6 - Spb SU and Spb AU Contest(Colored path-dp)
  16. Kb/s,KB/s 究竟如何换算
  17. 【图文排版】微信文章怎样可以合理布局?
  18. 前端开发——在线工具推荐
  19. 110、氮气IG100灭火系统的设计灭火浓度
  20. 【滴水逆向笔记】C语言结构体

热门文章

  1. 10分钟科普:人工智能是什么?它又是如何工作的呢?(下)
  2. sum结合case函数以及分组的使用
  3. 荔枝派nano(f1c100s)实现开机自启动程序
  4. windows下搭建poco库
  5. Hexo博客NexT主题下添加字数统计和阅读时长
  6. 承德计算机专业去哪考试,2017河北职称计算机考试报名:承德职称计算机报名入口...
  7. 算法笔记习题 2-5小节
  8. 使用 LWUIT 的风格、主题和 Painter 特性
  9. 使用Idea2019创建ssm项目,SpringMVC+Spring+MyBatis+Maven整合
  10. 史上最全将Ubuntu系统安装到移动介质