引言
在 UE5 里做场景,最让人抓狂的往往不是模型、不是材质,而是那层看不见摸不着、却又无处不在的大气雾(Atmospheric Fog)。我见过太多学员——包括当年我自己——对着一个“灰蒙蒙、像隔了层毛玻璃”的场景调了一下午参数,最后只能靠后期拼命拉对比度来“遮丑”。
今天这篇,我不打算给你按部就班地讲“什么是大气雾”、“参数怎么调”。我要做的,是把你即将踩进去的坑,一个一个提前给你标出来。每一个坑,我都会告诉你:现象是什么样的 → 根因出在哪 → 怎么解决 → 以后怎么预防。这些都是我用无数个加班的夜晚换来的血泪经验,希望你看完能少走一半弯路。

坑 1:场景一片死白,像被牛奶洗过
现象
你建好了一个漂亮的白模场景,放上 Directional Light,然后勾选了 Exponential Height Fog(指数高度雾)的“Volumetric Fog”选项。结果——整个场景瞬间变成一片乳白色,所有物体的轮廓都模糊不清,阴影完全消失,像掉进了一罐没摇匀的牛奶里。
根因
这是最经典的新手错误。体素雾的默认密度太高。指数高度雾的“Fog Density”默认值是 0.02,听起来不大,但在体素化之后,每个体积单元里都会累积散射和吸收,叠加起来就变成了浓雾。而且,默认的“Volumetric Fog Distance”只有 6000 单位(约 60 米),意味着在这个距离内,雾的密度是线性累积的,远处的物体会被完全淹没。
解决方案
第一步,把 Fog Density 降到 0.002~0.005 左右。第二步,把 Volumetric Fog Distance 提到 10000 以上,或者直接改成 0(表示无限远)。第三步,如果你想要的是“晴朗天气下的远处薄雾”,而不是“雾都伦敦”,请务必把“Volumetric Fog Scattering Distribution”调成 0.6 左右(默认是 0.2,这个值越低,光线越容易在雾中散射,雾看起来越浓)
预防措施
养成习惯:每次开启 Volumetric Fog 后,先在场景里放一个纯色球体,用眼睛盯着它,把 Density 从 0 慢慢往上加,直到你感觉“有点空气感”就停。不要直接套用别人的数值,因为你的场景尺寸和光照强度完全不同。
坑 2:大气雾和天空球“各自为政”,天空颜色断层
现象
你用 Sky Atmosphere 做了漂亮的日落天空,又用 Exponential Height Fog 做了地面雾效。结果在水平线附近,天空和雾之间出现了一条明显的分界线,天空是橙红色,雾却是灰蓝色,看起来极其假。
根因
UE5 的Sky Atmosphere 和 Exponential Height Fog 是两个独立的系统。Sky Atmosphere 负责模拟全球大气散射,它输出的天空颜色是“从宇宙视角”计算的;而 Exponential Height Fog 是在渲染后期叠加在场景上的雾效。两者如果不协调,就会在远处地平线处产生颜色和密度的突变。
解决方案
最优雅的解决方案是:放弃 Exponential Height Fog,只用 Sky Atmosphere 的“Aerial Perspective”(空中透视)功能。你可以在 Exponential Height Fog 的“Fog Inscattering Color”里,把颜色调成和 Sky Atmosphere 的地平线颜色一致。但这只是治标不治本。
真正的做法是:在项目设置里,把“Generate Mesh Distance Fields”打开,然后在 Exponential Height Fog 上勾选“Volumetric Fog”并开启“Temporal Reprojection”,让雾和天空在远处融合。但更推荐的做法是——如果你用的大气是 Sky Atmosphere,那么地面的薄雾直接用它的“Aerial Perspective”来实现,把 Exponential Height Fog 的 Density 降到极低(比如 0.0001),只用来做近地面的局部雾。
预防措施
在创建项目时,先想清楚你要什么天气。如果是晴天、多云,直接只用 Sky Atmosphere;如果是雾天、阴天,再考虑加 Exponential Height Fog。不要默认两个都加。
坑 3:体素雾体积太大,性能瞬间爆炸
现象
你开启了 Volumetric Fog,场景里还加了一堆点光源、聚光灯。运行起来发现帧率从 120 掉到 30,GPU 占用率飙升,画面还出现了一块块明显的噪点。
根因
Volumetric Fog 是基于体素化的,它会在场景中生成一个三维网格,每个体素都要计算光照散射。默认的“Volumetric Fog Grid Pixel Size”是 8,意味着每 8 个像素一个体素,分辨率越低,性能越好但质量越差。而“Volumetric Fog Temporal Reprojection”可以降低噪点,但也会增加性能开销。更关键的是,场景中每个光源都会参与体积散射计算,光源越多,计算量成倍增长。
解决方案
第一,把“Volumetric Fog Grid Pixel Size”调成 16 或 32(牺牲一点质量换性能)。第二,限制参与体积雾的光源数量,只让最重要的主光源和少数补光参与,在光源细节面板里把“Volumetric Scattering Intensity”调成 0 或 1。第三,打开“Temporal Reprojection”并提高“Temporal Reprojection Blends”,可以大幅减少噪点,同时允许你用更低的体素分辨率。
预防措施
在项目早期就进行性能预算测试:先开一个空场景,加入体积雾,测一下帧率,再逐步添加光源和物体,看看什么时候开始掉帧。这样你能清楚地知道你的场景能承受多少光源。
坑 4:雾效在夜景中“消失”或“过于浓郁”
现象
你做了一个夜景,开着路灯,地面有雾,但发现雾在灯光下完全看不到,或者灯光周围出现一圈圈奇怪的光晕,像得了白内障。
根因
体积雾的散射依赖于光源。在夜晚,环境光很暗,但点光源的强度很高,这会导致光源附近的雾散射特别强,产生光晕。而远处没有光源的地方,雾因为缺乏散射光,看起来就是黑色的,仿佛没有雾。另外,夜间的 Fog Inscattering Color(雾内散射颜色)默认是浅蓝色的,在暗环境下会显得很亮,导致雾看起来像悬浮的灰蓝色块。
解决方案
针对光晕问题,可以降低光源的“Volumetric Scattering Intensity”,或者调整光源的“Attenuation Radius”,让光衰减得更快。针对雾的颜色,把 Fog Inscattering Color 调成深蓝色或黑色,让雾在暗处自然融入背景。还可以增加“Fog Density”但降低“Fog Height Falloff”,让雾在贴近地面的高度更浓,而不是整体弥漫。
预防措施
夜景雾效一定要用“Fog Height Falloff”来控制雾的分布,让雾集中在低洼处,而不是均匀分布。同时,把雾的颜色和整体色调统一,不要用默认的浅蓝色。
坑 5:雾效导致场景颜色发灰,饱和度丢失
现象
你调好了雾,觉得氛围不错,但渲染出来的画面颜色总是发灰,像蒙了一层灰布,物体的固有色全被“洗”掉了。
根因
大气散射的本质是光线在雾中多次散射,导致颜色被“稀释”。UE5 的物理模型里,雾会散射所有波长的光,但通常散射强度与波长有关(瑞利散射),导致天空是蓝色的,但远处物体反射的光线被散射后,颜色饱和度下降。如果你在后期处理里用了 ACES 色调映射,它也会压缩高光,进一步降低饱和度。
解决方案
第一,在后期处理卷的“Color Grading”里,提高“Saturation”到 1.1~1.2。第二,在 Exponential Height Fog 里,有一个“Fog Inscattering Color”的强度缩放,你可以把它调低,减少雾对颜色的影响。第三,使用“Volumetric Fog Scattering Distribution”的“Anisotropy”参数,调高它可以让光线更多地向前散射,减少背景被“染色”的程度。
预防措施
在调雾之前,先关掉所有后期效果,把场景颜色调到满意,再加入雾。这样你能清楚地看到雾对颜色的影响,而不是在雾里调颜色,导致越调越脏。
坑 6:雾效在不同角度/镜头下表现不一致
现象
你固定了一个机位,调好了雾效,觉得很完美。但当镜头转动或移动时,雾的密度、颜色、光晕突然变得很奇怪,甚至出现闪烁。
根因
这通常是因为体积雾的时域重投影(Temporal Reprojection)没有正确工作。时域重投影会利用上一帧的信息来平滑当前帧,但如果相机移动过快或场景中物体移动,重投影会产生拖影或错误。另外,雾的密度分布依赖于高度和距离,当你从低处看远处时,雾会显得很厚;从高处往下看时,雾会显得很薄,这是正常的物理现象,但如果没有处理好,就会看起来很突兀。
解决方案
检查“Volumetric Fog Temporal Reprojection”是否开启,如果开启了,试着调整“Temporal Reprojection Blends”到 0.5~0.8,可以平衡平滑和响应速度。如果你的镜头移动很快,可以考虑关闭时域重投影,但会增加噪点。另外,确保“Volumetric Fog Distance”足够大,否则远处的雾会突然消失。
预防措施
在调雾时,不要只用一个机位,要多切换几个角度,尤其要测试从高空俯视和从地面仰视两个极端角度。同时,使用 Sequencer 录制一段镜头动画,观察雾效的稳定性。
坑 7:雾效与后期体积光(God Rays)叠加后出现异常
现象
你在场景里加了体积光(比如通过 Light Shaft 或者 God Rays 插件),想让光线穿过雾产生光束效果,结果发现画面出现大面积的过曝区域,或者光束和雾互相干扰,产生丑陋的条纹。
根因
体积光和体积雾都是基于光线散射的,它们会互相影响。体积光的光强如果太高,会在雾中产生强烈的散射,导致过曝;而体积雾的密度不均匀,会让体积光的光束出现断裂或波纹。另外,很多体积光实现是后期屏幕空间效果,它们和体积雾的体素化渲染不兼容,导致顺序错误。
解决方案
如果你用的是 UE5 内置的“Light Shaft”功能(在 Directional Light 上启用),请确保“Light Shaft Occlusion”和“Light Shaft Bloom”的强度适中,并降低“Bloom Threshold”以避免过曝。如果你用的是第三方插件,尽量选择支持体积雾的版本。更推荐的做法是:用体积雾自带的光照散射来模拟体积光,也就是提高光源的“Volumetric Scattering Intensity”,而不是额外叠加一个 God Rays 效果。
预防措施
在添加任何体积光效果之前,先测试你的雾效是否已经足够好了。很多时候,一道清晰的体积雾光束比一个粗糙的 God Rays 效果更有质感。
总结
大气雾是 UE5 场景中最容易被忽视却又影响最大的元素之一。我总结的这 7 个坑,每一个都是我自己或我的学员真实踩过的。记住:大气雾不是“加上去就完事”的特效,而是一个需要精心调校的物理系统。理解它的原理,掌控它的参数,你才能真正让雾为你的场景服务,而不是被它拖累。
希望这篇避坑指南能帮你省下几个不眠之夜。如果你有其他关于大气雾的困惑,欢迎在评论区留言,我会挑典型的问题专门做一期解答。








评论(0)