定向光:定向光参数详解,模拟太阳光与月光,阴影设置与级联阴影贴图

定向光,说白了就是那种没有具体位置、只有方向的光源。你想想看,太阳离我们那么远,它照到地球上的光线几乎是平行的。UE5里的定向光就是模拟这个效果——不管你的场景有多大,光照方向始终一致。

我个人习惯把定向光叫做「场景的骨架」。没有它,你的场景再漂亮也像一张白纸。今天我们就来彻底拆解这个光源。

定向光的基础参数

先看最常用的几个参数。打开定向光的细节面板,你会看到这些核心选项:

参数 作用 我的建议
Intensity(强度) 控制光照亮度 太阳光一般10-20 lux,月光0.01-0.05 lux
Light Color(颜色) 光源颜色 太阳用暖色(255,240,220),月光用冷色(180,200,255)
Source Angle(源角度) 控制阴影边缘软硬 太阳0.5-1.0度,月光0.1-0.3度
Attenuation(衰减) 定向光不支持衰减 因为它是平行光,距离不影响强度

嗯,这里要注意一个坑。很多新手会把定向光的强度拉得特别高,结果场景一片惨白。我在项目中遇到过类似情况——美术同学把强度调到50,然后跑来问我为什么场景过曝。其实太阳光在UE5里用10-15就足够了,配合后期处理里的曝光补偿,效果会自然很多。

模拟太阳光

模拟太阳光,核心是三个要素:方向、颜色、阴影软硬。

方向决定了场景的基调。清晨的阳光低角度,拉出长长的影子。正午的阳光从头顶照下来,影子短而硬。我个人习惯用BP_Sky_Sphere配合定向光,让天空球自动计算太阳位置。这样你旋转定向光时,天空的颜色也会跟着变,非常方便。

颜色方面,我建议用色温来思考。日出日落时偏暖(色温2000-3500K),正午偏白(5500-6500K)。在UE5里,你可以直接用色温模式,或者手动调RGB。我一般用(255, 235, 210)作为正午太阳,稍微带点暖意。

阴影软硬由Source Angle控制。角度越大,阴影边缘越模糊。为什么?因为太阳不是点光源,它有一定的大小。角度0.5度时阴影很锐利,适合表现晴天的硬阴影。角度1.5度时阴影柔和,适合有雾或者多云天气。

我的小技巧: 模拟黄昏时,把Source Angle调到1.0-1.5度,配合暖色光,阴影边缘会有一层淡淡的柔光感,特别适合电影感画面。

模拟月光

月光和太阳光最大的区别是什么?强度低、颜色冷、阴影更柔和。

我做过一个夜景项目,刚开始怎么调都不对劲。后来发现是强度太高了。月光的强度其实只有太阳的千分之一左右。在UE5里,我一般用0.02-0.05的强度,配合冷蓝色(180, 200, 255)。

还有一个容易被忽略的点——月光的Source Angle。月亮在天空中的视角和太阳差不多,但因为月光是反射光,本身比较散射,所以阴影边缘会更模糊。我建议用0.8-1.2度,让阴影有那种朦胧感。

另外,月光场景里一定要配合环境光。纯定向光会让暗部死黑。我会在场景里加一个Sky Light,强度调到0.1-0.3,颜色偏蓝紫,这样暗部会有细节,又不会破坏月光的主光氛围。

避坑指南: 我曾经在月光场景里把定向光的强度调到0.5,结果场景亮得像白天加了蓝色滤镜。月光的核心是「暗中有细节」,不是「亮中带蓝色」。记住,强度控制在0.05以下,配合后期处理里的曝光补偿,才能做出真实的夜景。

阴影设置与级联阴影贴图

阴影是定向光的灵魂。没有阴影,你的场景就是漂浮的。UE5使用级联阴影贴图(CSM)来处理定向光的阴影,说白了就是把场景按距离分成几层,每层用不同分辨率的阴影贴图。

先看核心参数:

参数 位置 作用
Dynamic Shadow Distance 定向光 > Cascaded Shadow Maps 阴影可见的最大距离
Num Shadow Maps 同上 级联层数,默认4
Distribution Exponent 同上 级联分布权重,控制近处和远处的分辨率分配
Shadow Map Resolution 项目设置 > 渲染 每张阴影贴图的分辨率

Dynamic Shadow Distance 决定了多远能看到阴影。我建议室外场景设到5000-10000单位。太远了浪费性能,太近了远处物体没有阴影,穿帮。

Num Shadow Maps 默认4层就够了。层数越多,近处阴影越精细,但性能开销也越大。我做过一个开放世界项目,用了6层,结果帧率掉了10帧。后来改回4层,配合Distribution Exponent调整,效果差不多。

Distribution Exponent 这个参数很有意思。它控制级联的分布。值越小,级联越均匀分布;值越大,近处的级联越密集,远处的越稀疏。我一般用1.0-2.0。为什么?因为近处的阴影需要高精度,远处的可以模糊一些。

核心原则: 级联阴影贴图的核心是「近精远粗」。近处的阴影用高分辨率,远处的用低分辨率。这样既保证了画面质量,又控制了性能开销。

还有一个参数叫Shadow Bias,用来防止阴影偏移(Shadow Acne)。说白了就是阴影贴图精度不够时,会出现条纹或者斑点。我建议用默认值0.5,如果出现阴影闪烁,可以稍微调大一点。但不要超过2.0,否则阴影会偏移太多,出现「悬空」效果。

我曾经在项目中遇到一个棘手的问题——远处的阴影突然消失,出现明显的「级联边界」。后来发现是Dynamic Shadow Distance设得太小,而场景又太大。解决办法是把距离调大,同时把Distribution Exponent调到1.5,让级联过渡更平滑。

性能优化建议

定向光的阴影是性能大户。这里分享几个我在项目中用过的优化技巧:

  • 降低Shadow Map Resolution:默认2048,室外场景用1024就够了。除非你的场景特别大,或者需要特写镜头。
  • 使用Contact Shadows:在项目设置里开启Contact Shadows,可以补充小物体的阴影细节,同时不用提高CSM分辨率。
  • 调整级联层数:室内场景用2层,室外用4层。不要盲目追求层数。
  • 动态阴影距离:根据场景大小动态调整。我一般用蓝图在运行时根据玩家位置调整这个值。
我的经验: 如果你在做开放世界,建议把定向光的阴影距离控制在5000以内,然后用Distance Field Shadows补充远处的阴影。这样性能和质量都能兼顾。

知识体系结构图

下面这张图总结了定向光的核心知识体系,你可以把它当作快速参考:

定向光知识体系 基础参数 模拟太阳/月光 阴影与CSM Intensity / Light Color Source Angle(阴影软硬) Attenuation(定向光无衰减) 太阳:暖色 + 硬阴影 月光:冷色 + 柔阴影 配合Sky Light / 环境光 Dynamic Shadow Distance Num Shadow Maps(级联层数) Distribution Exponent Shadow Bias / Resolution 核心原则:近精远粗,冷热分明,阴影是灵魂 性能优化:降低分辨率 + Contact Shadows + 动态距离

定向光看似简单,但真正用好它需要理解背后的原理。从基础参数到阴影设置,每一步都影响最终效果。我个人建议你多尝试不同的参数组合,尤其是Source Angle和级联阴影的配合。你会发现,同样的场景,换一组参数,氛围完全不同。

好了,定向光的内容就到这里。记住,灯光不是技术活,是感觉活。参数只是工具,真正决定画面的是你对光影的理解。


公众号:蓝海资料掘金营,微信deep3321