UE4源码剖析之Distance Cull

距离剔除

概述

  1. 距离剔除方法基本原理:根据Actor距离摄像机的距离来渲染或不渲染Actor。
  2. 距离剔除类型:按Actor距离进行剔除,距离剔除体积。
  1. 按Actor距离进行剔除:
  • 关卡中的每个Actor都有自己的绘制距离设置,可以使用“Detail面板”->“LOD”->“Min Draw Distance”和“Desired Max Draw Distance”进行设置。
  • Min Draw Distance表示在不再渲染Actor之前能够接近Actor的最近距离。
  • Desired Max Draw Distance表示不再渲染Actor之前能够远离Actor的最远距离。

uploading.4e448015.gif正在上传…重新上传取消

  1. 剔除距离体积:
  • “剔除距离体积”使用一个距离和大小数组来设置进入体积后是否渲染Actor
  • 这些体积可存储任意数量的“size”和“distance”组合(剔除距离对)。这些剔除距离对会被映射到Actor(沿其最长有效维度)的边界,然后指定给关卡中的该Actor实例
  • 该剔除方法是包含某种类型的建筑物或结构的大型户外关卡的理想选择,这些建筑物或结构拥有细节丰富的内部设计,需要剔除体积过小而在远距离处并不重要的对象
  • Size和CullDistance含义:
  1. 该体积中大小最接近Size单位的对象会在它们距摄像机CullDistance单位或更远时被从视野中剔除。
  2. 当CullDistance为0,时表示,该体积中大小最接近 Size单位的对象将永不会被剔除。这可以确保尺寸极大的对象被视为无穷大,这意味着它们距摄像机的距离永不可能远到应将它们剔除的程度。

实现原理

Rendering->LOD->MinDraawDistance,Desired Max Draw Distance,Current Maximum Draw Distance

主要影响参数位置:

uploading.4e448015.gif转存失败重新上传取消

 

 

I

 

重要修改参数

性能结果参数

使用步骤

  1. 通过编辑器中的“Modes”面板向关卡中添加“Cull Distance Volume”,并且可以缩放它,以适应关卡需求。

uploading.4e448015.gif转存失败重新上传取消

  1. 选中“Cull Distance Volume”之后,使用“Details”面板访问“Cull Distance”对数组。每个“Cull Distance”对都包含“Size”和“Cull Distance”数值。单击“+”可向数组元素列表底部添加新Cull Distance对。

uploading.4e448015.gif转存失败重新上传取消

  1. 插入,删除,赋值剔除距离对:

uploading.4e448015.gif转存失败重新上传取消

注意事项

  1. 剔除距离体积对于优化包含精细内部空间的大型室外关卡非常有用。当室内空间小到可被视为不重要时,可以剔除它们。
  2. 添加更多对数值并且进行更多测试将有助于改善出现的“突然出现”问题。
  1. 在关卡视口的“Game”视图下在关卡中四处移动,以查看对象是否存在任何可见的“突然出现”。
  1. 通常使用单个剔除距离体积覆盖整个关卡。
  1. 包含可代表关卡中大部分Actor的多种剔除距离对。
  2. 设置剔除距离对时,可先从较大尺寸和距离开始,以了解你希望使用的上限和下限。
  3. 对于体积中的区域,你可以使用额外的剔除距离体积实现对剔除的额外的更加激进的控制。
  1. 剔除距离对组仅在低于个体Actor的 最大绘制距离 时才会被使用。
  2. 如果某些Actor应永不被剔除距离体积剔除,应该使用该Actor的“Details”面板并禁用“Allow Cull Distance Volume”。
  1. 如果需要为大量Actor禁用此选项,可以考虑使用最后一个剔除距离对作为“过大不应剔除距离”数值(Size的数值很大,Cull Distance为 0)。这可以防止高山或建筑物等非常大的对象被剔除。

实验结果

未完待续!!!

你可能感兴趣的:(UE4)