Arnold/Mental Ray线性色彩空间工作流程 

2012-11-07 16:15 发布

4878 2 0
     Arnold渲染器安装教程:http://blog.sina.com.cn/s/blog_760e11a901015e1k.html
    Arnold的线性工作流在Maya中应用起来非常顺手,不过默认情况下Arnold的线性工作流参数设置会让你得到不习惯的结果,以下是本人测试ok的LWF设置方法:
注:本文所提到的mentalray linear workflow,特指以http://www.djx.com.au/blog/2010/03/07/maya-linear-workflow-in-two-steps/ 为标杆的linear workflow,切记。

方法一: 下图1


图1


    方法一使用到了Maya RenderView的gamma预览校正,优点是渲染完毕后可以随时更改渲染窗口的色彩空间。缺点后面再提。
    注意Arnold渲染设置中的Gamma Correction选项,只有Textures采用了2.2的值,其他均是1。具体解释后面再说。

方法二:下图2




图2

    方法二保持Maya的defaultViewColorManager为默认状态,改为使用Arnold渲染器自带的显示gamma校正。优点是显示预览效果无“色阶效果”。

方法一、二的窗口渲染预览效果对比


注:无论是哪种方式,渲染出的图像文件都是一样的,影响的只是窗口预览而已。

defaultViewColorManager在哪儿?见下图4:




图4




关于Arnold渲染设置中的Gamma Correction:
Display Driver gamma:对窗口预览渲染的图像进行gamma校正,不影响最终结果的输出。
Lights:对灯光的颜色进行反向Gamma校正。
Shaders:对材质球的颜色进行反向Gamma校正。
Texture:对材质贴图的颜色进行反向Gamma校正(仅校正8bit和16bit整形数据图像,非常人性化)。
    本人推荐的线性工作流是将Lights和Shaders的Gamma校正都设置为1,也就是不校正,而仅将Texture的Gamma校正设置为2.2,Display Driver gamma设置为2.2。而官方atom_user_guide里介绍的线性工作流为全2.2,以下文字摘抄自arnold help doc:
----------------------------------------------------------------------
How do I work in "Linear" colorspace with Arnold?
Set texture_gamma, light_gamma and shader_gamma to the value of the gamma you want to correct(usually 2.2).
----------------------------------------------------------------------
为什么?哪个更好?
    我参照了Mentalray linear workflow的结果作为标杆,在Arnold里渲染测试所得到的结论如此。见下图5:




图5

图5注:
1、Maya标准灯光亮度1=arnold灯光亮度3.1左右,也就是说,在Mentalray中intensity为1的平行光所打出来的场景亮度,等于arnold中intensity为3.1的平行光所打出来的场景亮度。本图中Mentalray的灯光强度为1,Arnold为3.1。
2、场景统一使用lambert材质和Maya平行光,关闭灯光衰减。
    图5中可以很清楚的看到哪个效果更接近我们所熟知的linear workflow(见本文开头)。这也是为什么我不用全2.2的原因。
    并不是说Arnold默认的全2.2所实现的LWF就是错了,就是不好的,恰恰相反,全2.2的设置是最严谨的LWF(见http://www.cgmax.org/free_tuts/view/78c1936f210383804db6ff325737af41),只是全2.2的灯光和shader调节“感觉”和我们通常所习惯的maya调节“感觉”会不太一样,和本文开头所假定的mentalray linear workflow标杆所得到的结果也不一样。
    无所谓对错,用哪种要看团队习惯、项目情况等等。
    因此,如果你打算全面转Arnold去处理lighting、shading和rendering的话,那全2.2是最适合的。如果希望从mentalray逐渐过渡过来,那可以采用本人推荐的Arnold LWF的设置。

哪些贴图不应该被校正?
    Arnold的textures 2.2的全局gamma校正影响的是所有场景贴图的gamma校正,但其实有些贴图是无需gamma校正的,例如bump、法线、置换、透明和高光范围贴图(反射范围贴图,蒙版贴图等等),如图6(图片来自于digital tutors的关于LWF的教程):

图6

    针对以上无需校正的贴图,由于Arnold的textures 2.2(gamma 0.454)是全局强制校正无法避免,因此我们可以在以上无需校正的贴图上挂个gamma节点并设置gamma为2.2进行反向校正,举例如图7:


图7



写在最后
    线性工作流程能够让我们以基于物理的方式去打光,在用上灯光衰减的时候,渲染效果很容易就能做到真实。一年前我写过关于Mentalray  LWF的讨论文章,实现起来还都不是那么方便。
    如今Arnold很方便地就可以以线性工作流程去处理所有的渲染工作,Texture的gamma调整只需要动一个参数就可以,甚至还能自动识别贴图是普通贴图还是hdr,如果是hdr则不进行多余的校正。
    反观Mentalray则没有这么方便。如果使用Arnold的话,真心没必要再回到原始的错误打灯习惯上去了!Let`s go with linear workflow!

补充(同样重要)
   写了n久的文字最后因为有了新的发现,有些内容可能得要重新讲述一下。
     Arnold的渲染器面板的Gamma Correction选项卡下,Lights、Shaders的gamma设置为2.2,相当于给灯光(颜色)、材质球(颜色)上加了一个gammaCorrect节点,这个gammaCorrect节点的Value是你想设置的灯光或材质球的颜色,Gamma值等于1/2.2也就是0.454,如图8

图8
    按照Maya2013官方帮助:点击打开链接以及点击打开链接中所提到的,Mentalray中最正确的LWF不仅材质贴图要进行gamma校正,灯光颜色和shader颜色也要进行gamma校正。

可是这样的设置真的对吗?
如果说考虑到数据的准确性,我认为不对。
怎么说?
且看下文这个数据准确性测试:
我的测试是给一个球,赋予surfaceShader,然后把surfaceShader的Out Color设置为R:0.5,G:0,B:0,也就是50%的纯红色。场景中无灯光,无其他物体。
正常渲染我们所期待的结果就是黑背景下的一个50%红的球形,除此别无其他。
于是我把Arnold渲染面板下Gamma Correction选项卡下的Shaders参数分别设置为1和2.2,渲染之后进后期软件查看颜色数据,如下图9



图9




    如图可见,只有在shaders的gamma校正设置为1,也就是不校正shader的时候,渲染出的图片中的50%红色,才是三维软件中50%的红色,而校正过的shader,渲染输出图片后0.5的红色变成了0.21765。
  灯光颜色也是一样的情况,我就不附图了。
    这就是我所说的数据的准确性,因此,我推荐的线性工作流程,在Mentalray中和在Arnold中是一样的,就是只调整贴图的gamma校正,不调整灯光和shader的gamma校正。
  因此,考虑到数据的准确性我推荐的Arnold LWF设置为图10的设置:



图10




    Mentalray中的LWF,简单轻松一点的,可以按照点击打开链接中进行操作,但记住链接最后的“Color swatches are not color managed”这一段,不要跟着操作。
也许全2.2的设置,在颜色上看起来会更准确一些?
但究竟是更注重“数据的准确性”还是“看起来的准确性”呢?
不管怎么说,个人认为数据严谨性追查到这个程度已经足够了,两者的差异已经可以通过工作习惯以及艺术感觉去抹消。





B Color Smilies

全部评论2

你可能喜欢

Arnold/Mental Ray线性色彩空间工作流程 
联系
我们
快速回复 返回顶部 返回列表