前言
在这一章我将会翻译一些我个人觉得有用的文章以此来作为这个系列的结尾。
本文图较多,手机党请注意。本文仅作为个人笔记使用,不保证所有操作都是正确的,请各位谨慎阅读
推荐学习顺序
对于有一定基础,知道各种灯光概念却不知如何下手的读者,首先推荐观看Daedalus51的第一章节视频。因为第一章节中的知识与技巧几乎覆盖了整合视频。后续的视频虽然也还行,但是相对来说意义就没那么大,除非你相当有时间。
之后就是推荐看我写的《灯光总结系列》,里面总结各种操作与参数,你可以把它作为参考书进行对照。但这几篇文章因为本人能力、精力有限,没有经过仔细整理,看完会些混乱。
所以之后我推荐看Daedalus51推荐的流程文章与李文磊老师的《在UE4中实现灯光之美》。
另外推荐几个官方的视频:
Ue4曝光入门
https://www.youtube.com/watch?v=Ehg4sLxOH1o
Ue4校色入门
https://www.youtube.com/watch?v=0HMFczWSRig
Ue4后处理入门
https://www.youtube.com/watch?v=aGsUU_bvOgw&feature=youtu.be
Daedalus51推荐的流程文章
原文地址:https://80.lv/articles/setting-lighting-in-unreal-engine-4-20/
场景初步调试
首先清理场景,这一步包括了:调整材质、移除所有旧灯光、放置Lightmass Importance Volumes与Lightmass Portals。一开始的测试渲染会使用默认的LightMass设置。基础效果差不多后,调整到以下参数,并切换至中级效果进行烘焙,至到最终渲染。
体积光照贴图密度取决于环境雾精度。如果对性能没有要求可以使用更高的采样与更高的光照贴图分辨率。
再光照模式下查看效果,场景只烘焙了自发光。
光照贴图密度
最终烘焙所用的LightMass设置参数
设置主要光源
在设置完场景后,开始规划主要光源。首先需要一个来自外部的明亮光源来提供室内绝大多数的照明,但需要保证室内暗部
的灯光依然可见。所以作者选择阴天正午时分的Hdr环境图来充当天光(使用场景捕获+环境球模型+环境球材质)。调整天光材质的亮度,至到其物理亮度达到阴天亮度值(使用Ue4的像素检测工具可以检测物理亮度值)。你可以使用Ue4的像素检测工具检查环境球基础关键区域(天空、亮度云层、暗部云层、太阳),但在检查时需要关闭ToneMappering并保持曝光度为0,
以及关闭雾气等处于摄像鱼天空之间的显示效果,不然像素检测工具会给出错误的数值。
中午时分的天空亮度大约在400(云彩暗部)~10000(云彩亮部)${cd/m^2}$。基于作者想要达到效果,曝光值(EV)定在5~7之间就比较室内渲染。对于外部的环境球可以使用EV10。注意一下HDR亮度:
自发光光源
作者以相同的方式来设置自发光物体。以下是室内LightingOnly模式下只烘焙自发光的效果(应该还有天光,本人并不赞同使用自发光来代替灯光,除非你的灯光形状非同一般。):
因为场景中的金属物体会反射到环境球,所以下一步就应该添加反射球了。
细节光照模式(关闭屏幕空间反射)第一张为只有环境球反射高光效果。第二张为只有反射球效果。
灯光形状与反射捕捉
在几次测试烘焙后,作者开始放置实际光源与反射球。作者更加倾向于以真实环境作为参考来设置灯光属性(例如光源形状与参数)。作者会尽可能地使用Static类型的灯光,如果该灯光会作用于角色等动态物体,那就会使用Stationary类型的灯光。体积光照贴图可以弥补动态光照的不足,但这取决于你对显存与GPU运算能力的把控。
作者更喜欢使用色温来控制灯光颜色。毕竟大多数灯光厂家都会标注灯光色温,而且Unreal4可以直接通过色温来控制灯光颜色。以下是场景中主光源的设置参数:
后处理校色与效果打磨
因为本人对校色不了解,这边就直接贴原文了:
Once I’m happy with the lighting, I move over to color grading and polishing. I adjusted some of the Base Colors to push them more in line with a “vintage” green/orange color palette too. During early color grading explorations, I tend to grade in DaVinci Resolve because of the control and scopes, but I eventually recreate the grade directly in the engine to keep it HDR-ready. Unreal lacks some of the tools available in Resolve, but you can achieve a near identical result with what Epic has provided thus far.
Depending on the look, you can usually get most of the way there with the Global controls, then fine tune the shadows, mid-tones, and highlights with their respective controls. Highlights and Shadows will have a threshold value that acts as the range of what is considered a highlight or shadow, and anything in between those two will then be considered mid-tones.
To explain my color grading a little easier, here is a screenshot of my settings. It’s worth pointing out that I avoid adjusting the tone mapper. Combined with color grading, it can get very messy to manage. It’s better to consider your tone mapper as your “film stock,” and only modify it if you want to change the overall look and not on a per shot basis. I also try to work in stages and as simple as possible. Instead of jumping around between the different controls, I go from Global to Shadows, to Midtones, to Highlights (or whatever I know is the most effective for my grade) and only use what I need. If I can achieve the look I want with one or two sliders, compared to 5 or 6 with 10% influence, I’d rather do that because it’s cleaner, easier to control, and easier to revisit later on without being completely lost.
- White Balance: I warmed up the scene slightly to increase the feeling of everything being bathed in yellow/orange from the incandescent bulbs and diffused light fixtures
- Tint: a similar concept to the White Balance, but on a green/magenta scale. I pushed it more towards green to aid in the yellowish/sickly feeling. It also helps make the orange in the Base Color pop a little more
- Global:
- Saturation: I adjusted the saturation overall to bring out the orange more
- Shadows:
- Saturation: Desaturated shadows. A common look that film stocks have along with desaturated highlights, but the ACES tone mapper does that one for you
- Contrast: I use Contrast pretty often because it’s designed around keeping 18% gray neutral and it naturally gives you complementary colors, quickly getting you a more pleasing color palette
- Offset: Added a little bit of blue to the shadows
- Midtones:
- Contrast: Same idea as the shadows. Pushed complimentary colors a tiny bit which helped with additional blues to smooth out the shadow offset
- Gain: Works kind of like a multiplier, and I wanted to get some bleaching around the light areas
- Highlights:
- Gain: Mostly tinted the white spots (emissives and sky) green to push the same feeling as the overall Tint from above, but with a tiny bit of a roll-off into the higher end of the mid-tones to add to the “bleaching”
《在Ue4中实现灯光之美》中的灯光Fake技巧
在传统的打光我们会去调整灯光的反差,比如提高对比,降低对比,比如在太阳底下我们拍摄电影我们会通过柔光板,或者遮光板去降低反差,在UE里面也可以通过一些简单的方式,通过透明物体去投影,按需求去控制影子的浓度,降低对比度。
使用贴图与定制的贴花材质来区域阴影伪造。
使用后处理材质,控制场景亮度、饱和度。对于使用LightMass烘焙的场景可以在调整曝光度比值与间接光照强度。
一些场景的光线强度分布差距较大时,会出现只能讨好一边的情况,所以我们可以其中一边为标准调整另一边的灯光亮度。在传统的拍电影过程中也能实现,拍电影的灯光功率都非常大,为了平衡室内外的灯光,室内就是打了这么亮的灯光,当然在引擎中或者游戏中我们非常容易的就能实现。
问题解答
原文地址:
https://wiki.unrealengine.com/LightingTroubleshootingGuide
静态部分
为什么我的阴影死黑?
在光照条件下,深黑色阴影通常意味着没有填充光。这种情况经常发生在室外环境中,一个方向的光代表太阳。UE4有一个内置的方法来提供一个影响填充光的世界,我们把它称为天光。
不想生成光照贴图
- Rendering——Lighting——AllowStaticLighting确保引擎不会生成光照贴图。(项目级)
- 打开世界设置——Lightmass——Force No Precomputed Lighting。(关卡级)
双面渲染物体的阴影问题
- 在StaticMesh——Lighting——LightMassSetting中勾选UseTwoSidedLighting。(仅对静态光照)
- 在物体的材质选项中勾选TwoSided
灯光上出现X标记
因为有超过4个光源重叠在一起,这样会严重影响性能。动态光在该重叠区域会强制设为一个动态光源,而静态光源会在烘焙光照时弹出重叠提示。
动态部分
阴影不正确
方向光
Dynamic Shadow Distance Movable
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
Dynamic Shadow Distance Stationary
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
Num Dynamic Shadow Cascades
view frustum被分割成的级联的数量。更多的级联将导致更好的阴影分辨率,但会显著增加渲染成本。
Cascade Distribution Exponent
控制级联的分布,是离相机更近(高值)还是更远(低值)。值1表示转换将与分辨率成正比。
Cascade Transition Exponent
级联之间的过度参数,较低的数值产生会较生硬的过度,而较高的数值会产生较平缓的过度。
Shadow Distance Fadeout Fraction
阴影淡出参数。较高的值会使阴影显得较淡一些,而较低的值会使阴影显得较深一些。
Far Shadow
级联阴影的远阴影开关,可以解决当摄像机处于较远距离时,物体的阴影会消失的问题。
调整级联阴影以得到更好的效果
通过调整上述设置,可以很好地调整阴影的出血值和精度。下一节将尝试调整到最佳程度,以获得更好的精度与阴影。找到一种适合任何特定游戏的平衡将需要耗费时间、精力来进行大量测试。
以下是默认设置下会出现的问题。
调整后的结果
对于所有的动态光源
Shadow Bias
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
Shadow Filter Sharpness
控制阴影边缘的锐化程度。
为什么可移动光源在较远时其遮挡关系会出错
为了解释这一点,我们首先需要了解Ue4的渲染优化方法。引擎根据场景深度来判断场景中Mesh的可见性(首先物体需要处于摄像机矩阵中),如果Mesh过于远离摄像机,Mesh将不会被渲染或是被遮挡。所以就会出现图中的现象。
你可能会注意到,当选择物体时,灯光恢复正常。这是预料之中的,因为它处于焦点状态。
解决方法是:在Mesh属性界面,调整Bounds Scale选项的大小。默认值设置为1.0。建议的调整范围为1.1、1.2左右,调整的量不宜过大,会影响性能与阴影质量。
可以viewport > Show > Advanced > Bounds 开启包围盒显示进行debug。
另一个解决思路就是使用聚光灯或者使用静态光烘焙光照贴图。
静态部分
你可以在世界设置中的LightMass调整以下参数以获得更好的效果:
Indirect Lighting Quality设置成2或者更高。
Indirect Lighting Smoothness通常被设置为0.65~0.7之间。数值越低噪点会越多。
如何控制静态照明的全局照明效果?以及光线反弹的美妙之处
默认情况下,LightMass的光线反弹次数为3,我们可以在Settings > World Settings > LightMass
中修改反弹次数以获得更好的效果。
光线的第一次反弹所需的计算时间是最长的。之后的反弹对实际构建时间的影响较小,但对视觉效果的影响也要小得多。
解决阴影“脏”的问题
首先,这种现象的原因与GI中的间接光照有关。
以下使用默认场景来创建2个测试用的关卡,其中Mesh的光照贴图分辨率设为256,后期空间开启人眼自适应。
在WorldSettings——LightMass中,可以对以下参数进行设置:
Indirect Lighting Quality
控制间接光照的质量,以获得更佳的效果。
Indirect Lighting Smoothness
控制光照贴图中细节的平滑度。
Num Indirect Lighting Bounces
间接光照光线的反弹次数。
在对这些参数进行调整后,即使是光照贴图分辨率为512,其效果也比1024的好了。