您需要 登录 才可以下载或查看,没有账号?注册
x
本期笔记内容 (过多,如果你正在优化场景可以参考下具体以官方文档为准,否则就收藏吧!用到了再看。想直接说优化方法,想想还是加一个概念的介绍,在想要不在加一个具体操作步骤。所以内容就越来越多后面我们还会继续介绍其他方面优化方案:模型、材质、灯光等) 01-LOD
02-Cull Distance Volumes【剔除距离体积】
介绍如何使用剔除距离体积来根据Actor的大小和距离来剔除关卡中的Actor
03-DrawCalls【合并Actor】
04-Hlod【分层细节界别】
分层细节级别(Hierarchical Level of Detail) (简称 HLOD)将预先存在的静态网格体Actor组合为一个单一的HLOD代理模型和材质(带有图谱纹理)。因为HLOD可以将每个代理模型的多个绘制调用减少为一个调用,而不是每个静态网格体Actor一个绘制调用,因此使用它可以提升性能。生成HLOD代理模型时,可以调整几个参数,这些参数有助于定义如何将静态网格体Actor作为群集分组在一起,它们最终将被编译到代理模型中
05-Precomputed Visibility Volumes【预计算可视性体积】使用体积并基于摄像机位置及烘焙光照信息来动态剔除关卡中的Actor
首先打开我们的场景,然后我们首先查看下同屏场景的面数(全屏模式下)打开控制台(~:1左边)输入:stat rhi
三角面会随着视角变化而改变此视角与108万6832面
如果场景跑起来比较卡是因为面数过高,我们可以先检查场景模型本身是否存在可优化的面数
注意:我们在查看时F11全屏,不要打开任何其他窗口以免影响准确率
01
LOD接下来我们可以来到我们资产查看是否有LOD 查看方式Lit-->Lecel Of.......-->Mesh Lod coloration选择后场景会进行编译然后去查找我们哪些资产有Lod当前正在使用那个级别
【灰色=LOD 0;红色=LOD 1;绿色=LOD 2;蓝色=LOD 3;黄色=LOD 4】资产LOD越多颜色越多但到一定时候颜色循环
面数较低模型可以不去设置LOD例如1K面左右,因为我们设置一级Lod需要计算UV以及网格,有时候设置多级Lod适得其反
我们可以设置下LOD屏占比,屏占比是100%时是LOD 0 ;屏占比为50%启用LOD1我们可以自定义这些设置
我们还可以设置下每次LOD变化所减的面;LOD 0为原模型面数、LOD 1我们想减少50%以此类推
02
剔除距离体积剔除距离体积(Cull Distance Volume) 是非常有用的优化工具,它定义绘制(显现)该体积中的Actor的距离。这些体积可存储任意数量的"大小"和"距离"组合(称为 剔除距离对)。这些剔除距离对会被映射到Actor(沿其最长有效维度)的边界,然后指定给关卡中的该Actor实例。剔除距离体积(Cull Distance Volume)对于优化包含精细内部空间的大型室外关卡非常有用。当室内空间小到可被视为不重要时,可以剔除它们
设置和用法可通过编辑器中的 放置Actor(Place Actors) 面板向关卡中添加剔除距离体积(Cull Distance Volume),并且你可以缩放它,以适应关卡需求
选中体积之后,使用细节(Details) 面板访问剔除距离(Cull Distance)对数组。每个"剔除距离(Cull Distance)"对都包含 大小(Size) 和剔除距离(Cull Distance)数值。单击 加号(+ 号)可向数组元素列表底部添加新剔除距离(Cull Distance)对默认情况下会为体积添加两个 剔除距离(Cull Distance) 对;你可以将第一个剔除距离对作为要编辑的第一个条目,它的大小和距离都尚未设置,第二个剔除距离对使大于10000单位的对象免于被剔除,因为那些对象的距离为0。通过设置较大的剔除距离对,你可以使远处的大型建筑或高山等对象免于被剔除
插入、删除和复制剔除距离对使用每个数组元素旁的下拉菜单可插入、删除或复制剔除距离对元素
[size=1em]插入(Insert) 会在选中的元素上方添加新剔除距离对。 [size=1em]删除(Delete) 会从列表中删除现有剔除距离对元素。 [size=1em]复制(Duplicate) 会将选中的剔除距离对复制到下面的新数组元素
[size=1em]你可以根据需要拥有任意数量的剔除距离数组元素,其先后顺序不会影响它们的有效性 下列数值用于定义"剔除距离(Cull Distance)"和"大小(Size)"的含义
- 该体积中大小最接近 200 单位的对象会在它们距摄像机 1000 单位或更远时被从视野中剔除。
- 该体积中大小最接近 500 单位的对象会在它们距摄像机 2000 单位或更远时被从视野中剔除。
- 该体积中大小最接近 1000 单位的对象将永不会被剔除。这可以确保尺寸极大的对象被视为无穷大,这意味着它们距摄像机的距离永不可能远到应将它们剔除的程度。
设置剔除距离对时,请牢记以下规则:
这意味着你无需使用虚拟对,在存在重叠的剔除距离对时,引擎将挑选最激进的设置(或大于0的最低设置)并将它指定给Actor。
为了便于组织,最好使这些对具有一定的顺序(例如从高到低),但并非必需。
添加新对时,请记住,你始终可在稍后使用 插入(Insert) 下拉菜单添加对。
- 剔除距离对将指定给边界直径与其大小最接近的Actor。你可以使用Actor的 当前最大绘制距离(Current Max Draw Distance) 了解它基于剔除距离对数值被指定到的缓存绘制距离组。
为了帮助你入门,我们在下图中列出了一些推荐的对数值:
最佳实践
下列建议可帮助你实现有效的结果:
- 使用单个剔除距离体积(Cull Distance Volume)覆盖整个关卡
•包含可代表关卡中大部分Actor的多种剔除距离对
•对于体积中的区域,你可以使用额外的剔除距离体积(Cull Distance Volume)实现对剔除的额外的更加激进的控制。
- 设置剔除距离对时,可先从较大尺寸和距离开始,以了解你希望使用的上限和下限
•请在关卡视口的"游戏(Game)"视图下在关卡中四处移动,以查看对象是否存在任何可见的"突然出现"
•进行更改(可能需要在现有的剔除距离对间添加一些新剔除距离对)。选择存在问题的Actor并使用其 缓存剔除距离(Cached Cull Distance)了解部分Actor所属的剔除距离对分组情况
- 请记住,剔除距离对组仅在低于个体Actor的 最大绘制距离时才会被使用。
- 如果某些Actor应永不被剔除距离体积(Cull Distance Volume)剔除,请使用该Actor的"细节(Details)"面板并禁用 允许剔除距离体积(Allow Cull Distance Volume)
- 请记住,如果需要为大量Actor禁用此选项,可以考虑使用最后一个剔除距离对作为"过大不应剔除距离"数值(大小(Size) 的数值很大,剔除距离(Cull Distance) 为 0)。这可以防止高山或建筑物等非常大的对象被剔除
模型中设置
我们可以设置这个距离,当我们离物体超过我们设置的距离物体就会消失;反之进入到距离内就会被显示
植被系统同样有这个设置,选择我们植被Cull Distance设置距离(不可见距离)
03
DrawCalls检查DrawCalls:控制台输入:stat scenerendering ①查看时不要选择物体
②需要在游戏预览模式下
查看我们物件的DrawCalls当前物件38
如何减少DrawCalls
①减少资源
首先我们先看下这个木桶:模型本身是一个DrawCalls,贴图又是一个这样这个箱子就是两个;如果有两个材质球就是三个DrawCalls以此类推
那么将如何减少DrawCalls比较有效的方式是合并资产
选择我们资产,然后在菜单栏Actor-->Mege
Pivot Point at Zero :坐标轴归零(我们将摆放好资产合并后,再次拖拽放置到场景时直接将坐标归零即可)有些项目可能不支持这样操作这里只是说下有这个选择
①手动选择LOD等级合并
②是否合并贴图(勾选:两张贴图不动uv合并生成一张新的、不勾选:自动重新展uv烘焙一张新的贴图)
合并后生成新的光照图以及大小
合并后新贴图大小以及需要输出的贴图类型
注意:贴图不宜过大、合并目的就是为了节省资源太大贴图并不能起到很好效果、合并后依然可以用我们上面方式剔除,还应该确保精度、半透明不要合并、多个模型公用一个材质情况下我们合并时候不需要生成新的材质球取消Merge Matenals
04
HLOD(分层细节级别)就其最简单的形式而言,分层细节级别(Hierarchical Level of Detail) (简称 HLOD)将预先存在的静态网格体Actor组合为一个单一的HLOD代理模型和材质(带有图谱纹理)。因为HLOD可以将每个代理模型的多个绘制调用减少为一个调用,而不是每个静态网格体Actor一个绘制调用,因此使用它可以提升性能。生成HLOD代理模型时,可以调整几个参数,这些参数有助于定义如何将静态网格体Actor作为群集分组在一起,它们最终将被编译到代理模型中
要使用HLOD,需要在希望利用此系统的每个关卡中启用HLOD系统
代理模型代理模型可以单独打开,还可以根据需要调整它们的设置
上方的代理模型包含数个不同元素,它们原本均拥有自身的纹理,现在这些纹理已组合为一个单一的纹理
笔记:对于使用 遮罩 和 不透明度 的任何内容,透明通道不会传递到合并的纹理。如果需要带不透明度或遮罩的内容,请禁用 合并纹理(Merge Textures) 选项。执行此操作时,代理模型将把原始材质指定为一个 材质元素ID,而非组合它们
分层LOD体积域
分层LOD体积域(HLOD体积域)用于手动定义/创建HLOD群集。可从 放置Actor(Place Actors) 面板的 体积 选项卡中拖入关卡
将此体积域放置在需要放入同一群集的Actor周围。将此体积域的范围设为略大于希望包含的Actor较好,不应包裹太紧。将体积域设置在Actor周围后,即可使用 HLOD大纲视图(HLOD Outliner) 中的选项 生成群集(Generate Clusters) 创建这些分组Actor的新群集
下面,在HLOD体积域中有几个立方体和球体,在体积域之外有一个立方体和地面
当我们在 HLOD大纲视图(HLOD Outliner)中生成群集时,我们有两个单独的群集:一个群集包含HLOD体积域以内的静态网格体Actor,另一个群集包含HLOD体积域以外的静态网格体Actor
您还可以选择启用 仅生成体积群集(Only Generate Clusters for Volume)(如下所示),仅为HLOD体积域中存在的静态网格体Actor生成群集
HLOD覆盖
当您选择了关卡中的一个LOD Actor时,您可以在详细信息(Details) 面板中覆盖正在使用的分层LOD设置(Hierarchical LODSettings)
HLOD可视化
您可以使用可视化模式来在视口中查看模型LOD和HLOD。要访问这些,单击视口左上角的查看模式(View Mode) 按钮并选择首选的LOD着色方法
笔记:在播放会话期间,您可以输入控制台命令viewmode hlodcoloration来获得相同的结果。
在HLOD大纲视图中右键单击 LODActor,并单击 选择包含的Actor(Select Contained Actors) 查看用于场景中该特定 LODActor 的Actor
可以在我们之前使用的优化方式之后再去使用,首先我们在窗口菜单中选择HLOD层级大纲
菜单如下
①HLOD操作(HLOD Actions) - 利用这些选项,您能够为关卡中的每个群集生成HLOD代理模型,为关卡中生成的每个群集重新生成群集并编译代理模型,保存所有外部HLOD数据,或者在LOD查看选项之间切换
②HLOD场景Actor(HLOD Scene Actors) - 它包含已生成的每个群集(或代理模型)以及有关各个Actor的信息。您还可从该面板中 生成(Generate) 或 删除群集(Delete Clusters),也可右键单击场景Actor以执行快捷操作
③LOD系统(LODSystem) - 利用该属性,您能够定义要包括的 HLOD关卡 数量以及每个HLOD关卡的 群集(Cluster) 和 模型生成设置。您也可覆盖用于代理材质的材质,或覆盖 HLODSetup资源
HLOD操作在 HLOD大纲视图 顶部,可找到以下可用选项:
生成代理模型(Generate Proxy Meshes) | 在创建要生成代理模型的 已生成群集 之后,就可以使用这个选项了。当您生成代理模型时,这将使用群集化的LOD并将这些 Actor 合并到单个资源中。您可以定义如何使用 群集生成设置(Cluster Generation Settings) 群集化代理模型,以及最终如何使用 模型生成设置(Mesh Generation Settings) 生成代理模型。该选项仅影响生成的模型,而非整个关卡。 请注意,这个过程可能会花费很长时间,具体取决于场景的复杂程度以及为HLOD关卡选择的设置
| 全部编译(重新编译)(Build (Rebuild) All) | 使用该选项,只需一个步骤即可从这些群集编译群集和代理模型。通常您需要生成群集,并确保在生成代理模型之前您对所需的结果很满意(该选项将自动编译代理模型)。一旦生成了群集,就可以使用 全部重新编译(Rebuild All) 选项重新生成群集并从这些群集编译代理模型。与生成代理模型(Generate Proxy Meshes) 不同,这个选项会污染关卡,并且根据场景的复杂性和设置可能会花费大量的时间
| 全部保存(Save All) | 该选项允许您保存所有外部HLOD数据,包括网格体、材质和纹理。 | LOD视图(LOD View) | 可使用该选项选择要在编辑器中查看的LOD关卡,或在编辑器中指定一个 强制查看关卡。这有助于调试您可能遇到的任何LOD问题 |
HLOD场景Actor可使用 HLOD场景Actor(HLOD Scene Actors) 面板为关卡中的模型 生成群集(Generate Clusters)(但不是代理模型)或 删除群集(Delete Clusters)(这将删除关卡中的所有群集)。该面板还显示给定LOD关卡的所有LODActor以及有关Actor的信息,例如初始的三角形数、LOD模型中减少的三角形数量、LOD模型保留的三角形减少百分比,以及LOD模型所处的关卡。
LOD Actor快捷菜单右键单击面板中的LOD Actor或静态网格体Actor可以访问其他操作:
右键单击 场景Actor名称(Scene Actor Name) 列下列示的任何LOD Actor,显示以下菜单和选项。
选项 | 说明
| 选择LOD Actor(Select LOD Actor) | 在视口中选择LOD Actor(与左单击群集的效果相同) | 选择包含的Actor(Select Contained Actors) | 选择LOD群集中包含的所有Actor | ForceView | 在视口中切换HLOD Actor的LOD视图。 [size=1em]该选项可用于已编译到代理模型中的LODActor | 重新编译代理模型(Rebuild Proxy Mesh) | 强制被右键单击的群集重新编译其代理模型 | 创建包含分层体积(Create Containing Hierarchical Volume) | 围绕群集中包含的Actor创建分层体积,然后可以修改该体积以包含更多或更少的Actor | 删除群集(Delete Cluster) | 删除被右键单击的群集 |
Actor快捷菜单展开LODActor会公开已生成HLOD群集中包含的场景Actor。右键单击场景Actor,出现以下选项
选项 | 说明
| 从群集中删除(Remove From Cluster) | 从群集中删除被右键单击的Actor | 从群集生成中排除(Exclude From Cluster Generation) | 从群集生成中排除被右键单击的Actor。如果想要重新添加被排除的Actor,单击它并将其从 世界大纲视图 拖动到 HLOD大纲视图 中的群集中 |
构建HLOD网格体
为了使用分层细节级别(Hierarchical Level of Detail) (HLOD)模型,你必须完成两个步骤后才能在关卡中设置HLOD模型。首先,你必须 生成群集 。群集会根据你在群集生成设置(Cluster Generation Settings) 中指定的设置对关卡内的 Actor 进行分组
生成群集后,你可以基于这些群集 生成代理模型 。代理模型的生成过程可能需要较长时间,具体取决于场景复杂程度或 模型生成设置(Mesh Generation Settings) 中的设置
步骤
①为所需的HLOD等级定义群集生成设置之后,单击生成群集(Generate Clusters) 按钮。【会添加我们场景中所有静态Actor】
进程开始后,你会看到一个进度条,显示正在生成的LOD等级的进度
②群集生辰完毕后,群集的 LOD Actor 将显示到HLOD大纲视图窗口中
单击名称左侧的展开箭头可展开 LOD Actor ,查看群集的静态网格体
还可以从HLOD大纲视图(HLOD Outliner) 中选择 LOD Actor(和静态网格体)来在视口(Viewport) 中查看群集
如果你想要对给定的群集进行更改,可以根据需要调整群集生成设置(Cluster Generation Settings) ,然后重新生成群集 。你还可以使用HLOD上下文菜单,定义 LOD Actor 的设置或定义在群集中如何处理静态网格体Actor
对群集感到满意后,单击生成代理模型(Generate Proxy Meshes) 按钮
进程开始后,将出现一个进度条,指示将生成的代理模型总数中正在处理的 LOD Actor 和 LOD级别
[backcolor=rgba(255, 192, 192, 0.376)]此进程可能耗时较长,具体取决于HLOD设置、场景复杂程度和计算机规格。举例参考:一个拥有12核i7处理器、GTX-980显卡和64GB RAM配置的系统,耗时约10-12分钟完成(其中HLOD等级为默认设置,每个HLOD等级约有100个以上LOD Actor)。
具体操作01:生成群集群集生成使用单个HLOD等级的设置决定如何在场景中对 静态网格体 Actor 进行分组。生成过程的耗时由使用的设置、分组的 Actor 数量、是否生成材质,以及硬件配置(最主要的决定因素)决定。①完成对所需单个HLOD等级的特定设置后,点击 生成群集(Generate Clusters) 按钮。
进程开始后将出现一个进度条,显示生成的LOD等级
②进程完毕后,HLOD大纲视图(HLOD Outliner) 将被所有群集 Actor 填充
③点击名称左边的箭头按钮可展开单个 LODActor ,查看该群集由哪些 静态网格体组成
④从 HLOD大纲视图(HLOD Outliner) 选择一个 LODActor 并在编辑器视口中将其找到,即可在关卡中显示群集
要直观地看到生成的群集在编辑器中的运作方式,你可以使用强制的LOD级别(Forced LOD Level)菜单查看运行中的HLOD,而无需使其按特定屏幕大小过渡。这有助于排解出现在屏幕上的问题(可能为生成群集的一部分)
如果生成的群集遇到问题,可展开特定群集并选择对立的 静态网格体 Actor 。然后点击并将其拖至另一个群集,或右键点击列表中的 Actor 命名选择将其从群集的生成中 移除 或 排除
Actor 还可以逐个实例来排除,方法是在关卡中将其选中,并在 细节(Details)面板 中将 可以位于群集中(Can be in Cluster) 的选项设置为false。
此外,如果你想将 Actor 添加到 群集(Cluster) ,可以点击并从 大纲视图(Outliner) 拖移到你想将其包含到的群集(Cluster)
重复此过程,同时调整HLOD等级 群集生成设置(Cluster Generation Settings) 中的数值,直到生成满意的群集,然后进入下一节: 生成代理模型
世界设置下
下面是HLOD大纲视图(Hierarchical LOD Outliner) 界面底部的 LOD系统(LODSystem) 面板上 HLOD设置(Hierarchical LODSetup) 中的属性细分(按主要部分划分)
群集生成设置可使用 群集生成(Cluster Generation) 设置控制HLOD群集的生成方式,以通过设置群集的期望边界,群集填充程度,以及生成群集必须用到的最小Actor数量来包括关卡中的Actor
属性
| 说明
| 允许特定排除(Allow Specific Exclusion) | 该属性与网格体组件上的属性结合使用,您可以添加一个HLOD关卡索引,该索引不应该包含该网格体。这样,您就可以仅包含HLOD关卡0的小道具,对于后续HLOD则忽略这些小道具(因为您将无法从特定距离查看它们) | 所需边界半径(Desired Bound Radius) | 将网格体聚集在一起的半径。通常(不是必然)用于计算自动群集化的填充因子。 | 所需填充百分比(Desired Filling Percentage) | 在生成群集时,该属性可以确定群集边界(球体)中被所包含的Actor的边界占据的程度。本质上指的是必须由包含的Actor所占的群集体积的百分比。 | 要编译的最小Actor数量(Min Number of Actors to Build) | 构建LODActor的最小Actor数量 | 仅生成体积的群集(Only Generate Clusters for Volumes) | 如果启用,将仅为HLOD体积内的模型生成群集 |
模型生成设置可使用 模型生成(Mesh Generation) 设置控制合并HLOD群集Actor时将使用的特定属性,比如生成光照图,组合材质,平移大小等
①不透明度贴图:必须同时使用 半透明(Translucent) 混合模式(Blend Mode) ,以便在生成的实例中显示正确。
②不透明度蒙版贴图:必须同时使用 遮罩(Masked) 混合模式(Blend Mode) ,以便在生成的实例中显示正确。
③合并相同材质:如果使用世界场景位置/actor位置来确定输出颜色,则会导致合并模型中出现瑕疵。
④允许距离场:如果合并后的模型仅在远处渲染,禁用该选项以节省内存。
具体操作02:生成代理模型生成满意的群集后,即可前往将群集构建到代理模型中的选项。此代理模型将会是新建的静态网格体Actor(如启用,它将组合材质)拥有自身的光照图,以及自身的可编辑静态网格体(可在静态网格体编辑器中打开)
①如你已准备好构建代理模型,现在即可点击"生成代理网格体(Generate Proxy Mesh)"按钮开始
进程开始后将出现进度条,显示使用中的HLOD层级和生成中的代理模型数量。此进度条不显示全部HLOD层级和创建的代理模型总数,只显示特定层级的代理模型数
此进程耗时取决于HLOD的等级设置、创建的代理模型数量,以及系统配置情况,高端机器也可能耗时较长!
生成好以后保存即可,会在我们关卡边生成一个XXX_HLO文件夹
进入文件夹查看我们生成的HLOD【绿色表示此模型具有HLOD】
接下来我们测试下首先模型有HLOD;当我们慢慢离开变远了时候就会启用我们的HLOD
对比
提示:当我们摆放好模型、生成HLOD后再次移动了我们模型位置,这个时候就需要重新构建否则就会如下效果,HLOD仍在模型编译位置
笔记:生成群集
我们可以自定义选中场景物体拖拽到LODlevel-0 01位置这样我们就可以设置多组群集
我们还可以在世界大纲处新建LODleve-1 02 继续添加我们更多场景模型
分组:可以让我们在合并设置中更详细设置参数如:贴图大小与类型、透明与半透明设置、光照图设置等等
05
预计算可视性体积介绍如何使用体积并基于摄像机位置及烘焙光照信息来动态剔除关卡中的Actor 像其他剔除方法一样,预计算可视性体积 用于实现中小型场景的性能优化,通常用于因为硬件问题而使动态遮挡剔除受到限制的移动平台。预计算可视性体积根据玩家或摄像机的位置,将Actor位置的可视性状态存储在场景中。因此,预计算可视性对于主要为静态点亮的环境的项目、玩家运动受限和某些2D游戏区域最有用
在照明构建期间,会在阴影投射几何体上方生成可视性单元格。Actor可视性从每个单元格位置存储。由于预计算可视性是在线下生成的,因此你省去的是通常用于硬件遮挡查询的渲染线程时间,但代价是会增加运行时内存和照明构建时间。基于这一点,建议仅在玩家或摄像机可访问区域放置体积来保持可视性剔除。
设置和用法
首先,需要为关卡启用预计算可视性。方法是打开世界场景设置(World Settings) 并找到 预计算可视性(Precomputed Visibility) 部分。找到后,启用预计算可视性(Precomputed Visibility) 旁边的复选框
在世界场景设置(World Settings) 的 预计算可视性(Precomputed Visibility) 下面,你可以访问用来更改预计算可视性生成方式的设置
属性 | 说明 | 预计算可视性(Precomputed Visibility) | 是否在预计算可视性体积内以及沿着该关卡的摄像机轨道放置可视性单元格。预计算可视性能够缩短渲染线程时间,但代价是占用运行时内存和延长照明构建时间 | 仅沿着摄像机轨道放置单元格(Place Cells Only Along Camera Tracks) | 启用时,仅沿着摄像机轨道放置可视性单元格 | 可视性单元格(Visibility Cells)
| 用x和y表示的预计算可视性单元格的场景空间大小。大小越小,遮挡剔除效率越高,代价是运行时内存占用量和照明构建时间都会增加 | 可视性强度(Visibility Aggressiveness) | 确定预计算可视性的强度。设置强度越大,剔除的对象越多,但也会导致更多的可视性错误,例如弹出 |
从 模式(Modes) 面板中,将预计算可视性体积(Precomputed Visibility Volume) 拖到关卡并调节以适应可游戏区域
在预计算可视性发挥作用前,需要先 构建照明 并前往 显示(Show)>高级(Advanced)>预计算可视性(Precomputed Visibility) 使用关卡视口来启用预计算可视性单元格(蓝色框)
[backcolor=rgba(245, 240, 217, 0.75)]当你放置体积时,请在玩家可访问区域放置,而不是单个全包含体积。这样,你就不会在运行时存储和加载永远不会用到的可视性数据
如果你已经构建了照明,可以使用主工具栏中的 构建(Build) 下拉菜单,然后选择 预计算静态可视性(Precompute Static Visibility) 来生成可视性单元格,而不必每次重新构建照明
使用预计算可视性覆盖体积通过 预计算可视性覆盖体积,如果预计算可视性体积的自动生成结果不是你需要的结果,则可以手动覆盖Actor在场景位置中的可视性。这些也用于性能优化,只应放置在玩家能够访问的区域
放置要使用这个体积,从 模式(Modes) 面板中,将 预计算可视性覆盖体积(Precomputed Visibility Override Volume) 拖到关卡并调节以适应可游戏区域
预计算可视性覆盖体积预计算可视性覆盖体积(Precomputed Visibility Override Volumes) 使你能够覆盖现有预计算可视性体积内的Actor和关卡的可视性控制
属性 | 说明
| 覆盖可见Actor(Override Visible Actors) | 从该体积内部查看时,预计算可视性始终视为可见的Actor数组 | 覆盖不可见Actor(Override Invisible Actors) | 从该体积内部查看时,预计算可视性始终视为不可见的Actor数组 | 覆盖不可见关卡(Override Invisible Levels) | 从该体积内部查看时,预计算可视性始终视为不可见的Actor所属的关卡名称数组 |
使用 加号(+)按钮向数组列表添加任意数量的元素
对于添加的每个元素,使用拾取器或下拉选择菜单来添加Actor或关卡
①覆盖我们整个场景
然后放入②调整大小位置范围负责资产消失;①在整个场景中只需要有一个即可覆盖整个场景②可以有很多个
限制
预计算可视性具有以下限制:
不处理可移动Actor
不处理透光材质,如半透明或遮罩材质
单元格仅放置在表面上方。对启用飞行模式的项目益处不大
不能有效处理流送关卡。所有数据存储在持久关卡
只有静态阴影投射三角形会发生遮挡
官方文档
HLOD
https://docs.unrealengine.com/5.0/en-US/hierarchical-level-of-detail-in-unreal-engine/
预计算可视性体积
https://docs.unrealengine.com/5.1/zh-CN/precomputed-visibility-volumes-in-unreal-engine/
好!本期笔记分享就到这里,我们下期见! |