详解在后期软件中制作景深效果–进阶篇(图文版)直线网www.linecg.com大家久等了,继上一次基础的在后期软件中制作景深效果的教程发出以后,受到大家的持续关注。戴老师在工作之余努力抽出时间继续为大家带来上一篇教程的续集,进阶篇。在这一次的教程中呢,首先我们要梳理一下上次教程的大致内容,然后着重分析透明物体的景深制作方法。此次的教程适合有一定基础和制作经验的同学,或者已经学习了上一次教程内容的朋友来观看。当然个人能力有限,难免有偏颇之处,望指正。1.手动创建景深材质的方法在基础篇中,我们通过渲染层的预制来快速制作景深材质。那么如果我想要自己手动链接材质的话,该怎么去做呢?手动创建的结果是跟使用层预制是一样的,只不过你可能要稍微理解一下节点的原理与相互的连接方式,这样你可以更加深刻地理解到我们Z通道的原理。我们要使用三个节点,分别是samplerInfo、setRange和multiplyDivide。其中,samplerInfo是用来计算场景中的各种距离法线角度等信息用的,手动连接菲涅尔节点的时候时常会用到,大家不会陌生。setRange节点则是一个映射节点,将原先的绿色变成现在的蓝色,把原先的红色变成现在的黄色。multiplyDivide就是乘除节点,做一些简单的乘除运算用的。我们将samplerInfo节点的pointCameraZ连接到乘除节点的input1X,将乘除节点的input2X设置为-1,运算方式为multiply(乘)。pointCameraZ这个参数会记录场景中物体上的点到相机的距离,但是这个距离测出来是负值,所以我们需要乘除节点,将这个值乘以-1,变成正值来使用。再将乘除节点的outPutX连接到setRange节点的valueX。然后setRange节点的oldMin、oldMax,Min和Max这几个参数,分别代表原来的最小值和最大值,以及将要映射成为的最小值和最大值。如果你使用层预制去做景深材质,会默认将samplerInfo节点的cameraNearClipPlane和cameraFarClipPlane分别连接到oldMin和oldMax,而且这两个数值一般是0.1和10000。上一次教程已经分析过了,这个参数在很多时候是非常不合适的。所以我们手动连节点的时候,完全不需要去连这个地方,这些参数,全部由我们自己手动控制。使用之前提过的measuretool里的measuredistancetool来测出场景的大小。设置合理的参数。2.带alpha通道的透明物体制作景深通道的方法对于一些带透明通道的物体,如果我们直接使用上述方法直接渲染的话,本来该是透明的物体会被渲染成实心的,不是我们想要的结果。(想要的带透明通道的效果)(实际经常渲染出来实心的效果)解决这个问题的方法是,在手动连接好zdepth材质以后,将我们的alpha通道连入材质的透明。但是如果你使用surfaceshader的话,会发现得到非常奇怪的结果。原因是,surfaceshader的outcolor计算方法像是incandescence属性,是在所有的结果计算完毕以后再加上outcolor的数值。所以,只要你的outcolor不为0的时候,带透明的surfaceshader计算结果都不是我们预期的结果。那么我们要怎么解决这个问题呢?我们会把一个lambert材质做成surfaceshader的效果。具体的做法是将lambert材质的diffuse调为0,ambientcolor颜色调到纯白。这个时候,我们的lambert材质就完全不会受到灯光的影响,看起来跟surfaceshader完全一样。这个时候,我们将连接好的zdepth节点连到我们自己做好的lambert材质的color里面,再把我们想要的透明信息输入到transparency属性里面,就可以渲染出我们期望的效果了。使用32位图片流程的重要性我将一张渲染好的结果,分别保存为exr文件(虽说是16位,但是具有32位图片的性质),以及png文件(8位图片)。对他们使用floutoffocus进行同样程度的模糊。把合成切换到32bpc,把系统设置改到sRGB色彩空间,勾选linearizeworkingspace进入线性工作空间。使整个项目进入线性工作流,这样可以最大程度发挥32位图片的功能。这个时候你可以观察到,虽然是同样内容的图片,但是在进行了同等程度的模糊以后,得到的结果却是不同的:(8位图片模糊以后的效果)(32位图片模糊以后的效果)可以看出来,主要的区别在于8位图片模糊以后,高光没有我们32位图片那么亮。主要的原因是,8位图片会把我们的亮度范...