最近很多人问我怎样在Maya里面得到高质量的Z-Depth图像,我在这里简略的说一说。
Maya自身的Z信息没有消锯齿、没有Motion Blur,在后期合成使用时总有诸多不便。这时,需要另寻他路。
我习惯用材质来模拟所要的Z信息,无非是“近白远黑”或相反。
且看附图,简略解释如下:
“distanceBetween”节点通过“createNode distanceBetween”命令得到,用于计算两个输入点point1和point2之间的距离;
samplerInfo输出point camera信息给diatanceBetween的point1,那么distanceBetween节点的point2就可以人为设置成<<0,0,0>>——因为这时在计算取样点与摄像机之间在摄像机坐标系下的距离,而在该坐标系下,摄像机坐标为<<0,0,0>>;
通过clamp和set range节点将取样所得距离转化为在0~1之间的对应位置,继而控制ramp的颜色变化;
ramp控制surfaceShader的out color,geometry被赋予surface shader之后,不在有光影信息,只存在黑与白。
要点:
1. 所以用摄像机坐标系,是为了图方便,可以减少计算,提高工作效率,但如果坐标系经过缩放,那就不合适了,需要多转一些弯,如:将point1与point2转换到同一坐标系下计算,或者提供对应的matrix信息给distanceBetween,或者什么也不改,只是控制数值范围——这样不直观但也能达到要求......
2. 通过clamp和set range设定最近点和最远点,配合ramp的调整,可以得到合意的变化。
总结:
这样做,渲染后得到的图像就是经过消锯齿,可以带MotionBlur的Z-Depth信息。
思考:
Maya其实很灵活,关键在于要分析清楚制作的需要和目的。
图片如下: