【UE4从零开始 082】全局光照
Lightmass(全局光照) 创建具有复杂光交互作用的光照图,例如区域阴影和漫反射。它用于预计算 static(静态) 和 stationary(静止) 光源的照明贡献部分。
编辑器和全局光照之间的通信由 Swarm Agent 处理,它管理本地的照明构建,也可以将照明构建分发到远程机器。默认情况下以最小化方式打开的 Swarm Agent 还会跟踪照明构建进度,并让您了解哪些机器为您工作,它们在做什么,以及每个机器使用了多少线程。
下图是Swarm Agent的一个示例图像(靠近底部的条形图显示了构建的完成程度)。
静态和静止光源的特性
漫反射
Diffuse Interreflection(漫反射) 是目前为止视觉上最重要的全局照明效果。在默认情况下,光源以全局光照反射,而材质的 BaseColor(基本颜色) 项控制有多少光(和什么颜色)向各个方向反射。这种效果有时被称为渗色。漫反射是入射光在各个方向上均匀反射,即不受观测方向或位置的影响。
这里是一个由全局光照创建的场景,只有一个方向的光,且仅显示直接照明。光源无法直接照射的区域是黑色的。这是没有全局照明的结果。
这是第一个漫反射全局照明反射的样子。注意左边椅子后面的阴影,这叫做间接阴影,因为它是间接光的阴影。漫反射的亮度和颜色取决于入射光和与之相互作用的材质的漫反射项。每次反射都比前一次更暗,因为一些光被表面吸收而不是被反射。柱子底座比其他表面得到更多的间接光,因为它们更接近直射光下的区域。
这是第二次漫反射。光线变得更弱,分布更均匀。
这是四种漫反射相结合的场景。比起手动放置补光灯,模拟全局照明可以创建更细致和现实的照明。尤其是补光灯无法实现间接阴影。
反射光照获取基础材质的漫反射颜色,如下所示。这就是渗色这个术语的由来。渗色最明显的是高度饱和的颜色。可以通过在 Primitive(基元)、Material(材质) 或 Level(关卡) 上提升 DiffuseBoost 来夸大效果。
角色照明
全局光照在 Lightmass Importance Volume(全局光照重要性体积) 内以较低的分辨率将样本放置在一个统一的三维网格体中,并以较高的分辨率将样本放置在角色可能行走的向上表面上。每个照明示例捕获来自各个方向的间接光照,但不包括直接光照。
第一幅图像是放置在地板上方的照明样本调试可视化,第二幅图像是光照模式下的相同场景。请注意红色挂毯上面的样本如何获取红色反射光。这些样本被可视化为单一颜色,但它们确实捕获了来自各个方向的光线。
然后,间接照明缓存使用这些照明样本为可移动对象插入间接照明。间接照明影响光源环境阴影的颜色,而不是方向。使用 Show(显示)-> Visualize(可视化)-> Volume Lighting Samples(体积照明样本) 在视口中预览它们。
限制
- 体积样本放置的默认设置将导致在大型贴图中出现大量样本。这将导致间接照明缓存插值时间非常大。使用 Static Lighting Level Scale(静态光源等级缩放) 减少大贴图中的样本计数。
- 全局光照重要性体积外的可移动对象将采用黑色间接照明。
环境遮挡
全局光照会自动计算出详细的间接阴影,但是为了艺术目的夸大间接阴影或者增强场景的接近感是很有用的。
Ambient occlusion(环境遮挡) 是从一个均匀明亮的上半球得到的间接阴影,就像阴天。全局光照支持计算环境遮挡,将其应用于直接和间接照明,然后将其烘焙成光照图。默认情况下,环境遮挡是启用的,可以通过取消选中 World Settings(世界场景设置) 下的 Lightmass(全局光照) 的 Lightmass Settings(全局光照设置) 中的 Use Ambient Occlusion(使用环境遮挡) 复选框来禁用。
第一幅图是一个有间接照明但没有环境遮挡的场景。第二幅图是有环境遮挡的相同场景,且环境遮挡应用于直接和间接照明,注意对象聚集的地方变暗。
无环境遮挡 | 有环境遮挡 |
---|---|
环境遮挡设置
属性 | 说明 |
---|---|
Visualize Ambient Occlusion(可视化环境遮挡) | 在构建照明时,仅使用遮挡因子覆盖光照图。这有助于准确地了解遮挡因子是什么,并比较不同设置的效果。 |
Max Occlusion Distance(最大遮挡距离) | 一个对象对另一个对象造成遮挡的最大距离。 |
Fully Occluded Samples Fraction(完全遮挡样本比例) | 为了达到完全遮挡,必须遮挡的样本的比例。请注意,还有一个逐基元FullyOccludedSamplesFraction,它允许控制一个对象对其他对象造成的遮挡量。 |
Occlusion Exponent(遮挡指数) | 指数越高,对比度越高。 |
默认AO设置(MaxOcclusionDistance = 200,FullyOccludedSamplesFraction = 1.0,OcclusionExponent = 1.0)。 | MaxOcclusionDistance = 5。去除低频遮挡,只留下角落遮挡。 | FullyOccludedSamplesFraction = 0.8。所有范围内的遮挡都变暗了,任何80%及以上遮挡的区域都饱和成黑色。 | OcclusionExponent = 2。遮挡从中等过渡到饱和黑色要快得多,遮挡被推到角落里。 |
---|---|---|---|
当间接照明反射次数大于0时,在照明构建时间范围内,环境遮挡几乎是没有的。
限制
- 环境遮挡需要相当高的光照图分辨率才能良好显示,因为它在角落变化很快。
- 预览质量构建在预览环境遮挡方面做得不是很好,因为AO需要非常密集的光照样本(就像间接阴影)。
遮罩阴影
全局光照在计算阴影时考虑了BLEND_Masked材质的不透明度遮罩。在编辑器视口中被剪切的部分材质也不会引起任何投影,这允许从树和叶子进行更详细的投影。
仅适用于静止光源的特性
环境法线天空遮挡
当启用 stationary(静止) 的 Sky Light(天空光照) 时,全局光照以环境法线的形式产生定向遮挡。
距离场阴影贴图
全局光照计算 stationary(静止) 光源的距离场阴影贴图。距离场阴影贴图即使在较低的分辨率下也能很好地保持其曲线形状;然而,它们不支持区域阴影或半透明阴影。
仅适用于静态光源的特性
区域光源和阴影
采用全局光照时,所有 static(静态) 光源在默认情况下都是区域光源。 Point Light(点光源) 和 Spot Light(聚光源) 使用的形状是一个球体,其半径是由 Lightmass Settings(全局光照设置) 下的 Light Source Radius(光源半径) 设置的。Directional Light(定向光源) 使用一个圆盘,位于场景的边缘。光源的大小是控制阴影柔度的两个因素之一,因为较大的光源会产生较柔和的阴影。另一个因素是从接收位置到阴影投射物的距离。随着距离的增加,阴影变得柔和,就像在现实生活中一样。
第一幅图像是一个静态定向光源,只有静态照明,半影大小在任何地方都是相同的。在第二幅图像中,全局光照计算的区域阴影的清晰度由光源大小和遮挡物距离控制。注意柱子阴影在接近地面的地方如何变得更加清晰。
Point Light(点光源) 和 Spot Light(聚光源) 的半径用黄色线框表示,影响半径用蓝绿色线框表示。在大多数情况下,需要确保光源不与任何投射阴影的几何体相交,否则光线将在该几何体的两侧发出。
半透明阴影
光在通过应用到静态阴影投射网格体的半透明材质之后,将失去一些能量,导致半透明的阴影。
半透明阴影颜色
穿过材质的光称为透射光,每个颜色通道的透射光量在0到1之间。值为0表示完全不透明,1意味着入射光可以不受影响的穿过。由于透射光没有材质输入,所以目前是由以下其他材质输入得出的:
- 光照材质
- BLEND_Translucent和BLEND_Additive:透射光 = Lerp(White、BaseColor、Opacity)
- BLEND_Modulate:透射光 = BaseColor
- 无光照材质
- BLEND_Translucent和BLEND_Additive:透射光 = Lerp(White、Emissive、Opacity)
- BLEND_Modulate:透射光 = Emissive
这意味着在不透明度为0时,该材质不会过滤掉入射光,也不会有半透明的阴影。在不透明度为1时,入射光将被材质的自发光或基本颜色(取决于是否被点亮)过滤。请注意,间接照明有时会洗掉半透明的阴影,使它们比半透明材料的自发光或漫反射更不饱和。
半透明阴影清晰度
有几个因素控制半透明阴影清晰度。
使用大光源(光源角度为5的定向光源) | 使用小光源(光源角度为0) |
---|---|
使用了一个小光源,但是光照图的分辨率太低,无法捕捉到清晰的半透明阴影 | 质导出的分辨率过低(由材质编辑器中的导出分辨率比例(Export Resolution Scale)控制),无法捕捉到清晰的阴影 |
---|---|
间接光源也受到半透明材质的影响。该图像中的窗口根据光线的透射情况对入射光进行过滤,然后光线会在场景中来回反射,且颜色会发生变化。
限制
- Translucent Materials(半透明材质) 目前不散射光,所以它们不会在其周围的对象上渗色。
- 第一个漫反射目前不受半透明阴影的影响。这意味着,通过半透明材质的第一反射间接光源不会被该材质的 Transmission(透射) 过滤。
- 目前不支持折射(透射光的焦散)。
使用全局光照获取最佳质量
使灯光显眼
漫反射纹理
渲染期间,光照像素颜色被确定为 BaseColor * Lighting(基本颜色 * 照明),所以基本颜色直接影响光照的可见度。高对比度或暗漫反射纹理使光照很难被注意到,而低对比度中距离漫反射纹理让光照的细节表现出来。
比较第一幅图像中使用中等漫反射纹理构建的场景和第二幅图像中同样使用全局光照但带有噪点的黑色漫反射纹理构建的场景照明清晰度。第二幅图像中,只有最频繁的变化才会在场景中被注意到,比如阴影过渡。
使用中等漫反射纹理构建的场景 | 带有噪点的黑色漫反射纹理构建的场景 |
---|---|
Unlit(无光照) 视图模式可用于查看漫反射项。第一幅图像中的场景在无光照视图模式下看起来更加平坦和单调,这意味着所有的工作都是由光照完成的,最终像素颜色的变化主要是由于光照的不同。(为了获得良好的照明,在无光照视图模式下,场景看起来单调乏味。)将照明和宏观特征烘焙到漫反射纹理中将抵消照明。
照明设置
- 避免环境照明!像环境立方体贴图这样的环境照明会在关卡中添加一个恒定的环境项,从而减少间接光照区域的对比度。
- 设置光源,使直接光照区域和间接光照区域之间有鲜明对比。对比度会让您更容易找到阴影过渡的位置,也会让您的关卡更有深度感。
- 设置光源,使明亮区域不是太亮,黑暗区域不全黑,而仍然有值得注意的细节。检查最终目标显示器上的黑暗区域是很重要的。
改善照明质量
光照图分辨率
使用高分辨率的纹理光照图是获得清晰、高质量照明的最好方法。使用高光照图分辨率的缺点是占用更多纹理内存和增加构建时间,所以需要做一个权衡。理想情况下,场景中的大部分光照图分辨率应该分配在高视觉影响区域和有高频阴影的地方。
全局光照解算器质量
Lightmass Solver(全局光照解算器) 设置是根据 Lighting Build Options(照明构建选项) 对话框中请求的构建质量自动设置的。生产应该提供足够好的质量,即在应用漫反射纹理时,穿帮不是很明显。
获取最佳照明构建时间
全局光照重要性体积
许多贴图在编辑器中已经网格化到网格的边缘,但是需要高质量照明的实际可玩区域要小得多。全局光照取决于关卡的大小发射光子,因此这些背景网格体将大大增加需要发射的光子数量,而照明构建时间也将增加。全局光照重要性体积控制全局光照发射光子的区域,允许将其集中在需要清晰间接照明的区域。在重要性体积之外的区域在较低的质量下只能得到一次间接照明的反射。
第一幅图像中显示了多玩家地图的系统占用线框视图。需要高质量照明的实际可玩区域是中心的绿色小团。
第二幅图像中显示了多玩家地图可玩区域的近景,并正确选择了设置 Lightmass Importance Volume(全局光照重要性体积)。全局光照重要性体积将该区域的半径从80,000单位减少到10,000单位,照明面积小了64x倍。
要将一个 Lightmass Importance Volume(全局光照重要性体积) 添加到某个关卡中,可以从 Modes(模式) 菜单的 Volume(体积) 选项卡中将这个 Lightmass Importance Volume(全局光照重要性体积) 对象拖动到关卡中,然后将其缩放到所需的大小。
还可以通过单击 Actor 下的 Details(细节) 面板中的 Convert Actor(转换Actor) 下拉框,将画笔转换为全局光照重要性体积。
单击该下拉框后,将出现一个菜单,可以在其中选择要替换画笔的Actor类型。
如果放置多个全局光照重要性体积,那么大多数照明工作将通过包含所有这些体积的边界框来完成。但是,体积照明样本仅放置在较小的体块中。
世界场景设置
可在 Lightmass(全局光照) 部分下的 World Settings(世界场景设置) 窗口中调整全局光照设置。
可从 Toolbar(工具栏) 单击图标以访问 World Settings(世界场景设置)。
属性 | 说明 |
---|---|
Force No Precomputed Lighting(强制不使用预计算照明) | 这将使全局光照无法生成光源和阴影贴图,强制关卡仅使用动态照明。 |
Static Lighting Level Scale(静态光源等级缩放) | 关卡的比例相对于引擎的比例,1虚幻单位 == 1cm。这可用于确定在照明中计算多少细节,较小的比例将大大增加构建时间。对于巨型关卡,可以使用2或4左右的较大比例来减少构建时间。 |
Num Indirect Lighting Bounces(间接照明反射次数) | 允许光从光源反射到物体表面的次数。0为仅直接光照,1为一次反射,以此类推。反射1次计算时间最长,其次是反射2次。连续的反射几乎是不受约束的,但也不会增加太多的光,因为光在每次反射后都会衰减。 |
Indirect Lighting Quality(间接照明质量) | 缩放全局光照GI解算器使用的样本计数。设置越高,会导致构建时间大量增加,但解算器穿帮(噪点、斑点)变少。请注意,这不会影响由于使用光照图(纹理接缝、压缩假影、纹索形状)而产生的穿帮。 |
Indirect Lighting Smoothness(间接照明平滑度) | 数值越高,间接照明越平滑,可以隐藏解算器噪点,但也会丢失清晰的间接阴影和环境遮挡。在增大 Indirect Lighting Quality(间接照明质量) 以获取最高质量时,把这个值降低一些是有用的(0.66或0.75)。 |
Environment Color(环境颜色) | 错过这个场景的光线会被染上的颜色。环境可以可视化为一个围绕着关卡的球体,向各个方向发射这种颜色的光。 |
Environment Intensity(环境强度) | 缩放环境颜色以允许HDR环境颜色。 |
Diffuse Boost(漫射增强) | 缩放场景中所有材质的漫反射效果。增加 DiffuseBoost(漫射增强) 是增加场景中间接照明强度的有效方法。在应用 DiffuseBoost(漫射增强) 之后,漫反射项的亮度被限制为1.0,以保持材质的能量守恒(这意味着光在每次反射时必须减少,而不是增加)。如果提高 DiffuseBoost(漫射增强) 未导致更明亮的间接照明,漫射项正被限制,光的IndirectLightingScale应该用于增加间接照明。 |
Use Ambient Occlusion(使用环境遮挡) | 使静态环境遮挡可以通过全局光照计算并内置到光照图中。 |
Direct Illumination Occlusion Fraction(直接照明遮挡率) | 多少AO应用于直接照明。 |
Indirect Illumination Occlusion Fraction(间接照明遮挡率) | 多少AO应用于间接照明。 |
Occlusion Exponent(遮挡指数) | 指数越高,对比度越高。 |
Fully Occluded Samples Fraction(完全遮挡样本比例) | 为了达到完全遮挡,必须遮挡的样本的比例。 |
Max Occlusion Distance(最大遮挡距离) | 一个对象对另一个对象造成遮挡的最大距离。 |
Visualize Material Diffuse(可视化材质漫反射) | 仅用导出到全局光照的材质漫反射覆盖法线直接和间接照明。这在验证导出的材质漫反射与实际漫反射匹配时非常有用。 |
Visualize Ambient Occlusion(可视化环境遮挡) | 仅用AO项覆盖法线直接和间接照明。这在调整环境遮挡设置时很有用,因为它隔离了遮挡项。 |
Level Lighting Quality(关卡照明质量) | 这反映了当前关卡的照明构建质量设置。 |
光源设置
下面是可以在 Lightmass(全局光照) 部分的光源属性中进行调整的 Lightmass(全局光照) 设置。
属性 | 说明 |
---|---|
Indirect Lighting Saturation(间接照明饱和度) | 0将导致间接照明完全不饱和,1将保持不变。 |
Shadow Exponent(阴影指数) | 控制阴影半影的衰减,或区域从完全光照到完全阴影的变化速度。 |
Light Source Angle(光源角度) | 对于 Directional Lights Only(仅定向光源),确定光的自发光面相对于接收器的延伸角度,影响半影大小。 |
基元组件设置
下面是可以在从 Modes(模式) 菜单的 Geometry(几何体) 选项卡中添加的 Brush(画笔) 上进行调整的 **Lightmass(全局光照)**设置。这些选项可以在 Brush(画笔) 的 Details(细节) 面板下找到。
属性 | 说明 |
---|---|
Diffuse Boost(漫射增强) | 缩放应用到此对象的所有材质的漫反射效果。 |
Fully Occluded Samples Fraction(完全遮挡样本比例) | 为了实现对其他对象的完全遮挡,从此对象中采集的AO样本必须被遮挡的比例。这允许控制一个对象对其他对象造成多少遮挡。 |
Shadow Indirect Only(仅间接阴影) | 如果选中此项,则此对象只会对间接照明产生阴影。这对于草非常有用,因为渲染的几何体只是实际几何体的表示,并不一定会投射出精确形状的阴影。它对草也很有用,因为产生阴影的频率太高,无法存储在预计算的光照图中。 |
Use Two Sided Lighting(使用双面照明) | 如果选中此项,该对象将被照亮,就好像它接受来自其多边形两侧的光照。 |
基本材质设置
下面是可以在 Details(细节) 面板下的 Base Node(基本节点) 的 Material(材质) 中进行调整的 Lightmass(全局光照) 设置。
属性 | 说明 |
---|---|
Cast Shadow as Masked(像在遮罩状态一样下投射阴影) | 对于半透明材质,将该材质视为已被遮罩的材质,以用于阴影投射。 |
Diffuse Boost(漫射增强) | 缩放此材质对静态照明的漫反射效果。 |
Export Resolution Scale(导出分辨率缩放) | 缩放导出此材质属性时的分辨率。当需要细节时,这对于提高材质分辨率非常有用。 |
【UE4从零开始 082】全局光照相关推荐
- 【UE4从零开始 083】体积光照贴图
Lightmass会生成表面光照贴图,用于静态对象上的间接光照.但是,动态对象(例如角色)也需要一种接受间接光照的方法.这种方法就是在构建时将所有点的预计算光照存储在名为 Volumetric Lig ...
- UE4 Lightmass 全局光照
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Unre ...
- 【技术美术图形部分】PBR全局光照:理论知识补充
写在前面 最近做东西的流程是这样的,想实现一个风格化森林小场景,场景体现的主体是风格化树和交互草 --> 于是用了两天时间学SpeedTree做树模型 --> 用了两天时间SD做了树干贴图 ...
- 基于RadeonRays的光线追踪全局光照实现方案
基于 RadeonRays 的光线追踪全局光照实现方案 最近半年一直在做全局光照方面的工作,陆续实现了辐射度算法和光线追踪两套方案,最终由于辐射度算法的局限性(只能基于漫反射)还是使用了光线追踪的方案 ...
- NVIDIA的黑科技3:VXGI体素全局光照
每一个行业都有自己的"圣杯",例如能源方面的核聚变.医药方面的癌症特效药以及空间探索方面的超光速推进力. 任何领域中"圣杯"的定义都是难以实现和代价高昂的,或者 ...
- Nicholas谈UE4高级渲染:动态光照迭代快
GameLook报道/6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办. 如何用好UE4引擎,发挥其强大的画面 ...
- UE4从零开始制作数字孪生道路监测平台
UE4从零开始制作数字孪生道路监测平台 UE4集成Cesium for Unreal和WebSocket,后端使用NodeJs搭建服务器进行数据模拟和真实数据实时转发. 1:新建UE4项目并集成Ces ...
- UE4基础学习笔记——— 光照01
目录 光照和阴影 静态光照概念 优缺点: 影响静态光照构建效果的因素 静态光照构建应注意事项 光照和阴影 计算机中的光照和阴影不能以现实生活中的光照和阴影等同视之.现实生活中有光就必有阴影,一体两面. ...
- Unity 5 中的全局光照技术详解
简介 全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算. ...
- VR有五种全局光照渲染引擎和各自的优缺点
来自: 喜欢(有些日子总是令人无法淡忘) 2008-10-20 15:53:26 VR有五种全局光照渲染引擎: Irradiance map(发光帖图) Photon map(光子帖图) QMC ...
最新文章
- 河北师范大学计算机科学与技术研究生好考吗,河北师范大学计算机科学与技术怎么样...
- 基础才是重中之重~用好configSections让配置信息更规范
- Redis 面试题 50 问,史上最全
- 南师大计算机语言学,南师大(语言学,文字学,文献学专业备考建议)
- python 生成器_Python生成器中的GeneratorExit
- python网络编程是什么意思_python网络编程(一)
- Sql Server 2005跨数据查询
- 如何将手机投屏到电脑_使用向日葵软件如何将手机投屏到电脑上
- 怎樣制作线段动画_几何画板如何做动画,看完明白了
- 第一次在CSDN上写博客
- Hermite(埃尔米特)插值法
- [生存志] 第57节 孔子微言春秋大义
- html蒙版源代码,jquery蒙版控件实现代码_jquery
- 前端培训丁鹿学堂:vue3之计算数据和watch监听深入
- 个人总结-网络安全学习和CTF必不可少的一些网站
- android手机裸眼3D技术原理和编程实现
- 怎么做 HDFS 的原地平滑缩容?
- Android开发对内存管理的学习总结
- 解密SSD,slc、mlc、tlc闪存芯片颗粒区别介绍
- dockerfile创建镜像与容器卷与容器查看