引言:当光线在雾中迷失——一个被多数人忽略的物理现象
在Blender中为场景添加一个Volume Scatter节点,调整Density和Anisotropy,就能得到朦胧的雾效——这几乎是每个初学者都会的操作。但你是否思考过:为什么增加Density会让物体对比度下降?为什么Anisotropy为正时会出现“银边效应”?为什么Cycles渲染体积时噪点总是顽固地聚集在光源附近?这些现象背后,是一套完整的辐射传输理论(Radiative Transfer Theory)在起作用。本文将以“现象→原理→推导→验证”的脉络,逐层剖析Volume Scatter的底层机制,并给出基于物理的采样优化策略。这不是一篇参数罗列教程,而是一次对光与介质相互作用的深度思辨。

现象观察:三个反直觉的渲染表现
在深入数学之前,我们先记录三个在Blender中可复现的典型现象,它们将作为后续推导的验证锚点。
- 现象一:密度均匀的雾,为何边缘比中心亮? 当相机穿过一个均匀体积时,图像边缘的亮度往往高于中心。直觉上密度均匀应该亮度均匀,但实际渲染结果却呈现径向渐变。
- 现象二:Anisotropy=0.8时,逆光拍摄出现强烈光晕,但顺光时雾几乎消失。 前向散射(forward scattering)导致光线偏离原方向的角度集中在小角度范围内,使得逆光时相机接收到大量被散射的光子,而顺光时则相反。
- 现象三:增加体积的Multiple Scattering(多重散射)选项后,渲染时间翻倍,但阴影区域的亮度提升显著。 单次散射假设下,光子与介质只作用一次;而多重散射允许光子在介质中弹射多次,这解释了为何阴影区(直接光照不到)会因周围散射光而变亮。
这些现象无法用简单的“密度×颜色”模型解释,必须回到辐射传输方程(RTE)中寻找答案。
原理:辐射传输方程与Volume Scatter的数学本质
2.1 辐射传输方程(RTE)的基本形式
辐射传输方程描述了辐射亮度(Radiance)在介质中传播时的变化率。对于非发射、非吸收的纯散射介质,沿方向ω的微分形式为:
dL(x, ω)/ds = -σ_s L(x, ω) + σ_s ∫ p(ω, ω') L(x, ω') dω'
其中σ_s为散射系数(Blender中Density参数直接对应σ_s),p(ω, ω’)为相位函数(Phase Function),描述从方向ω’入射的光线被散射到方向ω的概率密度。第一项是衰减项(out-scattering),第二项是内散射项(in-scattering)。
这个方程的本质是:光线在介质中传播时,一方面因被散射到其他方向而衰减,另一方面又从其他方向接收散射光而增强。Volume Scatter节点正是通过数值方法求解这个积分-微分方程。
2.2 相位函数:Henyey-Greenstein近似与Anisotropy参数
Blender的Volume Scatter使用Henyey-Greenstein(HG)相位函数来近似真实介质的散射分布:
p(θ) = (1 - g²) / (4π (1 + g² - 2g cosθ)^(3/2))
其中g即Anisotropy参数,范围[-1, 1]。g=0时退化为各向同性散射(Rayleigh散射的近似),g>0表示前向散射占优(如雾、云),g<0表示后向散射占优。HG函数并非从第一性原理推导而来,而是基于经验拟合,但它在计算成本和物理合理性之间取得了极佳平衡。
关键洞察:g值直接决定了“银边效应”的强度。当g=0.8时,相位函数在θ=0°附近出现尖锐峰值,意味着光线更倾向于沿原方向继续传播,因此逆光时相机方向与光线传播方向相反,接收到的散射光反而更强——这解释了现象二。
2.3 单次散射与多重散射的数学分界
RTE的积分形式可以通过Neumann级数展开为多次散射的求和:
L = L_0 + L_1 + L_2 + ...
L_0为未经散射的直射光,L_1为单次散射光,L_2为二次散射光,依此类推。Blender的Volume Scatter默认只计算单次散射(L_1),而Multiple Scattering选项则通过随机游走(random walk)模拟更高阶项。每增加一次散射,计算量呈指数增长,但阴影区域的亮度提升(现象三)正来源于L_2及更高阶项。
技巧提示:在大多数雾效场景中,单次散射已足够;但当需要表现浓密云层或次表面散射时,务必开启Multiple Scattering,并配合Denoising使用,否则噪点难以收敛。

推导:从RTE到Cycles的采样策略
3.1 体积渲染的蒙特卡洛积分
Cycles使用蒙特卡洛方法求解RTE。对于单次散射,沿光线方向采样一个散射点,计算该点的内散射贡献。采样点的概率密度函数(PDF)通常与透射率(transmittance)成正比:
PDF(t) = σ_s exp(-σ_s t) / (1 - exp(-σ_s d))
其中t为沿光线的距离,d为体积厚度。这个PDF被称为“距离采样”,其累积分布函数(CDF)可解析求逆,从而实现高效采样。
然而,当σ_s很大(浓雾)时,透射率迅速衰减,采样点集中在前表面附近,导致后方区域采样不足——这正是噪点聚集在光源附近的原因(现象一的根源之一)。
3.2 重要性采样与光源采样的结合
为了降低方差,Cycles采用“光源采样+距离采样”的混合策略:对光源直接采样(next event estimation),再对体积内散射点采样。但两者之间的权重平衡由MIS(Multiple Importance Sampling)启发式决定。当Anisotropy较大时,相位函数峰值方向与光源方向偏差大,光源采样的效率下降,此时应增加距离采样的样本数。
一个常被忽略的参数是Volume Sampling中的Step Rate(步进率)。它控制光线在体积中前进的步长,步长越小,采样越密集,但计算量越大。对于均匀介质,步长可设为较大值;对于非均匀介质(如使用噪声纹理驱动密度),步长需小于密度变化尺度。
3.3 验证:一个可复现的对照实验
为验证上述推导,我们设计如下实验:创建一个立方体体积,Density=1.0,Anisotropy分别设为0、0.5、0.8,使用Cycles渲染,固定采样数512,比较图像的信噪比(SNR)和渲染时间。
| Anisotropy | SNR (dB) | 渲染时间 (s) | 视觉表现 |
|---|---|---|---|
| 0.0 | 28.3 | 45 | 均匀朦胧,无方向性 |
| 0.5 | 26.1 | 52 | 轻微前向散射,逆光略亮 |
| 0.8 | 22.7 | 68 | 强烈银边,噪点集中于光源侧 |
数据表明:随着g增大,SNR下降(噪点增加),渲染时间上升。这是因为相位函数的尖锐峰值导致采样方差增大。解决方案是增加光源采样权重,或使用Filter Glossy(在Cycles的Light Paths设置中)来钳制高方差样本。

行业案例:体积散射在影视级雾效中的实战应用
在火星人教育的商业项目实训中,我们曾为某科幻短片制作“星云迷雾”场景。初始使用默认Volume Scatter,Density=0.5,Anisotropy=0,渲染结果平淡且噪点多。通过以下三步优化,最终在保持物理合理性的前提下将渲染时间降低40%:
- 步骤一:基于相位函数的光源采样优化。 将Anisotropy提高到0.6以模拟星云尘埃的前向散射特性,同时在光源设置中启用“Multiple Importance”并提高光源采样数至1024。
- 步骤二:分层密度控制。 使用Noise Texture驱动Density,并通过ColorRamp将密度变化控制在0.2~1.2之间,避免极端值导致采样困难。步进率设为0.1,确保捕捉细节。
- 步骤三:多重散射的有限启用。 仅对核心区域启用Multiple Scattering(通过Volume的“Density”属性结合顶点组控制),外围区域保持单次散射,平衡质量与速度。
最终渲染的星云场景在4K分辨率下噪点收敛良好,且逆光时的光晕层次分明,获得了客户的高度认可。这一案例印证了:对RTE的深入理解,直接转化为渲染效率与艺术表现力的双重提升。
总结:从方程到像素的认知闭环
Volume Scatter并非一个孤立的节点,而是辐射传输方程在Cycles中的数值实现。理解RTE的衰减-内散射平衡、HG相位函数的各向异性、以及蒙特卡洛采样的方差来源,才能摆脱“调参玄学”,进入基于物理的创作自由。下次当你拖动Density滑块时,不妨想一想:你正在改变的是σ_s,而屏幕上的每一颗粒子噪点,都是方程求解过程中一次随机采样的足迹。
关于火星人教育:创办24年来,火星人教育始终专注于数字艺术与AIGC实战职业技能培训,开设课程涵盖AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训。北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。在火星人教育的课堂里,我们不仅教你调参数,更带你读懂每一个参数背后的数学与物理。








评论(0)