引言:一个让我差点通宵的项目

上个月,我接了一个汽车广告的项目。客户要求很高,要电影级的质感,而且时间紧——只有三天。第一天,我像往常一样,把所有材质、灯光、场景都堆在同一个渲染层里,直接输出一张完整的 EXR。结果,到了合成阶段,我傻眼了:背景的街灯辉光糊在了车身上,车漆的反光里带着环境贴图的噪点,连阴影的边缘都脏兮兮的。我花了整整一个晚上去修,最后客户还是不满意。第二天,我决定彻底改变工作流——用 Blender 的渲染通道(Render Passes)做分层合成。这篇文章,就是那 72 小时的完整复盘,包括我踩过的坑、背后的原理,以及最终交付的成果。

Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时 - 配图1
Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时

第一步:需求分析——为什么单帧渲染满足不了电影级合成?

在动手之前,我先想清楚了一个问题:为什么我不能像以前那样,直接渲染一张图?因为电影级合成的核心在于控制——你需要单独调整某个元素的颜色、光影、反射,而不是整张图一起调。比如,客户说“车身的反光太强了”,如果你只有一张图,你只能调亮整体或者用蒙版抠,但蒙版边缘会发虚,而且你无法单独处理反光里的高光细节。而渲染通道,本质上是把图像分解成多个“属性层”,比如漫反射、光泽反射、阴影、环境光遮蔽、景深、运动模糊等,每一层都对应着图像的一个维度。你可以在合成器里把这些层像积木一样重新组合,灵活控制每一个维度,而不会影响其他部分。

Blender 的渲染通道系统,基于 Cycles 和 EEVEE 的光线追踪与着色器架构。Cycles 的每个着色器输出,都会在渲染时被拆解成多个“光流”(light paths),比如直接光照、间接光照、透射、次表面散射等。渲染通道就是这些光流的最终汇总。理解这一点很重要:通道不是简单的遮罩,而是携带了物理光学信息的“属性图”。比如,光泽反射通道(Glossy Direct/Indirect)记录了物体表面所有光泽反射的光线贡献,你可以单独调整它的强度、色相,甚至叠加滤镜,而不会影响漫反射通道。

第二步:技术选型——Cycles 还是 EEVEE?我的选择与理由

可能有人会问,EEVEE 也支持渲染通道,为什么我选了 Cycles?我的原则是:如果项目需要真实的物理光照和高级合成,Cycles 是少见选择;如果追求实时预览和快速迭代,EEVEE 可以,但通道的物理准确性会打折扣。 EEVEE 的渲染通道是基于屏幕空间效果的近似,比如它的环境光遮蔽(AO)是屏幕空间计算的,会有边缘瑕疵,而 Cycles 的 AO 是基于光线追踪的,更加准确。在这个项目里,客户要求车漆的反射要真实地映射周围环境,Cycles 能提供更准确的光泽反射通道,尤其是间接反射。所以,我选了 Cycles,采样 128,用 OptiX 降噪。

关键通道的深度解析

我最终启用了这些通道:Diffuse Direct/Indirect、Glossy Direct/Indirect、Transmission、Shadow、Ambient Occlusion、Normal、Z。每个通道我都知道它的用途,比如:Diffuse 通道用于控制车身的固有色和漫反射光照,Glossy 通道用于单独调整车漆的反光强度,Shadow 通道用于单独柔化阴影,Normal 和 Z 用于后期添加景深和雾效。这里要特别提一下 Shadow 通道:它记录的是直接光照下被遮挡的部分,但它是“反向”的——纯白表示无阴影,纯黑表示全阴影。所以如果你想加深阴影,不是把通道调暗,而是把它作为遮罩来叠加一个黑色图层,调整透明度。这个细节很多人会搞反。

第三步:踩坑记——那些让我崩溃的细节

就算我经验丰富,还是踩了不少坑。第一个坑是 透明背景的合成。我的场景有玻璃,我开了透明胶片(Film > Transparent),结果合成时发现,玻璃的透射通道是黑的,因为透明背景让透射光线直接穿过了,没有记录。解决方法是:在渲染属性里,把“胶片”设为透明,同时开启“透射”通道,但要注意,透射通道只记录因折射产生的光路,而直接穿过的光不会记录。所以我改用“Alpha 通道”加上“透射”的组合,在合成器里用“Set Alpha”节点来重建背景。第二个坑是 Z 通道的精度。Z 通道是深度信息,但它是 32 位浮点,在合成器里如果你直接用它做景深,会非常吃内存,而且精度不够。我最后用了“Cryptomatte”通道(Blender 3.0 起支持),它能把物体 ID 和材质 ID 编码成颜色,方便后期精确抠出车身。这个真的是神器,强烈推荐。

第三个坑是 颜色空间。渲染通道输出的是线性空间的数据,但合成器默认是 sRGB。如果你不转换,颜色会发灰。我一开始没注意,结果合成出来的图整个像蒙了一层雾。后来我在合成器里加了“Color Space”节点,把每个通道都转换为“Raw”或“Linear”,最后在输出前统一转回 sRGB。这个坑让我浪费了一个小时。

第四步:合成工作流——从节点到艺术

有了通道,合成器就像一个调色台。我的节点树是这样的:先输入多个“Image”节点,分别加载各个通道的 EXR(多层 EXR 也可以,但分开更清晰)。然后,我把它们混合:先用“Mix”节点把 Diffuse 和 Glossy 混合,再叠加 Shadow 通道作为乘法遮罩,接着用 AO 通道来加强接触阴影,最后用 Normal 和 Z 通道做景深(通过“Defocus”节点)。这里的关键是 层的顺序:先合并光照通道,再应用阴影和 AO,最后做后期效果。如果顺序错了,效果会不对。

节点组的高级技巧

我还利用了“Cryptomatte”节点组,它可以从 EXR 里提取物体遮罩。我把车身的 ID 放进 Cryptomatte,然后用它来单独调整车身的颜色和亮度,而不影响背景。这个技巧让客户非常满意,因为后期修改不用重新渲染。

Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时 - 配图2
Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时

另外,我用了“Glare”节点加辉光,但只作用于高光区域,我是通过“Glossy 通道”的亮度作为遮罩来实现的,这样辉光只出现在反光强烈的地方,特别真实。最后,我用了“Film Grain”节点加了一点噪点,让画面更有质感。

第五步:交付与复盘——客户为什么说“这就是我们想要的”?

最终,我交付了 3 个版本:一个标准版(用全部通道合成),一个客户版(只调整了车身颜色和背景亮度),一个出色版(加了很多电影感效果)。客户选了出色版,并说“这就是我们想要的”。其实,出色版和标准版的区别,就在于我用了通道微调了细节——比如,我把车漆的 Glossy 通道稍微调高了一点饱和度,然后用 AO 通道加强了车身和地面的接触阴影,最后用 Z 通道做了浅景深。这些调整,如果是单帧渲染,几乎不可能实现,因为会影响整张图。但有了通道,一切都是可行的。

复盘这次项目,我总结了一个原则:渲染通道不是越多越好,而是够用就好。每个通道都需要额外的渲染时间和内存,所以要根据项目需求来选择。对于汽车广告,Diffuse、Glossy、Shadow、AO、Normal、Z 就够了。另外,一定要用多层 EXR 格式保存通道,因为它能保留所有通道的浮点数据,方便后期调整,而且文件大小比单独的序列帧要小。

Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时 - 配图3
Blender 渲染通道分层实战复盘:从合成崩溃到电影级交付的 72 小时

最后的忠告:通道是手段,不是目的

很多初学者一上来就开一堆通道,结果合成器里一团乱麻。我的建议是:先想清楚你要在后期做什么,再决定开哪些通道。比如,如果你只是调色,那么 Diffuse 和 Glossy 就够了;如果你要做景深,那就需要 Z 或 Cryptomatte。通道是手段,不是目的,不要为了用而用。另外,一定要养成保存合成节点的习惯,因为 Blender 的合成器节点很容易被误删,而重新搭建非常耗时。最后,多实验,多对比,你会发现通道能给你带来意想不到的创作自由度。

技巧提示:在渲染属性里,你可以勾选“Compositing”下的“Use Nodes”,这样渲染结果会直接进入合成器,方便你实时预览最终的合成效果,而不需要手动加载文件。

注意:在输出 EXR 时,务必选择“MultiLayer”格式,并勾选你需要的通道。另外,Blender 的 Cryptomatte 通道在 EEVEE 下不支持,所以如果你要用它,必须用 Cycles。

通道名称 作用 适用场景
Diffuse Direct 漫反射直接光照 调整固有色和主光
Glossy Direct 光泽反射直接光照 调整反光强度和颜色
Shadow 阴影信息(反向) 柔化或加深阴影
Ambient Occlusion 接触阴影 增强物体间接触感
Normal 法线方向 后期重打光或添加特效
Z 深度信息 景深、雾效
Cryptomatte 物体/材质ID 精确抠像和分级调色
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。