ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

次世代场景光影环境全流程:暗黑风格UE5灯光与烘焙实战解析

次世代场景光影环境全流程:暗黑风格UE5灯光与烘焙实战解析 做了十多年次世代场景从地编、资产、灯光一路折腾过来我最怕的不是模型多精细也不是贴图刷得多累而是进了引擎一点灯整个场景瞬间变平——该立体的塌下去该阴森的反倒亮堂堂。这次借着《暗黑王朝》的光影环境全流程制作我把整个过程中的决策和实操记录整理出来。这也是《次世代场景构建实战》系列的第六章专门聊光影环境。项目本身是一个以地下城为主体的暗黑风格动作游戏玩家大部分时间都在幽闭、破败、低照度的空间里移动。我们要做的是让玩家在暗处看到该看的信息同时被藏在影子里的危机感包围。这篇内容围绕次世代场景构建中最烧脑的光影环境展开适合正在做地编、场景灯光以及想从纯模型转向引擎整合的同学参考。如果你只是想把场景点亮那很简单但如果你想用光讲清楚一个空间、讲好一段情绪这篇文章能帮你少走很多弯路。1. 先把光影当主角如何为《暗黑王朝》定下光照基调与参考1.1 从黑到亮确认情绪板拿到关卡白盒后我没有先刷贴图而是先做了一套光照情绪板。我翻了很多现成案例从《暗黑破坏神》的教堂关、《血源诅咒》的雅南《地狱之刃》的地牢一路看过来提取了它们共同的灯光特征低照度、高反差主光多半来自单一方向像从门缝、窗格或者破损的天顶漏进来暗部并不是纯黑而是被冷色环境光添了一层蓝绿倾向明暗交界处通常有明确硬边离光源越近色调越暖越远越冷。这一步的目标不是让你“抄某个游戏的灯”而是提炼一套可以反复使用的语言。我给《暗黑王朝》定下的氛围词就四个字“冷月下的地下废墟”。听起来很文艺实际操作是有标准的任何一个空间都要有一处明显的暖光源作为视觉锚点而整个环境的主基调保持冷灰。这就是情绪板真正的作用——它让你在后续所有灯光调参时都有据可依而不是凭感觉乱拖滑杆。情绪板做完后我还会用黑白灰快速搭建三个光照key pose对应玩家进入一个新区域的三个状态第一是“全亮照明”用于初见核心区域玩家能快速理解空间布局第二是“局部照明”用于走廊和支线玩家只能看到脚下和前方几米第三是“极端剪影”用于压迫感极强的过场或解谜空间玩家看到的是轮廓细节藏在黑暗里。这三个姿态决定了灯光叙事的基本节奏后面的所有场景都会往这三类里套。1.2 光影叙事的三个层级很多新手做场景灯光只想着“哪边要更亮”结果把所有光源都铺在一个平面里。光影环境本质上是在讲故事我习惯把光分成三个层级功能光、氛围光、识别光。功能光是让玩家看清交互物和路线的光比如出口上方的一盏提灯、机关旁边的蜡烛群。氛围光是构建情绪的光比如透过头顶裂缝洒下来的体积光或者是地面积水里的冷色调反射。识别光是让关键角色和物件从背景里跳出来的光一般是边缘光或者低角度的轮廓光专门给可交互角色、精英怪和特殊收藏品用。举个例子一段走廊玩家往前走如果整条路都被均匀照亮玩家会没有任何探索欲。我会在每隔一段距离放一盏暖色火把火把之间是暗区玩家必须蜷缩着穿越黑暗才能到达下一个火堆。远处出口再放一束冷色侧光让玩家知道“那里更开阔”。这三个层级不需要一次到位但脑子里一定要有分工。后续加灯时我会反复问自己这个光满足的是哪一层如果都不是删掉。1.3 参考收集后要落到表格上收集参考不只是存一堆概念图而是要把参考拆解成可执行的方案。我会做一张表格每个参考图对应几个关键字段借鉴对象、光比、色温倾向、落地实现方式、风险点。比如一张烛光地窖的照片借鉴对象是“暗部冷蓝、面部暖橙”落地实现方式是“一盏点光源加一个低强度天蓝平面光”风险点是“补光过强导致影子消失”。这个表格在评审时特别有用。主美或者场设问你为什么要这么打你把表格拉出来直接指着参考图说这里的情感逻辑如此光照配置如此。至少不会被“凭感觉”这三个字堵嘴。更重要的是当你需要推翻方案时表格能快速定位问题出在氛围词、参考图、还是技术实现上。2. 引擎里的灯光系统搭建从一盏主光开始2.1 为什么选UE5的Lumen混合方案《暗黑王朝》的光影环境我选定的是UE5并采用Lumen全局光照配合静态烘焙的混合方案。很多人会觉得暗黑场景那么暗直接全部烘焙不就行了吗但纯烘焙有个致命问题场景里所有静止物体共享一套光照一旦遇到动态角色、可移动门板、火把火焰投影就会对不上暗部信息也容易黑成一团。反过来全部开实时场景里塞几十个点光源加体积光帧率直接崩。Lumen的角色是补足间接光照和反射细节让静态烘焙出来的光在动态变化时也不会发飘。具体分工是天光、主方向光、静态火把的固定光晕采用烘焙玩家角色、敌人、武器以及真正为了提高交互感的动态火把使用实时阴影。这个组合下画面有烘焙带来的稳定质感又保留动态物体的立体感性能压力也分散开了。如果你也在做一个暗黑风格的场景我强烈建议不要一上来就追求全动态Lumen。先烘焙一版看看效果再在关键位置加实时光。否则调参时你会被噪点和光斑干扰很难判断到底是材质问题还是光照反弹问题。2.2 基础场景的灯光参数配置灯光搭建我习惯从一盏主光开始而不是一上来就铺“满天星”。主光承担空间的结构感次级光负责氛围。以UE5为基准我给出自己常用的参数体系主光源使用Directional Light强度设为30000 Lux左右。注意动态范围偏低方便后面同时容纳烛光等局部高亮。色温控制在6800K偏冷用色坐标微调让墙面呈灰蓝而非纯灰。角度设置为低角度侧光大约从建筑窗户方向向下倾斜15度这样就会拉出一条长而斜的阴影塑造地下城特有的压迫感。阴影柔度设置在0.8左右保留边缘较锐利的暗部轮廓但又不至于产生地面大面积死黑。天光颜色使用深蓝紫强度给到正常天光的1/3左右因为暗部再暗也不能是纯黑至少要保留可以分辨材质细节的微光。指数高度雾密度设为0.3高度衰减0.2让远景有层次而不糊成一片。这几项不是物理标准答案而是针对《暗黑王朝》的氛围做的起点。实际调的时候我会用游戏视角不断走动观察主光在角色脸上的表现如果脸部暗到看不清表情就要适当抬升补光或提高曝光补偿。2.3 最容易被忽略的补光逻辑暗黑场景最忌讳无脑加补光。我见过很多同学把暗部一补亮结果整个场景像是加了高级灰滤镜阴沉感全没了。补光的核心不是“让暗部变亮”而是“让暗部有倾向”。我用得最多的是冷色矩形光模拟环境反弹。具体操作沿着墙面根部和石柱背面放置尺寸长而薄的Rect Light方向朝向暗部强度只有主光的5%到10%色温往蓝绿方向拉。这样石柱背面不会黑成剪影但明暗方向依然明确。另一个技巧是给这些补光设定层用Lighting Channel隔离只影响近距离静态物件不让它们干扰角色立绘感。补光颜色千万不要直接用纯白暗黑场景的暗部是蓝紫色调的补光如果取暖白会瞬间破坏冷月氛围。还有一个细节地上如果有积水滩我会在积水上方加一个非常弱的Rect Light强度0.5专门用来提亮水面反射。否则水面把法线贴图做破天了也看不出来花加这盏小灯之后水渍才能在暗环境里显形。2.4 体积光束不是所有区域都要加《暗黑王朝》里最出氛围的其实是体积光。透过破损屋顶的斜光柱、门缝打进走廊的线性光都是暗黑场景的招牌。但很多项目所有窗都挂体积光束性能直接崩溃画面也满是尘雾感。我的原则是体积光只开在导演需要“强调戏剧性”的地方。比如玩家第一次进入核心教堂的那束光必须开普通走廊里的重复窗格只放一张光轴贴图配合透明度模拟。UE5里我通常用指数高度雾加发射光的组合或是在Spot Light上面开Volumetric Scattering Intensity。渲染上体积光分辨率采样不要选太高先用0.5像素等视觉稳定后再降噪。如果你发现场景有明显的“雾墙”多半是体积雾高度衰减调得太高而不是光照问题。3. 材质与光影的联动让表面真实“吃光”3.1 PBR参数在暗黑环境下的特殊处理次世代场景构建里材质是光影最好的载体。模型面数再高如果材质没有按光照逻辑设置光打上去就是一块死板塑料。暗黑环境低照度PBR参数尤其敏感。我常用的几套物体参数是这样的湿石板地面BaseColor取(0.03, 0.03, 0.024)这种极低反射的深灰褐色Roughness 0.4到0.5Metallic 0。看上去值很小但暗光下高光会被环境反射带出来形成类似湿滑的质感。旧金属BaseColor同样压暗Roughness 0.6到0.8Metallic给1并在粗糙度贴图上叠一层划痕蒙版让金属在光扫过时出现亮暗不均的磨损感。破旧布料和旗帜Roughness直接拉到0.9完全吃光看起来就皱巴巴的。低照度下材质之间的差别主要由Roughness主导Metallic贴图影响最大。如果你的墙面和地面看起来糊成一团十有八九是粗糙度范围太窄。试着把粗糙度差值拉开旧木头0.5完好木门0.25腐烂区域0.9画面立刻不糊。3.2 用材质函数控制污渍和环境光遮蔽《暗黑王朝》大量场景是年久失修的废弃空间直接刷贴图很容易显得“只是脏”而不是“该脏的地方脏”。我的做法是做一个污渍Mask把它乘到Roughness和BaseColor上。污渍区域粗糙度更高、颜色更暗高光被压住而墙面边缘、雨水流痕、墙角积灰处污渍蒙版映射得更强。这比单纯画一张颜色贴图要真实得多因为光照下高光的动态会随蒙版实时变化。AO贴图也要低位接入。我通常在材质里把AO乘进BaseColor而不是单独做AmbientOcclusion节点。这样暗部本身就有层次主光打过来时角落不会突然发飘。如果想做出浸水区域再拿一张Wetting Mask用Lerp混合粗糙度把浸水部分从0.8平滑降到0.25这样水波反射只出现在该出现的位置不会大面积假高光。3.3 墙面和地面的光影咬合技巧光影环境做得好不好往往看墙面和地面的交界处是否“咬合”。常见问题是墙面亮、地面暗两者像分开的两块板。我有两个习惯第一墙面底部一定要有落地的阴影吸收区。刷贴图时在靠近地面10到20厘米处压暗AO让墙面视觉上“长”在地面里。第二在法线贴图基础上加细节法线或顶点混合让光在砖缝、裂缝处产生随机的小转折。换句话说光不只是均匀照在平面上它遇到凹凸和灰尘会产生微弱的散射变化这些变化累积起来就是“次世代感”。我还会用材质函数FlattenNormal配合距离混合在远景处压平法线避免远处墙面闪成一片噪点。这个操作简单但实用能省掉大量远景抗锯齿压力也让光影在镜头拉远时保持稳定。4. 烘焙与实时光照的取舍打开UE5里的Lightmap调试流程4.1 什么该烘什么该实时《暗黑王朝》里的流程不是固定的但大体分工很明确。静止的墙体、地面、石柱、大型岩石全部烘焙进Lightmap动态角色、武器、火把和可破坏门板使用实时阴影。为什么这么分因为烘焙能提供更高质量的软阴影和间接光但会冻结任何移动物体。你不可能让一扇被玩家推开的石门还带着烘焙阴影那看起来就穿帮了。另外静态物件的材质如果包含大量动态细节比如流动的岩浆或者自发光符文我会把发光层分离成单独的Mesh或材质层烘焙时忽略Emissive靠运行时实时自发光叠加。这样既能保留动态效果又不会把烘焙光照弄脏。4.2 光照UV与烘焙参数设置很多同学在建模阶段从不考虑UV2到烘焙时才发现Lightmap照上去是一团糊。我强烈建议所有静态资产在建模时就要展好UV2让它独立于UV1等比例、无重叠、无拉伸。分辨率按物体在画面中的占比来定大型地面和主要墙面512到1024中等柱子256到512小型杂物128到256注意同一贴图集内要统一纹素密度否则会出现明显接缝。在UE5里烘焙前我一定检查这四样一是场景所有静态网格体的Lightmap分辨率二是光照反弹次数一般设置为1或2太高容易把暗部涂脏太低又会让间接光消失三是Indirect Lighting Quality尽量拉高做最终渲染画面验证阶段可以先用0.5四是关闭所有实时大光源只保留烘焙光源。烘焙完成后我会切到Lighting Only模式按“光照贴图密度”显示查看是否有紫色警告区域然后逐块调优。4.3 性能优化三把刀烘焙一旦到位性能问题主要集中在动态光和体积雾上。第一把刀动态阴影距离。角色和火把的动态阴影只保留在摄像机周围20米以内超出距离直接裁剪远处靠烘焙阴影兜底。第二把刀体积雾范围。不要全场景都开体积雾通常把指数高度雾的反射采样范围限制在玩家视锥周围这样画面中心才有雾感边缘自动消退。第三把刀单物体光照数量。用场景优化工具把单个材质接收的动态光数量限制在4盏以内否则靠近多个火把时性能会大幅度掉帧。这套组合拳下来我通常能把原本30帧的暗黑场景拉到稳定60帧。前提是模型面数没有极端超标材质层数也别任性堆到十几层。4.4 从白模到定妆的一次完整调优记录我拿《暗黑王朝》里的地下礼拜堂举例。一进白模我先把全实时灯光照起来结果帧率只有28噪点也很明显。随后将静态物件全部改为烘焙保留主光、火把动态火焰和玩家武器实时阴影再关掉半个场景的假体积光束帧率立刻提到62。接着我用Visualize Lightmap Density看了墙面发现靠近走廊的UV2密度不够阴影偏糊于是把那一块墙面从256改成512重烘问题消除。最关键是最后一步拉低曝光补偿把整个画面压到“勉强能看清”的状态。因为暗黑场景一旦曝光过亮情绪就全毁了。我会在游戏视角下反复确认三个点位门口剪影是否还留得住、房间尽头火把是否醒目、角色脸部是否还能分辨轮廓。这三点稳定了定妆就八九不离十。5. 常见问题速查表暗黑场景灯光排错实录5.1 先判断是什么类型的问题做暗黑场景的灯光你会遇到很多看起来很像的问题暗部死黑、墙面漏光、阴影闪烁、体积光噪点。但处理方式完全不同。我养成了一个习惯先在视口里切换Game、Lighting Only、Wireframe这三种模式把问题归类。如果只开渲染光照时问题消失了那就是材质或AO问题如果还在大概率是几何或Lightmap问题如果是动态阴影闪烁基本是Bias和Shadow设置问题。确定了类型再动手能省很多时间。最怕的是拿着点光源一通乱摆把漏光、死黑和闪烁全部归因于“不够亮”结果越调越脏。记住暗黑场景不是靠亮度解决问题是靠层次和取舍解决问题。5.2 高频问题与解决手段我整理了一份在《暗黑王朝》制作过程中高频出现的灯光问题表格。漏光时先检查几何体是否封闭常见原因是墙面之间的缝隙没有建模封住或者碰撞体把Lightmap切开了解决办法是补一个闭合面或者在建模阶段用焊缝工具合并顶点。墙面出现黑斑或三角形亮斑优先检查UV2是否有重叠或拉伸并把Lightmap分辨率提升到512再试。阴影边缘闪烁把动态光源的Shadow Bias从默认0.5调到0.2同时开启Contact Shadow让角色脚底和墙面根部的小阴影稳定下来。暗部死黑不要急着加灯先看看天光最低强度和Lumen反弹设置把天光颜色压向蓝紫的同时提高最低亮度到0.1就能保留材质细节。体积光噪点是另一大痛点。如果开启实时体积光后发现像素有颗粒感先把体积光采样从1/8提到1/4再打开Temporal降噪。如果噪点还明显检查移动的光源是否数量过多并考虑用静止的Spot Light加Light Function替代粒子光源。5.3 我一个亲身排错案例某个地下走廊测试时玩家只要靠近一面石墙墙上就会出现一块不规则的亮斑走近又消失。一开始我以为是材质自发光残留检查后发现材质没问题再排查发现是这面墙背后有一个已隐藏的矩形补光它的影响范围穿过墙体直接打在正面Lumen又把这个亮光反弹到地板上。问题不在灯光强度而在墙体厚度过薄且未封闭。我把墙体挤出加厚并把这盏补光的照明通道改为只影响指定通道亮斑彻底消失。这个案例提醒我暗黑场景里任何灯光都要检查边界和影响距离别让隐形光污染制造出“不该亮的地方”。6. 扩展思路暗黑场景光影还能怎么玩6.1 用渐变纹理做灯光故事板如果你一开始不知道怎么给暗黑场景配光可以试试用渐变纹理代替灯光单独做一张“灯光故事板”。这个方法我从做概念设计时沿用到引擎把场景截图拉进绘图软件用黑白渐变和暖冷色块快速画出光区、暗区、冷暖交界区。然后回到引擎按照这张故事板去放灯而不是直接在引擎里凭空摸索。这个习惯让我每次都能在一小时之内定下大方向而不是在机器前瞎拖一晚上。做故事板时建议只保留三种笔触大形状的明暗交界、关键光源位置、小面积高光点缀。这三样够了。别忙着在一开始就画体积光、灰尘、反射细节那是后面的事。灯光层级定稳了再进引擎慢慢补。6.2 动态天气与昼夜循环在暗黑场景的适配《暗黑王朝》主线大部分在地下但如果有地表关卡动态天气会让光影环境价值翻倍。我自己的经验是天气系统不要直接套用通用“晴天/雨天”模板。暗黑风格下月光比阳光常用雾比晴空常用风向会影响火把摇晃和体积光方向。实现时可以把灯光参数和材质参数通过BP联动比如下雨时所有室外地板粗糙度从0.5切到0.2积水反射强度提升同时降低天光亮度并增加体积雾浓度。这些变化要在三种光照层级下都验证一遍否则雨天会变成“一片模糊黑”。动态昼夜循环也一样越暗的时段补光越要控制饱和度否则夜景会显得五彩斑斓彻底丢掉暗黑感。6.3 给美术同学的光影审美练习方法最后分享一个训练方式常年有效每周找一部你喜欢的电影截三个不同场景用色阶工具压扁成黑白灰标出主光方向和暗部比例。再把这三个场景简化成“三个亮面、一个主光体”最后回到游戏引擎里尝试复刻。我做了十几年场景这个方法依然是最有效的审美底子。光影环境不是你点了几盏灯的问题而是你眼里有没有光。你吃得进多少好电影、好画的光感手里就能做出多少能打动人的画面。做《暗黑王朝》这章光影的时候我最大的体会其实就是四个字克制、取舍。不是每个角落都要亮也不是每道阴影都要存在。把最有情绪价值的那束光留给玩家剩下的交给黑暗。希望这套流程能支撑你在次世代场景构建的路上少踩一些坑多留一些值得看的画面。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进