项目背景:当甲方要求“把背景糊掉”

2024年秋天,我们接了一个高端腕表的CG广告。镜头很简单——手表在转盘上缓缓旋转,背景是抽象的金属波纹。导演看完粗模后,只提了一个要求:“这个背景太实了,我要那种高级广告里背景虚化、主体锐利的感觉,就像用85mm f/1.2拍出来的一样。”我当时的内心戏是:大哥,这是三维渲染,不是实拍。但客户就是上帝,尤其当预算给得足够爽快时。

深度通道后期合成:一个广告项目里的数字景深革命 - 配图1
深度通道后期合成:一个广告项目里的数字景深革命

一开始,团队里有人提议直接渲染景深(DOF)。Maya的Arnold渲染器自带物理景深,参数调起来也不难。但问题来了——渲染时间。这个镜头要渲染,每帧带景深采样,时间直接翻倍,整个镜头两百多帧,交付周期根本扛不住。而且一旦甲方觉得“虚化程度不对”,改起来又是一轮重渲染。这时我想起了老本行——后期合成。与其在渲染阶段死磕,不如走经典的“深度通道(Z-Depth)合成”路线:渲染一张干净的彩色图,外加一张深度图,然后在Nuke里用ZDefocus节点做景深。这样不仅渲染快,后期调整也灵活。但说实话,这条路我也走过几次坑,这次项目正好是一次完整的复盘。

技术选型:为什么是Z-Depth,而不是直接渲染DOF

在Maya中,渲染景深有两种主流方式:

方案 优点 缺点
Arnold物理景深 真实光学效果,焦外高光呈圆形,边缘自然 渲染时间剧增,修改焦段需重新渲染
Z-Depth后期合成 渲染时间几乎不变,后期可控性强,可批量调整 焦外效果需要额外处理(如眩光、色散),真实感稍弱

我倾向选择后者,原因有三:第一,效率是王道,甲方改需求是常态,后期调参比重渲染快一个数量级。第二,我们的镜头是慢速旋转,主体中心基本固定,深度信息相对简单,Z-Depth完全够用。第三,也是最重要的——深度通道还能用于雾效、景深以外的效果,比如后期加体积光、做暗角、甚至模拟镜头呼吸,一图多用。

技巧:如果你需要真实的焦外光斑(比如夜晚霓虹灯的圆形光斑),建议还是用物理景深。但如果镜头动态不大,Z-Depth合成配合后期光斑贴图,能省下大量渲染时间。

第一步:在Maya里输出完美的Z-Depth

在Maya中输出深度通道,首先要确保渲染器正确输出Z通道。我使用的是Arnold,在AOVs(渲染元素)里添加Z(深度)通道。这里有一个关键知识点:Z通道存储的是从摄像机到物体的距离,但它是线性的还是非线性的?Arnold输出的是线性深度,单位是场景单位(厘米或米)。但后期合成软件(如Nuke)通常期望的是0到1的归一化深度,或者反深度(近处为1,远处为0)。所以,我们需要在渲染设置里调整Z通道的Near和Far参数,或者在后期里做映射。

我在Maya中设置的是:Camera的Near Clip Plane设为1,Far Clip Plane设为5000(场景单位是厘米,手表离相机大概30到80厘米)。这样Z通道的数值范围就是1到5000,但Nuke里的ZDefocus节点需要的是0到1的深度,而且近处为1,远处为0(也就是“深度反转”)。因此,我在渲染前,在Arnold的Z AOV设置里勾选了“Invert”选项,这样输出的Z通道就是近处白、远处黑,方便后期。

注意:不同渲染器的Z通道定义不同。V-Ray的Z通道是线性的,但方向可能相反。在合成前,更合适用查看器检查一下黑白关系,确保近处亮、远处暗。

另外,我建议输出16-bit的EXR格式,因为Z通道需要浮点精度,8-bit的PNG会丢失深度细节,导致后期出现阶梯状断层。

第二步:Nuke里重建景深——ZDefocus核心逻辑

在Nuke中,我使用ZDefocus节点来模拟景深。这个节点的原理是:根据输入的Z通道,对像素进行不同半径的模糊——深度越接近焦点,模糊半径越小;深度越远,模糊半径越大。实际上,ZDefocus会做“分图层模糊”,然后混合,以产生平滑的过渡。

我遇到的第一个坑是:Z通道的数值范围不对。因为Maya输出的是1到5000,而Nuke期望的是0到1。我在Maya里虽然勾选了Invert,但数值还是绝对距离。所以在Nuke里,我在ZDefocus节点前加了一个Grade节点,将Z通道重新映射:用Min和Max分别设为30(近处)和80(远处),然后Invert勾选,使其变成近处1、远处0。这样ZDefocus才能正确识别焦点位置。

第二个坑是:ZDefocus的“焦点深度”(Focal Depth)参数。这个参数决定了哪个深度是清晰的。我根据实际场景,将焦点放在手表表盘上,通过调整Focal Depth的值,让手表清晰,背景虚化。但问题来了——ZDefocus的模糊效果是均匀的圆形模糊,而真实镜头的虚化是边缘柔和的,而且焦外高光会呈圆形光圈。为了更真实,我用了ZDefocus的“光圈形状”(Aperture Shape)选项,设置为“多边形”(Polygon),并调整叶片数(Blades)为8,模拟真实镜头光圈。

深度通道后期合成:一个广告项目里的数字景深革命 - 配图2
深度通道后期合成:一个广告项目里的数字景深革命

但即便这样,我还是觉得虚化太“干净”了。真实镜头会有色差(Chromatic Aberration),焦外高光边缘会有红蓝边。于是我在ZDefocus后加了Chromatic Aberration节点,微调了强度,让高光边缘出现轻微色散,效果立刻高级起来。

技巧:ZDefocus的“Size”参数控制最大模糊半径。如果背景虚化不够,可以加大Size,但要小心前景物体边缘出现光晕。通常我会用Roto把前景主体单独抠出来,放在ZDefocus之前,防止被模糊。

第三步:踩坑实录——Z通道的“断层”和“边缘发亮”

渲染第一版后,我发现背景的金属波纹边缘出现了一圈白色光晕,就像被“描边”了一样。我检查了Z通道,发现背景的深度值有阶梯状变化——因为金属波纹的几何体面数不够,深度值在面与面之间跳变,导致ZDefocus在处理时产生了不连续的模糊半径,从而出现光晕。

解决方法是:在Maya中对背景模型增加细分(Smooth),让深度过渡更平滑。另一个办法是在Nuke里对Z通道做轻微的模糊(Blur节点,强度1-2),让深度值连续化。我两个方法都用了,效果立竿见影。

另一个问题是:手表边缘因为Z通道的精度问题,出现了“边缘发亮”现象。这是因为手表和背景的深度值非常接近,ZDefocus在边缘处误判了前后关系。我通过调整ZDefocus的“Z Scale”参数(缩放Z通道的敏感度),以及用Roto遮罩手动保护手表区域,解决了这个问题。

注意:Z-Depth合成的最大敌人是“边缘发亮”。如果你在边缘看到亮边,优先检查Z通道的连续性,或者用遮罩保护主体。

第四步:超越真实——用Z通道做“数字呼吸”和“焦点切换”

既然Z通道已经出来了,我决定把它用到出色。这个镜头是旋转的,但焦点始终在手表上。为了增加电影感,我模拟了镜头呼吸效应——当焦点变化时,画面会轻微放大或缩小。这个效果在后期里用Keyframe控制Scale参数即可,不需要重渲染。另外,我利用Z通道做了后期雾效:在远处的背景上加了一层淡淡的蓝色雾,增加了空间感。

更酷的是,我们做了一个“焦点切换”的版本——镜头从背景切换到手表。这个在实拍里需要跟焦器,但在三维里,只需要在Nuke里给ZDefocus的Focal Depth参数打关键帧,从背景的深度值渐变到手表的深度值。渲染时间零增加,但视觉效果非常专业。

交付与复盘:甲方满意,但我也学到了更多

最终交付的片子,甲方非常满意,尤其是背景的虚化效果,说“就像用大光圈拍的一样”。这个项目让我再次确认了Z-Depth合成在动态镜头中的价值——它不仅仅是省时间,更提供了极大的后期灵活性。

深度通道后期合成:一个广告项目里的数字景深革命 - 配图3
深度通道后期合成:一个广告项目里的数字景深革命

当然,Z-Depth合成也有局限。比如,如果镜头有大幅度运动,Z通道的变化会非常复杂,ZDefocus的处理可能会产生闪烁或扭曲。这时可能需要分区域处理,或者考虑使用更高级的深度合成工具(如Fusion的Depth Blur)。但在这个项目中,Z-Depth合成完美地平衡了效率与质量。

最后,我总结一下这次项目的经验:

  • 在Maya中输出Z通道,务必设置正确的Near/Far范围,并勾选Invert。
  • 使用EXR格式保存,保留浮点精度。
  • 在Nuke中,用Grade节点重新映射Z通道的范围,使其匹配ZDefocus的期望。
  • 遇到边缘发亮,优先检查Z通道的连续性,用Blur或Roto解决。
  • 活用Z通道,除了景深,还能做雾效、呼吸效应、焦点切换等。

希望这篇复盘能帮到正在与景深搏斗的你。记住,渲染不是终点,合成才是王道。

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