做暗黑系场景,最容易产出的是三样东西:糊、闷、脏。《暗黑王朝》这个项目我一开始也没逃过去——几百个古堡部件堆进关卡,灯光一打,前面像一锅粥,后面像块黑布,你自己都觉得画面没法看。后来我把"次世代场景构建"里最容易被忽略的"光影环境"单独拿出来,从头到尾捋了一遍做法,才把整个场景从"能看"推到"能截屏当壁纸"。这篇就当是这个系列里关于光影部分的全流程复盘,从定调、选型、白盒预演、资产配合,到布光、体积雾、后期校色和性能控制,按我做项目时的顺序写。
1. 定调:别让"暗黑"变成一句口头禅
1.1 暗黑场景的三种失败气味
先说最常踩的坑。暗黑风格不是把灯调暗,也不是整体压黑,很多新人在这一步就翻车。我归纳过暗黑场景里最容易出现的三种"失败气味":
- 闷:画面大量区域亮度集中在中间调,暗不下去、亮不起来,整个场景没有"呼吸感"。本质是曝光基准没定好,或者光比太小。
- 平:虽然明暗存在,但场景里的关键物件和背景糊在一起,玩家的视线找不到落点。本质是缺少层次分离,物体与物体之间没有亮度差。
- 脏:暗部颜色乱七八糟,紫的、绿的、灰的混在一起,画面看着不高级。本质是灯光色温不克制,反光板补偿色没统一。
《暗黑王朝》最开始的问题就是三者兼有。我记得第一个可玩版本里,墓穴大厅的亮度几乎是均匀的,大家跑来跑去根本分不清哪个是出口哪个是装饰墙。后来我把整个光影逻辑推翻,定义了三句话:亮部要有方向感,暗部要有层次感,颜色要集中在光源周围。这三点成了后面所有工作的总纲。
1.2 对参考图的解构:先找光再看模型
确定方向后,我干的第一件事不是开引擎,而是花半天时间拆参考图。很多人收集参考图就是"看着有氛围就丢进收藏夹",这不够。我习惯把每张参考图拆成四层来看:
- 主光方向:光源在画面上方、侧面还是后方?
- 光比关系:亮部占画面多少?从亮到暗跨度有几个层级?
- 暗部信息:暗部是完全死黑,还是有反射光、轮廓光在勾边?
- 色彩倾向:阴影是偏冷还是偏暖?高光是否带色温?
拿《暗黑王朝》来说,我想要的标的是:硬光为主,主光来自左上方,画面亮部占比不超过20%,暗部保留偏冷的蓝灰色间接光,所有火焰和符文点光用暖橙色做对抗色。这个"光影关键词"清单非常重要,后续每打一盏灯、每调一个参数,都要回来对照这张清单,偏离了立刻纠正。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案选型:UE5里Lumen和光追的取舍
2.1 为什么先从Lumen开始
《暗黑王朝》用的是UE5,所以最大头的技术选型就是全局光照方案。市面上可选的实时GI方案无非几个方向:Lumen、硬件光追、烘焙Lightmap、SSGI插件。我最终选择了Lumen作为主方案,原因有两条。
第一,迭代速度。场景光影在暗黑风格下高度依赖"微调后立刻看结果",烘焙一次Lightmap动辄十几分钟,项目早中期根本消耗不起。而Lumen在编辑器里做到了近乎实时反馈,我拖动灯光位置,间接光立刻跟着变,这让我能把精力放在艺术调整上,而不是等结果。
第二,硬件光追在暗部噪声上并不占优。光追虽然物理正确,但在这种大面积暗部场景里,Ray Tracing的降噪器会让墙面产生类似磨砂的抖动,特别吃性能。反而Lumen配合距离场和屏幕空间,在暗部有更好的容错性——加了辅助光之后效果立刻收敛,画面很干净。
这里补充一句,Unity项目也可以参考这条逻辑,HDRP里的SSGI和Progressive Lightmapper思路是一致的——你要先看自己项目的迭代频率和风格类型,再决定是实时GI还是烘焙。
2.2 项目设置里的关键开关
选型定了之后,我在项目设置里做了几件具体事:
- 开启全局光照的Lumen,并把它设为Screen Space + Distance Field的组合模式。
- 开启Virtual Shadow Map(虚拟阴影贴图),让阴影在近距离保持清晰度,远距离再自然降级。
- 关掉硬件光追相关选项,避免编辑器里出现不必要的编译开销。
- 把反射方案的Lumen反射分辨率控制在中等,因为暗黑场景里大面积镜面反射本身就不多,没必要开满。
另外我建议把光照质量级别(Lighting Quality)设成可运行时切换,这样在联调的时候可以先用低质量保证流畅,最后再切高画质做截图审核。这一条听着简单,但做项目的都知道,不同阶段对画面质量要求完全不一样。
3. 白盒阶段的光线预演:尽早给空间定骨架
3.1 灰盒场景里搭"临时太阳"
《暗黑王朝》的关卡结构是先做了大量blockout灰盒,再往里面填最终资产。很多团队在这个阶段只关心跑路和碰撞,不关心光,结果等全部资产放进去才发现主光方向完全不对。我的做法是这个阶段就要开始"光线预演"。
具体操作是这样的:灰盒搭完一个区域后,我立刻在关卡里放一个Directional Light当作主光,先在顶视图里判断朝向,再转到相机视图里调高度角和亮度。目的不是做最终效果,而是确认三件事:
- 光线能不能从门廊、窗洞、裂缝里照进来,形成玩家能注意到"这里是出口/这里有危险"的视觉引导;
- 柱子和墙体的大轮廓在射光下能不能被剪影分离;
- 主光和场景的体量之间有没有明显明暗分区。
这个阶段我不会花时间调颜色和色彩饱和度,一个白色的平行光配一个基础的Sky Atmosphere就够了。先把结构层的明暗关系敲定,往后面填细节时才有底气。
3.2 一块小地方的调光逻辑如何复制到全图
白盒阶段另一个容易踩的坑是一上手就把整张图铺满灯光。我试过那种做法,结果就是灯光数量爆炸、场景没有焦点、消耗飙高。后来我换了个思路:先挑一个功能最完整的小区块,比如主殿入口前的那条回廊,把它当成"光影样板间"单独调通。
在这个样板间里,我会确认主光强度、间接光强度、体积雾浓度、后期曝光这四者的相对关系。等这套参数稳定后,再复制到其他区域,只做局部增删。这样做最大的好处是全局基准一致,玩家从一个区域走到另一个区域不会觉得亮度忽高忽低、色温忽冷忽暖。很多场景之所以"一眼假",就是每个区域各调各的,整体没有统一感。
4. 资产配合:材质与模型如何反过来塑造光
4.1 粗糙度和自发光对暗部细节的贡献
光影从来不只是灯光的事。到了资产整合阶段,我发现《暗黑王朝》里最影响光感表现的,其实是材质参数里的两个量:粗糙度(Roughness)和自发光(Emissive)。
先说粗糙度。暗黑场景容易犯的毛病是地面、墙面全部做成0.2以下的低粗糙度,结果到处是高光反射,画面花得不行。我的调整习惯是:大面积石砖地面控制在0.25到0.45之间,只在靠近火把和水渍的位置局部做反射亮点;墙面粗糙度则放到0.7到0.9,让光照射到上面时是漫反射,形成柔和的光班。这样做之后,暗部的层次反而比之前丰富得多。
再说自发光。暗黑场景里的符文、号角、熄灭灯盏、祭祀台纹路,这些细节在暗部环境里几乎看不见,但你又不能把它们全部点成亮灯。解决方法是给这些物件加很低的自发光强度,大概只有0.1到0.3,配上小的点光或者不配光,让玩家走近时能看到纹路细节,但又不会抢掉主光的地位。这种"看得见但不发光"的处理手法,在场景截图里很出效果。
4.2 模型轮廓、倒角与摆放角度
除了材质,模型本身的轮廓和倒角也直接影响光影。次世代这块有一个很多人没意识到的地方:暗黑风格的高对比光对模型边缘极其敏感。如果你的石柱是纯90度直角边缘,主光平行射过来时,受光面和背光面之间是一条硬边线,视觉效果很单薄。反之,做一个宽度合适的倒角之后,光线会在倒角区域形成高光分离线,轮廓就油亮、立体起来了。
我在《暗黑王朝》里也做了一轮资产配合调整:给关键的柱子、雕塑、门框补倒角,重新调整法线贴图强度,让受光面的过渡更柔和。另外在摆放角度上,原先把好看的雕塑正对着玩家摆,现在反而会故意让它们稍微偏转一点角度,让主光可以斜掠过来,在表面拉出更长的高光带。这个角度差往往只需要15度到30度,画面价值完全不同。
5. 灯光层级:从主光到氛围光的实战排布
5.1 用一块面光做出圣殿"假天窗"
《暗黑王朝》里有很多室内圣殿,原方案是直接打一盏Point Light,效果很平。后来我改成一个很常见的做法:在顶部开一个"假天窗",用矩形多边形光Rect Light模拟顶部天窗射入的光线。这在次世代场景里是很实用的一个灯光手法。
具体排布是:在圣殿高侧窗位置放一块Rect Light,方向朝向地面成60度左右,色温用偏冷白6500K附近,强度按场景单位先给一个基础值再慢慢降。由于Rect Light的光线是漫反射体系里的柔和光源,它会在石材地面上拉出一个斜向的矩形光斑,这个光斑正好成为玩家的视觉落点。然后我再在旁边补一盏很暗的Directional Light模拟"太阳已经偏西",让门窗投影有一定方向性。两者一叠加,空间感立刻出来了。
这里有个经验:室内场景不要用太强的平行光做主光,不然会像把太阳搬进屋里,阴影硬得像刀切,氛围直接垮掉。天窗光加弱平行光的组合,更容易得到"室内白天但有暗部层次"的效果。
5.2 辅助光与局部光:填暗部但不抢戏
暗黑场景的暗部不能等于死黑。但辅助光怎么加才算不抢戏,我给了自己一条规则:辅助光的亮度永远不要超过主光亮度的三分之一。一旦超过,主光的方向感和画面重点就崩了。
实际操作中,我用的辅助光主要是两类:一是大面积蓝灰色低强度点光或矩形光,用来填暗部间接光,色温选在7000K左右偏冷,模拟天光反弹;二是局部暖橙色的点光,用来强调火把、烛台、祭坛这样的互动点。
局部光的设置里有一个参数很重要:Attenuation Radius(衰减半径)。很多人在暗黑场景里打点光,衰减半径开得巨大,结果远处墙面也被烤暖了,整个场景的色温分配就乱了。我的习惯是把衰减半径压到目标范围的三分之二,强度从中心到边缘柔和衰减,宁可多补两个小光点,也不让一个点光控制整片区域。
再补充一个实用细节:灯光用了Light Channel之后,就可以在同一场景里隔离不同类型的光,让烛火光不影响角色,天窗光不影响某些特殊道具。这对后期调光和载具、角色演出穿插进来的场景非常有用。
6. 体积雾与后期校色:氛围的最后一层皮肤
6.1 体积雾的指数级变量
《暗黑王朝》的氛围有很大一部分靠体积雾撑起来。但体积雾这个功能特别可恶,它默认参数几乎全是"给白天大草原用"的,你不会调,一开就糊成牛奶瓶。
我的调整顺序是先把Fog Density降到0.005到0.02之间,这两个量级才适合室内场景;然后调Extinction和Scatter,控制光在雾里被吸收和散射的比例。重点来了:把雾的散射颜色往冷灰方向偏一点,这样灯光穿过雾时,光轴是亮的,但暗部雾是灰蓝色,层次非常高级。
光束效果我常用Spot Light加弱体积雾配合实现,锥角设置在30到45度之间,强度不需要大,更像清晨光线从窗口射进来那种"尘埃可见"的状态。注意别把所有灯都加上光束效果,只保留场景里最重要的三四处,比如殿门口、祭坛上方、主路尽头。光束一旦泛滥,暗黑就成了蹦迪。
6.2 Post Process的调参顺序
后期校色这块,我总结了一条调参顺序,按这个顺序走,基本不会出现回头推翻的情况:
- 先定曝光:在Post Process Volume里把Exposure Compensation调到一个全图都不过曝也不死黑的基准值。我用的是暗一点优先,大约-1到-2EV,前提是暗部仍然保留细节。
- 再调全局光照强度:关掉后期前先确认3D场景里的间接光强度是合适的,后期里的GI Intensity适当降低一点,控制在0.6到0.9,避免暗部灰蒙蒙。
- 然后调色温和饱和度:把整体色温往冷青偏移,再把绿色曲线微微压低一点,消除暗部脏感。
- 最后才导LUT。LUT是在前几步基础上做最后的风格化,如果前面参数没稳定就调LUT,返工量巨大,这个坑我踩过不止一次。
另外,同一张地图如果分了多个区域,我建议用同一个基础Post Process Profile,再在每个区域叠一层很小的局部覆盖。全局统一,局部微调,这样场景与场景之间的衔接才自然。
7. 性能预算与排查手法:次世代的每一帧都要用对
7.1 动态光、阴影和体积雾的成本
次世代场景构建如果不谈性能,那是不负责任的。尤其像暗黑风格这种全场景大量点光的做法,性能翻车是非常容易的。《暗黑王朝》后期排查主要盯三块:
- 动态光的数量。我给自己定的指标是:一个玩家可视范围内,有阴影的动态光不超过4盏,其余都用无阴影或Low影响半径的光替代。全靠动态阴影,帧率会以坐电梯的方式往下掉。
- 阴影贴图分辨率。大面积暗部场景里,阴影反而容易糊成一团。Virtual Shadow Map的生成距离、分辨率倍率都要控制住,尤其重点关注玩家5米到20米范围内的阴影清晰度,远处的阴影可以压低分辨率,反正暗部看不清。
- 体积雾。这是帧率大头。体积雾自带的分辨率不要拉太高,我通常用低或者中档,并把Volumetric Fog的距离收短,保证近距离有光轴感,远距离用普通雾配合。
7.2 保留画面感的降耗手段
降性能不等于牺牲画面感。我常用的两种手段:第一,把场景拆成多个可见性方案,离得远的区域把光照质量切到低,靠近了再切成中或高,用户完全感知不到切换过程;第二,利用UE5的Nanite处理高模资产,把本该花在模型三角面上的预算省下来留给光影效果,这也是次世代场景比较典型的一种资源调配方式。
如果你们项目跑在主机上,我会更加留意发热和帧率曲线,尽量让场景的负载在长时间游玩时不出现明显爬升。这一点在暗黑这种大场景、高粒子特效、体积雾全开的手感下特别重要。
8. 验收清单与个人教训
8.1 一组可以直接复制的检查项
我把每次光影调整完成后都会过一遍的检查项列在这里,照着查,比凭感觉判断要靠谱得多:
- 玩家进场景后3秒内能找到主路径吗?关键通道是否有光的引导?
- 每个区域的主光方向是否一致?会不会出现"走进大殿光从中柱穿过来"这种逻辑硬伤?
- 玩家在场景里停留时,视线会不会被过亮的广告牌式区域吸引?亮部面积是否超过画面20%?
- 暗部拉开截图后,是否存在细节?地面和墙转角还能不能看清?
- 远中近景三个层次,各自亮度差是否足够?远处是否有剪影可以读?
- 颜色是否控制在两种色温以内?有没有大面积杂色?
- 动态光数量和体积雾开销是否在预算内?
8.2 我从踩坑里得到的三个习惯
最后说三个习惯,全是真金白银换来的。
第一,永远先在小场景里调通再复制,不要上来就铺满全图。哪怕多花半天,也比全局返工省时间。
第二,每次调光前先截一张图,改完再截一张,两相对比。这看起来笨,但能很客观地告诉你"我到底有没有改对"。我之前经常调了一晚上,回头一看跟中午的效果没啥区别,就是因为没有对比轴。
第三,把"暗"当成一个区间而不是一个值。暗黑场景的暗部是相对的,它需要亮部、中间调来衬,真正高质量的暗部应该像墨色一样分浓淡,而不是一块打印机没墨的黑。理解了这一点,你再去打光、调色、材质配合,方向就不会跑偏。
《暗黑王朝》的光影环境做到后面,我最大的感受是:这活儿本质上不是加法,是减法。每加一盏灯之前先问自己,这一盏是不是必需的;每调高一个参数之前先想,它会不会打破明暗比例。少放光、压低强度、只留必要的方向,画面反而会站得住。这套流程走下来,希望对你正在做的次世代场景也有点用。
