在计算机图形(CGI)渲染过程中,图像(尤其是在高反射物体上)上出现一些微小且异常明亮的像素点。这些不自然的噪点在CGI领域被普遍称为“萤火虫”(Fireflies)。

什么是“萤火虫”?
“萤火虫”本质上是一种渲染瑕疵。它的产生,是因为渲染器在处理某些像素时,无法对其进行有效的抗锯齿(Anti-aliasing)处理。
核心成因:当一个像素与其相邻像素之间存在极高的亮度对比时,“萤火虫”就可能出现。
这种情况在以下场景中尤为常见:
- 小而强的光源:场景中存在尺寸很小但亮度极高的光源。
- 高光泽材质:使用了高度光滑或镜面反射的材质(Glossy Materials)。
- 过曝的环境贴图:使用的高动态范围图像(HDRI)环境贴图中,包含了亮度值(如太阳)过高的区域。

当某个像素点碰巧精准地反射了环境中一个极亮的点(如小光源或HDRI中的太阳),它的亮度值就会瞬时飙升,远超周围像素,从而形成一个“萤火虫”。
更糟糕的是,这个亮斑还可能通过在其他物体上的二次反射,制造出更多的“萤火虫”。
这种现象在动画序列中尤其恼人,因为它们会表现为闪烁的噪点。
问题诊断:是“萤火虫”还是噪点?
在着手修复之前,必须正确诊断问题。有时候设计师为追求极致的清晰度,会过度夸大灯光和材质参数,这反而增加了“萤火虫”的风险。
因此,使用物理上正确(Physically correct)的数值是诊断和预防的第一步。

再者,“萤火虫”很容易与另一种现象——由噪点模式变化引起的动画“闪烁”(Flickering)相混淆。
这一代可以通过检查渲染元素(Render Elements) 来区分它们:
- 萤火虫:通常主要出现在 VRaySpecular(高光) 和 VRayReflection(反射) 通道中。
- 噪点闪烁:则更多地出现在 VRayGlobalIllumination(全局光照) 和 VRayLighting(光照) 通道中。
此外,您可以使用 VRaySampleRate 或 VRayNoiseLevel 渲染元素,它们可以高亮显示渲染耗时异常的区域,这通常能为您定位问题源头提供线索。
解决方案:如何移除已出现的“萤火虫”
如果渲染结果中已经出现了“萤火虫”,可以采用以下几种方法进行补救:
1. 启用“萤火虫”移除算法 (V-Ray 7及更高版本)
从 V-Ray 7 开始,软件内置了可以自动检测并移除“萤火虫”的算法。这是最直接的解决方案,在 3ds Max, Maya, SketchUp, Cinema4D 等主流软件的 V-Ray 设置中均可找到该选项。

2. 调整图像采样器设置
一个相对快捷但成本较高的方法是提高图像采样器(Image Sampler)的 Min/Max 细分(Subdivs)。提高采样率可以帮助渲染器更好地处理高对比度区域,但缺点是会显著增加总渲染时间。

3. 使用降噪器 (Denoiser)
降噪器是处理“萤火虫”的有效工具,但针对不同情况需要使用不同工具:
- 对于静态图像:启用 V-Ray 渲染元素中的 VRayDenoiser 即可显著减少“萤火虫”的影响。
- 对于动画序列:强烈建议使用独立降噪工具(Standalone Denoiser Tool)。该工具具备插值计算相邻帧信息的功能,可以更平滑、更稳定地处理序列帧,避免产生新的闪烁。

预防措施:从源头杜绝“萤火虫”
处理“萤火虫”的最佳方式,是在搭建场景时就防止它们出现。 预防远胜于补救。
灯光和材质是预防工作的两大重点。
1. 灯光设置建议
灯光是“萤火虫”的最主要贡献者。
- 避免极端参数:避免使用数值过高、尺寸过小或方向性过强(如聚光灯角度过窄)的灯光。
- 平滑灯光纹理:避免使用带有锯齿或过高对比度的灯光纹理。可以对纹理进行轻微模糊,或者(在3ds Max中)使用 VRaySoftbox 纹理来柔化边缘。
- 处理HDRI:避免使用太阳光点过曝(亮度值极高)的 HDRI 贴图。如果必须使用,应在图像编辑软件中适当调低高光点,或者优先选用 Chaos Cosmos 库中提供的经过优化的 HDRI。
- V-Ray Sun:如果使用 V-Ray 太阳,可以考虑启用其 "invisible"(不可见)选项,这样太阳本身不会被直接反射,而是只产生光照和阴影。

2. 材质设置建议
有时,问题可能仅由场景中的某一个材质引起。
- 避免绝对反射:避免使用反射光泽度(Reflection Glossiness)为 1.0(完美镜面)的材质。即使是设置一个非常接近的值,如 0.99,也对减少“萤火虫”大有帮助。
- 避免极端IOR:避免使用不符合物理规律的极高折射率(IOR)值。
核心原则:在整个场景搭建过程中,尽可能保持所有设置(灯光强度、材质属性)的物理准确性,这是规避“萤火虫”及诸多渲染问题的最有效途径。