Unreal4Lightmass全局光照讲解0036bate1
全局光照(Lightmass) 创建具有复杂光交互作用的光照图,例如区域阴影和漫反射。它用于预计算具有固定和静止运动性的光源的照明贡献部分。
编辑器和全局光照之间的通信由 Swarm Agent 处理,它管理本地的照明构建,也可以将照明构建分发到远程机器。默认情况下以最小化方式打开的Swarm Agent还会跟踪照明构建进度,并让你了解哪些机器为你工作,它们在做什么,以及每个机器使用了多少线程。
下图是Swarm Agent的一个示例图像(靠近底部的条形图显示了构建的完成程度)
文章图片
静态和固定灯源的特性
漫反射
漫反射(Diffuse Interreflection) 是目前为止视觉上最重要的全局照明效果。在默认情况下,光源以全局光照反射,而材质的基本颜色(BaseColor)项控制有多少光(和什么颜色)向各个方向反射。这种效果有时被称为渗色。漫反射是入射光在各个方向上均匀反射,即不受观测方向或位置的影响。
【Unreal4Lightmass全局光照讲解0036bate1】这里是一个由全局光照创建的场景,只有一个方向的光,且仅显示直接照明。光源无法直接照射的区域是黑色的。这是没有全局照明的结果。
文章图片
这是第一个漫反射全局照明反射的样子。注意左边椅子后面的阴影,这叫做间接阴影,因为它是间接光的阴影。漫反射的亮度和颜色取决于入射光和与之相互作用的材质的漫反射项。每次反射都比前一次更暗,因为一些光被表面吸收而不是被反射。柱子底座比其他表面得到更多的间接光,因为它们更接近直射光下的区域。
文章图片
这是第二次漫反射。光线变得更弱,分布更均匀。
文章图片
文章图片
这是四种漫反射相结合的场景。比起手动放置补光灯,模拟全局照明可以创建更细致和现实的照明。尤其是补光灯无法实现间接阴影。
文章图片
反射光照获取基础材质的漫反射颜色,如图所示。这就是渗色这个术语的由来。渗色最明显的是高度饱和的颜色。你可以通过在基元(Primitive)、材质(Material)或关卡(Level)上提升_DiffuseBoost_来夸大效果。 Character lighting角色照明
全局光照在全局光照重要体积(Lightmass Importance Volume) 内以较低的分辨率将样本放置在一个统一的三维网格体中,并以较高的分辨率将样本放置在角色可能行走的向上表面上。每个照明示例捕获来自各个方向的间接光照,但不包括直接光照。
文章图片
第一幅图像是放置在地板上方的照明样本调试可视化,第二幅图像是光照模式下的相同场景。请注意红色挂毯上面的样本如何获取红色反射光。这些样本被可视化为单一颜色,但它们确实捕获了来自各个方向的光线。 然后间接照明缓存使用这些照明样本内插可移动对象的间接照明。间接照明影响光源环境阴影的颜色,而不是方向。使用显示(Show)->可视化(Visualize)->体积照明样本(Volume Lighting Samples)在你的视口中预览它们。
限制
1.体积样本放置的默认设置将导致在大型贴图中出现大量样本。这将导致间接照明缓存插值时间非常大。使用静态光源等级缩放(Static Lighting Level Scale)减少大贴图中的样本计数。环境遮挡
2.全局光照重要体积外的可移动对象将采用黑色间接照明。
全局光照会自动计算出详细的间接阴影,但是为了艺术目的夸大间接阴影或者增强场景的接近感是很有用的。
环境遮挡(Ambient occlusion) 是你从一个均匀明亮的上半球得到的间接阴影,就像阴天。全局光照支持计算环境遮挡,将其应用于直接和间接照明,然后将其烘焙成光照图。默认情况下,环境遮挡是启用的,可以通过取消选中世界场景设置(World Settings)下的全局光照(Lightmass)的全局光照设置(Lightmass Settings)中的 使用环境遮挡(Use Ambient Occlusion) 复选框来禁用。
文章图片
第一幅图是一个有间接照明但没有环境遮挡的场景。第二幅图是有环境遮挡的相同场景,且环境遮挡应用于直接和间接照明,注意对象聚集的地方变暗。
文章图片
限制遮罩阴影
环境遮挡需要相当高的光照图分辨率才能良好显示,因为它在角落变化很快。
预览质量构建在预览环境遮挡方面做得不是很好,因为AO需要非常密集的光照样本(就像间接阴影)。
全局光照在计算阴影时考虑了BLEND_Masked材质的不透明度遮罩。在编辑器视口中被剪切的部分材质也不会引起任何投影,这允许从树和叶子进行更详细的投影。
文章图片
仅适用于固定光源的特性
环境法线天空遮挡
当启用具有固定移动性的天空光照(Sky Light) 具有固定移动能力时,全局光照以环境法线的形式产生定向遮挡。
距离场阴影贴图 全局光照计算固定光源(Stationary Lights) 的距离场阴影贴图。距离场阴影贴图即使在较低的分辨率下也能很好地保持其曲线形状;然而,它们不支持区域阴影或半透明阴影。
仅适用于静态光源的特性 区域光源和阴影
采用全局光照时,所有具有静态移动性的光源在默认情况下都是区域光源。点光源和聚光灯光源使用的形状是一个球体,其半径是由全局光照设置(Lightmass Settings)下的光源半径(Light Source Radius)设置的。定向光源使用一个圆盘,位于场景的边缘。光源的大小是控制阴影柔度的两个因素之一,因为较大的光源会产生较柔和的阴影。另一个因素是从接收位置到阴影投射物的距离。随着距离的增加,阴影变得柔和,就像在现实生活中一样。
文章图片
第一幅图像是一个静态定向光源,只有静态照明,半影大小在任何地方都是相同的。在第二幅图像中,全局光照计算的区域阴影的清晰度由光源大小和遮挡物距离控制。注意柱子阴影在接近地面的地方如何变得更加清晰。
点光源和聚光灯光源的半径用黄色线框表示,影响半径用蓝绿色线框表示。在大多数情况下,你需要确保光源不与任何投射阴影的几何体相交,否则光线将在该几何体的两侧发出。
文章图片
半透明阴影
光在通过应用到静态阴影投射网格体的半透明材质之后,将失去一些能量,导致半透明的阴影。
文章图片
半透明阴影颜色
穿过材质的光称为透射光,每个颜色通道的透射光量在0到1之间。值为0表示完全不透明,1意味着入射光可以不受影响的穿过。由于透射光没有材质输入,所以目前是由以下其他材质输入得出的:
光照材质
1.BLEND_Translucent和BLEND_Additive:透射光 = Lerp(白色(White)、基本颜色(BaseColor)、不透明度(Opacity))无光照材质
2.BLEND_Modulate:透射光 = 基本颜色(BaseColor)
1.BLEND_Translucent和BLEND_Additive:透射光 = Lerp(白色(White)、自发光(Emissive)、不透明度(Opacity))这意味着在不透明度为0时,该材质不会过滤掉入射光,也不会有半透明的阴影。在不透明度为1时,入射光将被材质的自发光或基本颜色(取决于是否被点亮)过滤。请注意,间接照明有时会洗掉半透明的阴影,使它们比半透明材料的自发光或漫反射更不饱和。
2.BLEND_Modulate:透射光 = 自发光(Emissive)
半透明阴影清晰度
有几个因素控制半透明阴影清晰度。
文章图片
第一幅图像中使用大光源(光源角度为5的定向光源),第二幅图像中使用小光源(光源角度为0)。
文章图片
第一幅图像中使用了一个小光源,但是光照图的分辨率太低,无法捕捉到清晰的半透明阴影。第二幅图像中,材质导出的分辨率过低(由材质编辑器中的导出分辨率比例(Export Resolution Scale)控制),无法捕捉到清晰的阴影。
文章图片
间接光源也受到半透明材质的影响。该图像中的窗口根据光线的透射情况对入射光进行过滤,然后光线会在场景中来回反射,且颜色会发生变化。 限制
1.半透明材质(Translucent Materials) 目前不散射光,所以它们不会在其周围的对象上渗色。使用全局光照获取最佳质量
2.第一个漫反射目前不受半透明阴影的影响。这意味着,通过半透明材质的第一反射间接光源不会被该材质的 透射(Transmission) 过滤。
3.目前不支持折射(透射光的焦散)。
使灯光显眼 漫反射纹理 渲染期间,光照像素颜色被确定为基本颜色 * 照明,所以基本颜色直接影响光照的可见度。高对比度或暗漫反射纹理使光照很难被注意到,而低对比度中距离漫反射纹理让光照的细节表现出来。
文章图片
比较第一幅图像中使用中等漫反射纹理构建的场景和第二幅图像中同样使用全局光照但带有噪点的黑色漫反射纹理构建的场景照明清晰度。第二幅图像中,只有最频繁的变化才会在场景中被注意到,比如阴影过渡。 无光照(Unlit) 视图模式可用于查看漫反射项。
文章图片
第一幅图像中的场景在无光照视图模式下看起来更加平坦和单调,这意味着所有的工作都是由光照完成的,最终像素颜色的变化主要是由于光照的不同。(为了获得良好的照明,在无光照视图模式下,你的场景应看起来单调乏味。)将照明和宏观特征烘焙到漫反射纹理中将抵消照明。 全局照明(也称为间接光照和间接照明)模拟与几何体和材质表面的照明交互,以向场景和项目中添加逼真的照明。该模拟还考虑了与之相互作用的材料的吸收和反射率。
可通过以下两种方式之一来模拟光在3D世界中的行为方式:使用支持光运动的和动态光交互的实时照明方法,或使用预先计算(或烘焙)的照明信息(存储在应用于几何体的纹理中)表面。虚幻引擎提供了这两种照明场景的方式,并且它们并不是彼此唯一的,因为它们可以彼此无缝融合。
文章图片
这些是两种照明方式处理的优势对比,可帮助您了解它们的用法和功能: 预先计算的全局照明 虚幻引擎中的灯光烘焙系统提供了两种使用Lightmass计算灯光数据的方式:在CPU或GPU上。预计算的照明用于获得不受实时限制影响的高质量结果。但是,由于照明是生成的并存储在应用于几何体的纹理中,因此无法动态更改。
在下面探索可用的预先计算的照明工作流程。
推荐阅读
- 06|06 | 全局锁和表锁 (给表加个字段怎么有这么多阻碍((待评论)))
- python|【Python】全局变量的使用,全局变量的修改
- C中全局变量和static变量的存储与初始化
- 月光照着我的灵魂回家
- 我的Vue学习笔记
- Fescar|Fescar - RM 全局事务提交回滚流程
- 时光照顾不来所有人
- 聊聊springboot项目全局异常处理那些事儿
- webflux超时时间配置
- oeasy教您玩转vim - 85 - # 全局命令