您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Thepoly 于 2022-3-25 12:40 编辑
Hello,大家好。 今天周日,到了Kinglary分享 游戏引擎相关内容
灯光至于引擎这个大的系统,内容其实相对较少,但是却十分的重要,尤其是次世代游戏艺术中不可缺少的一部分。在之前关于材质部分的认知教学中,就提到过,在游戏场景中,若想将游戏对象于视觉感官上表现至极致,必然是光与质共同表现的。应Thepoly大佬要求,今天将会为带来虚幻4引擎灯光的小教学。 看前希望大家注意以下三点:第一,教程涉及一些摄影和光学效应,限于篇幅对一些基础光学概念不懂的只能百度恶补;第二,引擎布光,难免会有个人手迹,大家在明理的基础上根据自己的喜好酌情适用,同时本文章目的是带各位迅速了解引擎布光的一些特征;第三,该教程限于篇幅,灯光的后期体积处理、LPV、AO、白平衡、Film、Bloom、镜头眩光、GI以及和SD的联动等等能不能在后期讲到要看Poly大佬的安排了,这里目前能带大家进行个入门,而且要说的太多,很可能入门了一半。
首先呢,布光之前,尽量把自动曝光关闭。(专业人士会说还要把PP 里AO关掉,EYE adaption关掉; SSR关掉,暂时先不用哈,就是先带大家做个了解),具体位置:主视窗左上角 | Lit | Expoure | Fixed At Log 0,如下图:
之后我们就要系统的认识一下灯光了。在主面板左侧,light中有四种灯光,点光源(PL)、平行光(DL也叫方向光)、聚光灯(SL)、天光(sky)。我们将点光源拉入空关卡中,作为案例来分析(选中光源后关注右侧Details面板)。在Detail中方向旋转我就不多做解释了,都懂。主要看Transform下有一个分属性项:Mobility,里面有三个分选项Static(静态光源) 、 Stationary(固定光源) 和 Mobile(移动光源)。
可以说,在Transform中,Mobility(移动性)是十分重要的部分,在虚幻4文档中对Mobility(移动性)的三种设置进行了解释: ▼静态 - 完全静态的光源在游戏运行过程中几乎没有任何性能消耗。 ▼固定 - 这种类型的光源,可以在运行时改变颜色和亮度,但是不能移动、旋转或修改影响范围。 ▼移动 - 完全动态的光源,可以在运行时改变其自身的所有属性。
Static:属于静置光源,在你布光过程中,基本不吃配置。但是在play时,发现视窗左上角会出现一串红字:Lighting needs to be rebuilt,即“灯光需要重建”,这里的重建意思就是烘焙。所以可以知晓,在编辑模式下加入静置光源并不是实时渲染的,这样会降低机体消耗,在play时,再进行灯光烘焙渲染工作,查看最终布光效果。这种特征也就意味着,静态光源无法在游戏时以任何方式进行变更 。静置光源的开发效率很高,该类光源会将物体上的阴影、光照效果先行烘焙到一张LightMap上,这张LightMap就是你游戏对象的第二套UV。这也就是为什么我在讲“UE4模型导入”前,让看客们开双UV的原因,游戏引擎渲染并不像Maya、3DmaxVary或是渲染农场的长时间渲染(比如一天、三天甚至一周),引擎追求的是渲染效率和效果的权衡,要求每秒几十帧的渲染速度、不可能花费那么长时间,为了保证渲染效率,会将物体上的一些光照信息先行烘焙到一张LightMap贴图上,而LightMap的光照信息便储存在你第二套UV上。这也要求展UV的时候一定要严谨精细,一旦出现重合、扭曲过大,在光照渲染时于重合扭曲部分出现黑洞。
布置好Static灯光后如何进行烘焙呢?在主视窗上方:Build | Build Lighting Only。这里注意不能直接点击Build,这里的Build是全局重建,不仅会烘焙灯光,你的AI和其他蓝图会全部跟着build,此处只进行灯光烘焙,故选择Build Lighting Only子选项。这里的流程就是:布光—Build Light—Play。
烘焙完毕后,在游戏对象表面一些阴影边缘处会出现不正常的模糊或是马赛克,这是什么原因呢?很可能是你的牟星灯光贴图的分辨率过低。解决方法是双击模型进入模型编辑器面板,在新视窗右侧Details中找到Static Mesh Settings分栏里的“Light Map Resolution”,将数值调大,例如1024。之后保存。借此需要说明,展UV的时候注意Min Lightmap resolution, 定义了UV块之间的距离。这个值要小于等于lightmap resolution,否则会出现lightmap像素无法匹配而溢出的问题
在Build中还有一个常用选项,就是Lighting Quality(灯光质量),有四个级别:Production(产品级)、High、Medium、Preview(预览级),渲染精度按该顺序递减、速率递增。这里建议在布光设计的时候选择Preview级别进行制作,在最后出作品的时候,将级别可以适当调到High或是产品级
在Build | Lighting中还有几个重要的选项需要注意: Lighting Info | Lighting StaticMesh Info(光照信息 | 静态网格物体光照信息),这里会弹出一个列表,上面有他们构建光照所花费的时间,这个列表在游戏开发中是常被调出来进行优化参考的需要留意 Use Error Coloring:这个选项建议开启(前方勾选),灯光在预计算(渲染)的时候错误处会用特殊颜色提示。
Stationary:即固定光源,固定光源实际上就是在静置光源的基础上提升一些可变性,在游戏状态下可改变光源亮度和颜色,但是不能移动光源位置。在静态、固定、和移动三种属性中,固定光源具有最好的质量、中等的可变性,以及中等的性能消耗。但是,他也是需要烘焙的,即在每次Play之前要Build一下。 Movable:移动光源(实时光照)。这种光源,在游戏状态下,针对各种动态物体都可以获得较好的实时动态阴影。所以在Movable状态下的光源是不需要进行Build的,直接可以Play。如果你的机器性能提别屌(比如工作站),建议可以使用移动光源。
接下来,就是关于灯光的一些具体的属性。 Intensity(或Brightness):光强(光源亮度),在UE4中,此处以流明为单位,并且有一个默认的换算公式,就是光强(亮度)达到1700流明的时候,相当于实际生活中一个100瓦灯泡的光照效果。可以理解为“17流明=1瓦 & 1流明=1/17瓦”,在布光的时候,如果项目直接给你了参数比如800瓦,在该处参数通过换算即可。这里为什么要强调这个,因为有的时候会涉及到一些特殊光照效果,比如五七五舞台光(575W光照),就需要你进行换算了。尤其是在真实的游戏开发中,光强有特殊的主观意义,光强的不同对观众的心理和情感产生冲击,明亮的灯光给带来观众轻松和欢快氛围,而暗淡的灯光给观众一种悲凉和凄苦暗示。 Light Color(&Temperature):灯光颜色(以及色温)选项。在之前的Unity教程中,我曾插入一个灯光小节里面初步讲了一下灯光颜色。在这里主要强调两点,一是光照颜色的拾取方式,二是灯光颜色和色温(Temperature)的关系。 左键单击色条,出现Color Picker(颜色拾取器)。这里在材质节点入门的时候讲过,三中取色方式,圆环、RGB、右下十六位直接输入,选取拾取器可以全屏取色以及转色环为矩形取色区
色温在摄影学中经常用到,该相关概念是一个科学家开尔文提出的,他假想了一个绝对黑体在绝度零度状态下开始加热后所呈现的颜色变化,色温单位为K(开)。这里为什么要强调这个呢,色温和我们认为的“光线的冷暖”正好相反,比如人们会感觉红黄橙三色很温暖,但实际上红色色温最低;白青蓝感觉很冷,但实际上蓝色色温最高。在模拟自然环境下,晴朗天空时,由于整体色温偏高,那么画面色调就偏冷;在黄昏时分(比如有火烧云)整体色温偏低,色调就特别的暖。这就是色温这一物理参数和色调冷暖这一画面表现的一个重要联系。一般来讲,Temperature在默认情况下是6500K(D65模式),点击Use Temperature激活,可自定义色温。 这里面注意,如果你对布光或者摄影知识不是那么的了解,这里建议Temperature(色温)保持D65模式不变,如果项目真的要求到了,或是对色温有很强的的了解,那么这里有几个参数可以提供: ▼烛光:1930K;钨丝灯:2760~2900K; ▼荧光灯:3000K;闪光灯:3800K; ▼中午阳光:5600K;电子闪光灯:6000K;蓝天:12000~18000K(数据来源:百度)
这里我们可以做一个小实验,把Light Color回归到纯白,激活Temperature,赋予烛光色温1930K,烘焙,就会发现在白色光状态下,确依然有烛光效果。所以,在已知光源属性的情况下调整色温,环境光感会更加真实。
Source Length:设置光源长度。在官方文档中有一大堆解释,这里根据本人经验来讲,我一般将它模拟成灯光光照效果或是灯带效果。而且长度值一旦存在,即便是点光源属性下,旋转光源角度也可以看到光带偏移效果的。
Affects World:“影响世界”。即完全禁用光源,意思就是你灯亮,但是不作用于该场景内的游戏对象,就像“关灯”一样。同时这个选项在运行时是不能设置的。要想在运行过程中禁用光源的效果,可以改变它的Visibility(可见性) 属性。这个功能一般用来检测场景内自发光或是光溢出对象。
Cast Shadows:光源是否投射阴影。选中后,物体会有相应的投影;取消选中,就没有阴影效果。一般开启。 Cast Translucent Shadows:是判断是否可以透过半透明物体投射动态阴影。比如玻璃等半透明材质打光上需要用到
Indirect Lighting Intensity(间接光照强度):在虚幻文档上定义为“缩放来自光源的间接光照的量。”什么意思呢?灯光照到物体表面,物体表面会将光再散射出去,这个光照就是间接光照。这里注意,虽然在该取值条内,数值可以无限增加,但是有效值只取在0.0到1.0之间。这个其实涉及到GI理论,多次反射的效果,使用这个参数的话往往要加一些Volumes配合使用。
Use Inverse Squared Falloff(使用平方反比衰减):除特殊效果该选项最好勾选上。在真是的世界里,光源会随着与目标物体的距离增加而逐渐衰减。与之密切相关的就是Light Falloff Exponent(光源衰减指数),上文已知光源是径向衰减的,这里随着数值的增加,光源的衰减程度就会越大。有经验的开发者可能会说,我把Use Inverse Squared Falloff关掉,同时将Light Falloff Exponent提高,也能有衰减效果。这种情况需要声明的是,在Use Inverse Squared Falloff开启时,引擎会对径向衰减进行物理模拟,既然进行的是物理模拟,那么效果更逼真。
Min Roughness(最小粗糙度):该光源的最小粗糙度,取值范围0到1。没错,光源也有粗糙度,那么这个数值控制着什么呢?主要是高光。如果让一个物体上的高光更加锐利,除了自身材质外,可以将Min Roughness数值调小,高光就显得锐利;反之将数值调大,光源粗糙度上升,高光就显得柔和甚至柔到没高光。例如,在极品飞车这种游戏中,一辆豪车飞速从你面前梦幻飘过,这时候必然在布光时会给这段动画补个光,这个光的Min Roughness会调到很小,让车的高光变得锐利,会产生高亮光斑,一种豪奢感便会跃然纸上。
Shadow Bias(阴影偏差or阴影偏移):顾名思义,意思是影响阴影偏移程度,数值越小,阴影偏移越小,同时也会显得光照不是那么的强;越大,偏移越大,同时也会显得光照感很强(观察椅子腿部偏移效果) Shadow Filter Sharpen(阴影滤镜锐化):阴影滤镜锐化该光源的程度。同样取值在0到1,在视觉体现上是投影边缘的“锐利”程度,数值越大,边缘愈加锋利。
Light Profiles和接下来的卷栏是虚幻4对灯光更为深入的属性设置 IES贴图(虽说翻译成贴图但是记住他并不是图片格式的文件!):IES是对灯光设置的一种保存格式,同时在网上有许多IES资源。导入过程同其他类型资源导入,我习惯把IES文件放在Materials文件夹下。使用方式:将IES文件从Content文件夹中拖入到Light Profiles | IES Texture的灰色方框中,同时会显示绿色虚线框。 如果显示为红色虚线框,表示当前灯光不可加入IES文件,很有可能是因为你的灯光属性为Static,这时只需将灯光属性调整为Stationary或Movable即可;另一种使用方式是选择旁边的搜索器,在下拉菜单中即可找到当前关卡资源中可使用的IES文件。
在贴图可赋予状态下,如果没有显示出效果,很可能是灯光属性不匹配,即你可能使用的是点光源(向四周散射的属性),将其转换为Sopt Light就可以显示(IES很多资源是基于Sopt Light属性设计的),勾选Use IES Intensity可以控制IES灯光强度。在使用IES灯光后,灯光的亮度属性就会成为默认值这里需要注意。如果想取消IES贴图直接在右边的下拉菜单中选择Clear即可。在这里想必各位看官可以看出,IES速度十分快但是并不灵活,为了表现更为复杂的灯光效果,又有一个增强机制、下一个卷栏:Light Function
Light Function很有意思,这里面有一个Light Function Material。这里我以一种灯光为例,就是镂空光。我首先在PS里了一个1024的贴图,写了一个粉底黑字的“王”。 在虚幻4 Content | Texture中导人该图片。之后在Material里新建一个材质球,我命名为HHHH,双击改材质,将材质属性设置为Light Function,这时看到主节点上只有Emissive Color高亮,将王字贴图导入,与之相连,我们就看到材质球显示为“王”字图案。保存,回到主界面。我在场景中拉入一个SL光,将HHH材质球拖入到Light Function Material上,我们就看到SL投射出一个王字。这里我光色默认白色,却没有照出贴图的粉色,这是正常的,调整光色和色温在虚幻4中完成。
下一个XYZ是尺寸选项,再下一个Fade Distance是我能看见阴影的有效距离,这里我调成500,数值小一点,我拉远,就看不到王字了。这种小技巧在解密类游戏中经常用到,在寂静岭破碎的记忆还有生化危机中,利用远近光影解密手法便可以利用此类小技巧。同时,也可以利用距离来减少系统负荷。
下一个卷栏是Distance Field Shadows,一般来说是灰色状态不让你选,因为你要打开它的话需要几步操作。回到这界面,在工具栏中Edit | Project Setting | Engine | Rendering | lighting下,将Generate Mesh Distance Fields选项开启,并重新启动编辑器,这个功能便可选了。这个功能其实一般用来处理大型自然场景的阴影效果,比如热带雨林、山林的效果,可以对大面积植被的阴影进行良好的优化处理,但是如果开启,比较耗费资源。可见,玩虚幻没有台牛逼的电脑是很不爽的。
Rendering:第一个选项是Visible,一般来说是勾选上的,可见阴影。如果不选上,在烘焙之后是看不见阴影的。这个选项一般来干什么呢?补光。比如你做好一个模型,已经有了一个主光,此刻需要一些其他光源进行点缀,但是这样会产生多余的甚至是冲突的阴影,此刻就可以将Visible反选,这些补光的阴影就会消失不会产生负面影响。如下图
以上,是基于点光源这种最基础的灯光的一些常见参数设置。之前说过,在UE4中有四种常见光源,其中Directional Light(平行光源)也是经常用到,一般来说它用来模拟阳光。其中有几个参数和点光源参数有所不同: Atmosphere Sun Light:这个是用来模拟太阳光的,有天空球下可以勾选使用。如下图效果
Light shaft卷栏,这个卷栏是专门模仿阳光出现的特征而增加的属性。就比如空气中的丁达尔效应,还有一些像是阳光穿过树梢带来的那种光晕感,这里就可以吧Light Shaft Occulusion勾选上,启用光束遮挡, 同屏幕空间之间发生散射的雾和大气是否遮挡该光照,就可以进行算法模拟。这个勾选上的时候,会很消耗资源。Occulusion Mask Darkness,遮罩暗度,实际上就是效果程度,数值越小,暗度越高,效果越强,1的时候就不黑。这里用SP拉出来的树做一个演示。后随之的Occulusion Depth Range,其实就是该效果的检测范围,数值拉大,可以拉远镜头,超越设置距离就看不到该效果的模拟了。
Light Shaft Bloom:是指是否光溢出效果,接下来的几个参数项全是和光溢出有关。 Bloom Scale:缩放叠加的光溢出颜色;Bloom Threshold:光溢出阈值,场景颜色必须大于这个值才能在光束中产生光溢出;Bloom Tint:光溢出的颜色。光溢出其实是一个很有意思的光学效果,这里在后期讲Bloom的时候还会详细说明的。
在平行光LightMass中,有一个Indirect Lighting Saturation:间接光照饱和度,如果值是1不会发生任何变化,如果是0的话就会降低全部饱和度。 同时,该种光下的Rendering | Visible,如果不选的话,之前的效果便全部不可见。好了各位看官,由于篇幅,我只能讲到这里了,下次引擎接回上一章蓝图内容,我们下次再见~
目前,喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。
注意:长按下列二维码即可进入相应渠道!!!
|