## 前言 本文是对于《Daedalus51的灯光学院系列视频》、《Lighting with Unreal Engine Masterclass视频》、《Ue4照明技术引导系列视频》的总结。相关网址与链接可以参看前一篇文章。 撰写本文时,《Daedalus51的灯光学院系列视频》只看完第一章,所以本文后续还会更改,请各位读者注意。另外因为本人技术能力有限,如有错误还请各位指正。 ### 三个视频的观看建议 >Lighting with Unreal Engine Masterclass 从简到深地讲解了静态光照与动态光照特性对比、2种光照方案的技术点以及Epic的基本打光流程。缺点是没有很好的讲解具体的打光思路以及流程。 >Ue4照明技术引导系列视频 该系列一共2个视频,主要介绍了光照技术中的各种细节与参数。是功能与参数讲解向视频。PS.个人感觉配套的Wiki比视频有用多了,Wiki中讲解若干阴影问题的解决方法。本视频已经被搬运到B站,中(机翻)英双字幕。https://www.bilibili.com/video/av59548243/ >Daedalus51的灯光学院系列视频 一共19个视频,看完需要1~2个星期。一共4个章节,每个章节都是一个案例。通过这个视频你可以大致了解到Ue4的打光流程、每步操作的意义以及部分功能背后技术的原理。让你了解如何判断场景出了哪些问题,出现什么问题该如何解决,什么时候该做什么。 建议的观看顺序为:《Lighting with Unreal Engine Masterclass》=》 《Ue4照明技术引导系列视频》=》《Daedalus51的灯光学院系列视频》 ## 灯光类型对比 以下几点都是直接翻译视频中的观点,这里我总结一下: >动态光照的主要优点是所有效果都是实时的,对于效果的迭代会非常快。主要缺点是没有GI。 >静态光照的主要优点有GI,但因为效果不是实时的,迭代的效率相当会相对较低。 静态光照一般会使用Stationary类型的灯光,其中的Dynamic Shadow Distance参数是切换动态与静态阴影开关,当为0是所有阴影都将是烘焙的,当数值较大时(5000)所有近距离阴影都将是动态的。Daedalus51推荐的数值为3000~8000之间。(在这个数值的距离观察时会切换为静态阴影) ### 静态烘焙灯光优缺点 优点: - 拥有GI效果 - 消耗较少的软阴影效果 - 低GPU性能消耗较小 缺点: - 迭代效率低 - 光照效果是静止的 - 当地图较大时,会占用大量显存。 ### 动态实时灯光优缺点 优点: - 所见即所得 - 光照效果是动态的 缺点: - 没有GI效果 - GPU性能消耗较大 ### Static 烘焙直接光照与间接光照(GI) GPU性能消耗最少 ### Stationary 烘焙间接光照 高质量的直接关照与阴影(动态) 高质量与中等性能消耗 四个及以上的灯光重叠限制(多出的灯会使用static方式计算) ### Movable 动态光照与阴影 GPU性能消耗最多 没有间接光照 ## 前置流程 以下两点主要参考于Lighting with Unreal Engine Masterclass视频,部分来自于Daedalus51的视频。 ### 实现没有干扰的默认光照场景 使用初始模板建立的场景。 #### 关闭后处理空间中干扰项 以下操作都在Post Process Volume中。用于去除对场景亮度的干扰。 ##### 禁用自动曝光 视频中的操作是在后处理空间中将最低亮度与最高亮度设为1。 目前版本已经使用物理灯光,所以第一条,应该改为将Lens-Exposure 中的Min Ev100与Max Ev100设为0。 ##### 禁用SSAO以及SSR(空间反射) 将ScreenSpaceReflection中的Intensity设为0。将Ambient Occlusion的Intensity设为0。反射球可以不用删掉()。 ##### 保持默认Tone Mapping 确定Tonemapper(新版本为Film)中值为默认值。 ##### 关闭Vignetting与Bloom效果 将Lens-Bloom中的Intensity设为0。将Lens-Image Effect中Vignette Intensity设为0。 ##### 杂项 后处理的GI选项只对LightMass烘焙过的GI有效。、 不建议使用后处理的AO中的Cubemap Texture(已经被天光代替) #### 确认天光与方向光为默认数值 天光:亮度为1 方向光:亮度为3.141593(π) #### 设置测试用球(与色卡) 视频使用了Chrome球(BaseColor 1、Metallic 1、 Roughness 0)与Gray球 50%灰(BaseColor 0.18(Linear)、Roughness 1、Metallic 0)进行测试。使用亮度为3.141593(Pi)的方向光,此时灰球的亮度为0.5。(使用Color Picker、或者截图使用Photoshop查看) 但其实引擎已经预制了颜色校准工具,只需要在View Options中勾选Show Engine Content,之后搜索ColorCalibrator,将SM_ColorCalibrator拖到场景中即可。 ### 确定你的材质是物理正确的 在将模型导入并赋予材质后检查场景: 《Lighting with Unreal Engine Masterclass》说 几个常见的错误: BaseColor:太暗或者太亮 Metallic:应该为0或者1。(黑色或者白色Mask) Specular:应该为0~1范围的浮点数。不应该为颜色值。(它会导致反射亮度不一致) 常见材质的BaseColor数值都可以网上查询到,我记得《全局光照技术》中有说。世界中没有物体是纯白、纯黑的(即RGB为0或者1)。 PS.关于“Metallic应该为0或者1”,演讲者的意思是纯材质,排除混合材质情况。 ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Lighting/PbrDiffuse.png) #### 关于BaseColor Daedalus51提出场景中的BaseColor应该要较为平缓(亮度、对比度与饱和度别太高),这一点也在在Ue4的LightMass文档中的“使用LightMass获取最佳质量”章节中有提到。 特别是饱和度,饱和度如果过高会让人感觉画面奇怪。1.5章节开头就在调整贴图的饱和度与亮度。 检查的方法是切换到BaseColor查看模式截图,再使用Photoshop的Histogram查看颜色分布。Daedalus51使用的方法是,使用PS对截图使用平均模糊滤镜,之后观察图片的各个值。 但从视频中可以看出,这个步骤更多的是靠经验,所以这里还是建议各位仔细看下对应视频。 ##### 在Ue4中修改贴图 一种简单修复方法就是打开TextureAsset,直接修改里面的饱和度、亮度、对比度等选项。(但是作者还是建议使用Photoshop修改源文件再更新Asset) ## 结语 在下一篇文章中,我会总结各个步骤的重要细节,以及各个功能所应用的场景。但是文章只能记录操作步骤与流程,不能记录使用经验,所以本人依然推荐想深入学习光照的人去看一下Daedalus51的视频。 #### Daedalus51视频中的场景 第一章节: 户外傍晚: 使用纯动态光照 距离场AO(SSAO好像关闭了) CubeMap天光并且自定义下半球颜色 其他为后处理 户外早晨: 使用静态光照(Stationary的动态阴影不算的话) CubeMap天光并且自定义下半球颜色 第二章节: 洞穴场景(可以看成是室内)。