现象:为什么默认天空总像「塑料」?
在UE5中新建一个空场景,拖入Sky Atmosphere和Sky Light,你大概率会得到一个色调均匀、层次扁平、边缘发灰的天空。即便把太阳强度拉到10,地平线依然缺少那种「被大气压暗、被气溶胶染红」的物理真实感。这不是参数没调对,而是你没有理解大气雾系统背后那套单次散射+高度衰减+瑞利/米氏双分布的物理模型。本文不教你怎么滑参数,而是从辐射传输方程出发,逐层拆解UE5大气雾的算法骨架,让你每一次调整都有数学依据。

原理:大气散射的物理基础与UE5的近似策略
1.1 单次散射近似:为什么只算一次反而更「真」?
真实大气中,光子从太阳到人眼可能经历多次散射(multi-scattering)。UE5的Sky Atmosphere默认采用单次散射近似(Single Scattering Approximation),即只计算光子从太阳出发、经一次大气粒子散射后进入相机的路径。这看似「偷懒」,实则是经过权衡的工程决策:多次散射的计算复杂度呈指数增长,而单次散射已能捕捉80%以上的视觉特征——天空的蓝色渐变、地平线的白色雾霭、日落时的红色光晕。更关键的是,单次散射模型让透射率(Transmittance)的计算可以沿视线方向解析积分,这正是UE5能在实时帧率下渲染大气的基础。
UE5的改进在于引入了多散射近似项(Multi-Scattering LUT):预计算一张低分辨率的多散射查找表,在单次散射结果上叠加一个各向同性的环境光项。这解释了为什么UE5的天空比纯单次散射的离线渲染器更「厚实」——它用一张LUT补偿了高阶散射的能量损失。
1.2 瑞利散射与米氏散射:两种粒子的分工
UE5将大气粒子抽象为两类:瑞利粒子(Rayleigh)主导小分子气体(氮、氧),散射强度与波长四次方成反比(∝1/λ⁴),因此蓝光散射远强于红光——这是白天天空呈蓝色的根本原因;米氏粒子(Mie)主导气溶胶(尘埃、水汽),散射强度与波长弱相关,且具有强前向散射特性(相函数峰值在0°附近),这是太阳周围出现「日晕」、地平线出现「白雾」的物理来源。
UE5的Rayleigh Scattering Scale和Mie Scattering Scale并非独立的物理量,而是相对于标准大气模型的缩放系数。标准大气下,瑞利散射系数在海平面约为5.8e-6 m⁻¹(550nm),米氏散射系数约为2e-5 m⁻¹(消光)。当你把Mie Scale从1调到2,相当于把气溶胶浓度翻倍,地平线雾霭会明显增厚——这是做「雾都」场景最直接的物理杠杆。
技巧:不要孤立地调Mie Scale。米氏散射的各向异性因子g(默认0.8)决定了前向散射的集中程度。g越接近1,太阳周围的亮斑越锐利;g接近0则趋于各向同性。做「沙尘暴」时,把g降到0.5并提高Mie Scale,会得到更均匀的浑浊感。
1.3 高度衰减:指数密度分布的数学表达
大气密度随高度呈指数衰减,UE5用Density Exponential Falloff控制衰减速率。标准模型下,瑞利粒子的标高(Scale Height)约为8km,米氏粒子约为1.2km。这意味着在海拔2km处,米氏粒子密度已降至海平面的约19%,而瑞利粒子仍有78%。这个差异解释了为什么高山天空更深邃——米氏气溶胶先被「过滤」掉了,剩下的瑞利散射让蓝色更纯粹。
UE5在视线积分时,将光线路径分割为若干段(默认Sample Count为8),每段取中点密度做矩形积分。采样数过低会导致地平线出现「带状」色阶,过高则增加GPU开销。我的经验是:飞行模拟类项目至少给到16,地面漫游8已足够。

推导:从辐射传输方程到UE5的LUT管线
2.1 单次散射的积分形式
沿视线方向,单次散射的辐亮度L可写为:
L = ∫[T(0,s) · σ_s · p(θ) · E_sun · T(sun,s)] ds
其中T(0,s)是从相机到散射点的透射率,σ_s是散射系数,p(θ)是相函数,E_sun是太阳辐照度,T(sun,s)是从太阳到散射点的透射率。UE5的Sky Atmosphere在每帧渲染时,先通过透射率LUT(预计算的2D纹理,横轴为高度、纵轴为天顶角)快速查询T值,再沿视线做数值积分。这就是为什么改变太阳角度时天空颜色会实时变化——LUT是静态的,但积分路径随太阳方向动态更新。
2.2 相函数:瑞利与米氏的分道扬镳
瑞利相函数为p(θ) = 3/(16π) · (1 + cos²θ),呈前后对称的「哑铃形」;米氏相函数用Henyey-Greenstein近似:p(θ) = (1-g²) / (4π(1+g²-2g·cosθ)^1.5),g为各向异性因子。UE5的Mie Anisotropy参数直接对应这个g值。当g=0.8时,前向散射强度是后向的约40倍——这就是为什么逆光看太阳时,周围会有一圈刺眼的光晕,而背对太阳时天空相对均匀。
2.3 多散射LUT:UE5的「作弊」艺术
纯单次散射的天空在地平线附近会偏暗,因为多次散射的光子被忽略了。UE5的解决方案是预计算一张各向同性多散射LUT:在球谐域内求解简化后的辐射传输方程,将多次散射近似为均匀环境光。这张LUT在运行时以低阶球谐系数注入,代价极低但效果显著——地平线的亮度提升约30%,且色调更接近真实照片。我的判断是:不要关闭多散射,除非你在做风格化渲染(如卡通天空),否则物理正确性会大打折扣。
注意:多散射LUT在
Sky Atmosphere组件的MultiScattering卷展栏中控制。默认MultiScattering Factor为1.0,调到0相当于退回纯单次散射。做「外星大气」时,可以把这个值调高到2.0,模拟高密度大气下的强多次散射。
验证:参数调整的物理对应与视觉反馈
3.1 关键参数与物理量的映射表
| UE5参数 | 物理对应 | 视觉影响 | 典型范围 |
|---|---|---|---|
| Rayleigh Scattering Scale | 瑞利散射系数缩放 | 天空蓝色饱和度 | 0.5–2.0 |
| Mie Scattering Scale | 米氏散射系数缩放 | 地平线雾霭浓度 | 0.5–5.0 |
| Mie Anisotropy | 各向异性因子g | 太阳光晕锐度 | 0.3–0.95 |
| Density Exponential Falloff | 密度标高 | 高空天空深度 | 0.5–2.0 |
| MultiScattering Factor | 多散射补偿强度 | 地平线亮度 | 0.5–2.0 |
3.2 实验:日落红移的物理验证
将太阳角度降到地平线附近(约-2°),观察天空颜色变化。物理上,此时阳光穿过的大气路径极长,蓝光被瑞利散射大量剥离,剩余红光占比升高——这就是日落变红的机制。在UE5中,你可以通过Sky Atmosphere的Sun Disk强度变化来验证:当太阳高度角低于5°时,Sun Disk的色温会从约5800K自动向2500K偏移(如果启用了Sun Disk Color Scale的物理模式)。若你手动覆盖了太阳颜色,这个物理联动就会失效——这是新手常犯的错误。
3.3 常见误区:为什么你的天空「发灰」?
天空发灰通常有三个原因:其一,Mie Scattering Scale过高,米氏散射的「白化」效应压过了瑞利蓝;其二,Sky Light的Lower Hemisphere Is Black未勾选,导致下半球环境光污染了天空;其三,Atmosphere Height设置过小(默认60km),导致高层大气被截断,地平线缺少足够的散射路径。我的建议是:保持Atmosphere Height在60–100km,Mie Scale不超过2.0,并始终用Sky Light的Real Time Capture模式捕捉动态天空。

总结:大气雾是物理与艺术的交汇点
UE5的大气雾系统不是一堆孤立参数的集合,而是一套基于辐射传输理论的物理模拟器。理解单次散射的积分形式,你就能预判每个参数调整的视觉后果;理解瑞利与米氏的分工,你就能精准控制天空的「蓝」与「白」;理解多散射LUT的补偿逻辑,你就能在物理正确与艺术夸张之间找到平衡点。真正的高手,调的是物理量,不是滑条。
在火星人教育的UE5游戏特效与虚拟制片课程中,我们始终强调「原理驱动创作」——只有吃透底层机制,才能在项目中做出有说服力的视觉叙事。无论是构建异星大气、模拟沙尘暴,还是为影视级场景匹配真实天空,这套物理框架都是你绕不开的基石。
关于火星人教育:创办24年来,火星人教育专注数字艺术与AIGC实战职业技能培训,开设AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等课程。北京、深圳双校区线下面授,面向美术生、在校大学生及转行人群,以项目化实训夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。








评论(0)