现象:为什么默认天空总像「塑料」?

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

UE5大气雾系统深度解构:从物理散射到视觉叙事的原理级剖析 - 配图1
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大气雾系统深度解构:从物理散射到视觉叙事的原理级剖析 - 配图2
UE5大气雾系统深度解构:从物理散射到视觉叙事的原理级剖析

推导:从辐射传输方程到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大气雾系统深度解构:从物理散射到视觉叙事的原理级剖析 - 配图3
UE5大气雾系统深度解构:从物理散射到视觉叙事的原理级剖析

总结:大气雾是物理与艺术的交汇点

UE5的大气雾系统不是一堆孤立参数的集合,而是一套基于辐射传输理论的物理模拟器。理解单次散射的积分形式,你就能预判每个参数调整的视觉后果;理解瑞利与米氏的分工,你就能精准控制天空的「蓝」与「白」;理解多散射LUT的补偿逻辑,你就能在物理正确与艺术夸张之间找到平衡点。真正的高手,调的是物理量,不是滑条。

在火星人教育的UE5游戏特效与虚拟制片课程中,我们始终强调「原理驱动创作」——只有吃透底层机制,才能在项目中做出有说服力的视觉叙事。无论是构建异星大气、模拟沙尘暴,还是为影视级场景匹配真实天空,这套物理框架都是你绕不开的基石。

关于火星人教育:创办24年来,火星人教育专注数字艺术与AIGC实战职业技能培训,开设AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等课程。北京、深圳双校区线下面授,面向美术生、在校大学生及转行人群,以项目化实训夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。