什么是距离场环境光遮蔽
使用有向距离场体积能获得可移动天空光照的阴影,该有向距离场体积在各刚性网格体周围预计算,以产生中等范围的环境光遮蔽。 在UE4中,这被称为 距离场环境光遮蔽(Distance Field Ambient Occlusion)(DFAO)。
距离场环境光遮蔽是 实时动态 效果,支持动态的场景变化。刚性网格体可移动或隐藏,都会在距离场环境光遮蔽效果中得到反应。与屏幕空间环境光遮蔽(SSAO)不同,遮蔽在场景空间遮挡物中进行计算,因此出屏丢失数据不会导致瑕疵。
对于基于使用距离场的实时技术而言,有一个比较显著的限制,就是其网格体仅支持轻微的非等分缩放(挤压),否则将会导致距离场变形所带来的问题。
另外,由于映射到每个物体上的体积纹理较小,因此大型静态网格体产生的效果较差。
开启距离场环境光遮蔽
要启用DFAO,需要经由以下 2 个步骤:
1.启用 项目设置(Project Settings)中 渲染(Rendering)部分中下的 生成网格体距离场(Generate Mesh Distance Fields)。
2.将 天空光照(Sky Light)置入场景,并将其移动性设为 可移动(Movable)。
调整距离场环境光遮蔽
利用 天空光照(Sky Light)组件下 距离场环境光遮蔽(Distance Field Ambient Occlusion)区块中的参数,可以调整距离场环境光遮蔽的效果,该效果都是开箱即用的,可在使用时根据需要实时调整,这里不再做过多赘述:
可视化距离场环境光遮蔽
利用距离场光遮蔽的视图模式可忽略其他正在发生的光照,查看关卡中的DFAO效果。
选择 显示(Show) > 可视化(Visualiz) > 环境场光遮蔽(Distance Fields Ambient Occlusion),即可使用关卡视口查看模式来显示将代表场景环境光遮蔽的距离场。
距离场环境光遮蔽的质量
距离场环境光遮蔽的质量由其显示的网格体 距离场的分辨率 所决定。 环境光遮蔽的阴影十分柔和,因此即使表面未正确显示,离表面较远的遮蔽也会十分精确。 这在天空遮蔽中通常不易察觉。使网格体较大的细节在网格体距离场中正确显示才能获得较好结果。
在静态网格体编辑器(Static Mesh Editor)的Details面板中调整网格体距离场分辨率。通常Distance Field Resolution Scale ≤ 10 是一个比较合理的设置
使用 网格体距离场显示 来查看网格体距离场的质量:
植物的距离场环境光遮蔽(可尝试使用)
针对使用 植物叶子工具绘制的Actor时,必须首先启用工具设置中的 影响距离场光照(Affect Distance Field Lighting) 选项。
即使距离场环境光遮蔽在表面运行,其仍会处理由小树叶组成的片状植物。在 静态网格体编辑器(Static Mesh Editor) 的 构建设置(Build Settings) 中, 启用植物类型资源的 生成两面距离场(Two-Sided Distance Field Generation) 可获得最佳结果。这将使已计算的遮蔽更加柔和。
Tip:
在天空光照选项中增加最小遮蔽(Min Occlusion)来防止资源内部完全变黑。
在此范例中,DFAO已被启用并正在使用”两面距离场生成”:
对于使用LOD的植物资源,距离场光遮蔽可能会产生过度遮蔽的问题。 网格体距离场在远距离仍准确、LOD关卡却使用较少三角形数量且可能会缩小到生成的网格体距离场中时,便会出现以上问题。
在这些LOD上使用 场景位置偏移(World Position Offset),将顶点拉出距离场即可解决此问题。相机的少量偏移通常就足以解决瑕疵。 对于公告板来说,使用像 素深度偏移功 能可创建有效深度值, 更好地显示原始3D三角形网格体。
以上内容转载自:https://zhuanlan.zhihu.com/p/365645774
仅供学习参考,无商业用途。