本教程是基于VR3.0写的,不过设置都是一样的。是基于最初的gamma 2.2教程写成的,之前那个原始的太老了已经,不过一些基本的东西还是没变。
让我们回到2004年,一些牛逼的高手在VR论坛里开了一个帖子叫“线性工作流程”, 当时非常火爆,很多人都试图来模仿这种工作模式但这套流程非常复杂,不过出来的效果也是非常震撼的。
其实问题很简单,VR和3ds Max的计算方式,VR的相机对于光的反应都是线性的, 这就是说它们都是在gamma 1.0空间里运作,这当然没问题,但是3dsMax和Vray的设置是gamma 1.0,那么你看图的设备也要具备相同的设置才可以,遗憾的是,计算机不是线性的gamma 1.0,因为从没人告诉过3dsMax和Vray这个问题,所以咱们的图总是看起来有点灰,有点暗!
这里有个简单的例子:一个一面开放的室内空间,开放的一端可以引入很多室外的光线。左侧是1.0的结果,右侧是2.2的结果,可以看出,1.0的结果很暗,如果你尝试提灯光的强度度来增加室内的亮度的话,那个开放端的墙面肯定就曝光了。
而右侧的那个2.2的结果就比较明亮了,而且窗口处也没曝光,这是很多人所需要的一种效果。
还有一个基本的问题是HDRI 灯光与反射,这里也有个例子:
左侧是1.0的结果,可以看出在反射部分的对比度非常强烈,和提供光源的那张HDRI贴图(中间那个球)里的感觉不符合。
右侧是是2.2的结果,可以感觉出这个反射部分的光感和那个HDRI贴图里呈现的环境很匹配,而且光效也更自然。
用2.2来工作的第一个问题来了:很多场景设置成2.2后,颜色和贴图会突然变得很灰,没有足够的对比度,造成这个问题的原因是,你只是把场景设置成了2.2,但没有把贴图和颜色设置在2.2的环境里。贴图其实都是基于2.2的,假如你只是简单的将MAX系统设置为2.2的话,那等于那些贴图被你叠加了两次2.2,这就会使得贴图看起来很灰很亮!这就需要我们将MAX和贴图加载模式都设置为正确的数值,这样你的最后出来的颜色和贴图就能和原始贴图吻合了。下面是两种设置的对比,右侧的是2.2的设置,你需要改的地方有:
- Enable gamma/LUT correction: 这个是开启2.2模式
- Gamma: 除非特殊需求 ,一般就设置为2.2
- Materials and colors: 这里你可以选择材质编辑器和颜色选择器是否也以2.2的模式来显示,这个非常关键,你一定要选择来将这两个与2.2匹配起来!
- Bitmap files input gamma: 这里你可以指定所有加载的贴图都是2.2的,以免出现前面提到的重复叠加问题而导致贴图太灰没对比
- Bitmap files output gamma: 这里控制保存图片的数值,这个之后讲
看一看你的材质编辑器和颜色选择器,可以看到他们变亮了,所以假如你想在2.2模式下得到一个同样深红色茶壶,你就需要在新模式下的颜色选择器里重新选择那个深红色。
上面的设置是为了你能选择到正确的颜色和加载出正确的贴图,在VR的virtual frame buffer里,有个小小的按钮:sRGB,这个按钮可以给这个VFB渲染结果里添加一个gamma 2.2曲线,让你的渲染结果以正确的gamma 2.2来显示,下面是这个按钮开或关的对比,不勾选这个按钮时候,画面的颜色显示会比选中时候暗。
要如何以正确的方式来保存这个渲染结果呢?让我们先回到3dsMax里的preferences菜单里,还记得那个output gamma的设置吗? 那个设置成了2.2,这个非常关键!
由于sRGB这个按钮也只是一个预览工具,我们需要确保在保存渲染结果时候也用2.2的模式来保存,要不然的话你保存的图片还是会很暗(因为2.2的模式没有被设置进输出里)
但这只是问题的开始... 这个sRGB按钮给渲染结果赋予了一个2.2的曲线,但我们是不是也能把这个曲线一起带进我们所保存的图片里呢?答案不不能!,下面是一个在output = 2.2设置下保存的图片和直接截屏出来的图片的对比,还是有点点的差别的!保存出来的图片会稍微亮点点,证明了sRGB所赋予的那个曲线和3dsMax系统里的gamma 2.2曲线还是不一样的
在线性工作流里,你还能将结果保存为full float 32比特的图片,比如EXR. 真正的线性工作流里你是靠系统本身来还原这些图片的颜色,也就意味着你不靠gamma或sRGB曲线。当你保存EXR时,那个output gamma也是不起作用的,下面也是截屏和保存出来的EXR对比结果,可以看到两者完全一致!
线性工作流对于要在后期里做处理很有用,那假如不以这种full float格式来保存图片会如何?在刚才那种保存方式里,我们可以得到一个完全和渲染结果一样的图片,要做到这一点,我们要确保在color mapping卷展栏里,在 'expert' 模式下看所有的参数,保证这里的gamma是2.2。
那么假如这个设置不是这样的话会如何呢?把它设置回默认值 'color mapping only'. 这意味着在渲染结果里没有那个gamma曲线了,像素值也不会因此而改变,在之前的例子里,我们已经看到可以通过最后的一个sRGB 按钮来获得正确的结果。
但假如我们不用2.2这个设置呢?我们再把模式切换成'none'来看看,你可能最后得到的图片在明度上差不多,不过会有些躁点,全局光的效果也会差些。这其中的原因是当VR全局光在计算比较暗的区域时候,他会提前结束计算,这样本来需要去除躁波的地方就没被计算出来,所以画面会比较暗,杂点也较多,它能显示为正常的亮度纯碎是因为那个sRGB按钮,所以当你选择 'none' 这个模式的时候,VR只在非常暗的区域采样,而你选择'color mapping only'模式的时候,VR在亮的区域采样,但只是采样,gamma并没有实际作用到那些像素上。
所以只剩下'color mapping and gamma' 这个模式同时会兼顾明暗这两种区域,既能在亮的区域进行采样,同时也将gamma曲线作用到画面上,但之前我们提过,因为gamma作用到画面上了,你需要关闭sRGB这个按钮来避免叠加2.2效果。
但因为现在gamma曲线已经作用到画面上了,我们就得回到输出设置里把 gamma 设置回1.0, 否则gamma曲线在你保存图片时候又会叠加一次了。
这里是假如你要想gamma作用到渲染画面上时候的设置:
这里还有一组对比,可以感觉到作用了gamma的图还是稍微亮了一点的。
如今线性gamma2.2工作流已经是大家的默认工作方式了,几乎所有的好作品都是这个模式下完成的,假如你刚使用VR,你可能不会察觉到里面的区别。
比较专业的做法是保存EXR格式的图片,这样你对颜色的控制是最最完全的
另一种做法就是将gamma 2.2作用到颜色和贴图上,而关闭sRGB按钮,这样保存出的图片不会出现gamma叠加的错误。
在我看来,没有对错,只是看你喜欢哪一种。
下面是两种方式的各自设置:
有个问题我们没涉及到,那就是假如你需要用一个LOGO里的指定颜色的话怎么办。比如说你的茶壶颜色和法拉利红要一致,你肯定会从PS里吸取这个颜色的RGB: 229,28,36. 然后回到MAX里把这个茶壶的颜色改为这个值,但你会发现,颜色根本不对,max里出现的那个红色成了粉红色!
这个是因为MAX里选的这个颜色只有在配合了gamma 2.2的曲线渲染后才会正确的显示出来,所以你不能只是简单把PSli那个数值复制到MAX里去。
有个做法:取LOGO的一部分作为一个纯色的纹理贴图而不是直接输入RGB,这样你就可以得到正确的颜色渲染了:
或者呢,把那个贴图放到一个空的材质球框里,双击这个贴图,然后吸取里面的颜色值,再作用到茶壶的颜色值上,对比一下前后两个RGB数值,是不一样的!
评论(21)