当前位置: 首页 > cg教程 > 建筑表现教程

关于LWF——线性工作流

  • 2016-06-11 21:47:45
  • 作者/来源:FusioN/FusioN博客
  • 己被围观
  • 被点评
1、什么是LWF? LWF全称Linear Workflow,中文翻译为线性工作流。“工作流”在这里可以当作工作流程来理解。LWF就是一种通过调整图像Gamma值,来使得图像得到线性化显示的技术流

7cc7a7f2ga3c3b8761c61&690.jpg


1、什么是LWF?

 

LWF全称Linear Workflow,中文翻译为线性工作流。“工作流”在这里可以当作工作流程来理解。LWF就是一种通过调整图像Gamma值,来使得图像得到线性化显示的技术流程。而线性化的本意就是让图像得到正确的显示结果。设置LWF后会使图像明亮,这个明亮即是正确的显示结果,是线性化的结果。

 

2、为什么原来的结果不正确?为什么要用LWF?

 

教程开头的例子中提到,全局光渲染器在常规作图流程下得到的图像会比较暗(尤其是暗部)。而本来,这个图像是不应该这么暗的,不应该在我们作图调高灯光亮度时,亮处都几近曝光了场景的某些暗部还是亮不起来(即不应该明暗差距过大)。这个过暗问题,最主要的客观原因是因为显示器错误的显示了图像,使得本来不暗的图像,被显示器给显示暗了(也就是非线性化了)。所以我们要用LWF,通过调整Gamma,来让图像回到正确的线性化显示效果(即让它变亮),使得图像的明暗看起来更有真实感,更符合人眼视觉和现实中真正的光影感,而不是像原本那样的明暗差距过大。

 

3、为什么显示器会显示得过暗?什么是Gamma?为什么要设置2.2这个值?

 

为什么显示器显示出来的结果会过暗,这个问题涉及到电路电气知识,本人也不是太清楚。所以在这里简短引用下火星论坛凡子前辈的解释,希望可以大致明白一下:

 

首先,显示器的亮度变化,是因为它的输入电压发生变化。

 

而输入电压的变化函数,和显示器的亮度变化关系不成正比,无法合理对应。

 

所以导致了显示器显示失真,导致了不正确的显示结果(即暗的结果,非线性的结果)。

 

而Gamma就是表示这个失真程度的参数。值越大,失真越大,图像也就越暗。而1则意味着图像不失真,会正常显示。

 

大多数显示器的失真程度,即它的Gamma值,是2.2。所以我们在用LWF来校正图像失真时,才有了2.2这个参照数值。

 

4、LWF的设置流程怎么理解?

 

实现LWF的手段,说白了就是修改两个地方,即A+B:

 

A:修改max自身的Gamma

 

B:修改图像文件输入输出时的Gamma

 

这两个修改都在max“首选项”的“Gamma 和 LUT”选项卡中进行。但是要弄清楚:

 

A设置为2.2,并不是指修改图像文件的Gamma。而是告诉max,当前显示器的Gamma值是2.2,所以max显示图像时要按照这个前提来自我调整。当max得知显示器的Gamma是2.2时,它就让图像显示得亮些,以抵消显示器自身过暗的显示效果。A设置相当于是调整max自身全局Gamma环境的设置。

 

B设置为2.2,就是指调整图像文件自己的Gamma了(输入Gamma常对应于贴图文件调用,输出Gamma常对应于渲好图后保存。都是图像文件)。我们知道若仅设置了A,就相当于是max把自身Gamma环境给全局修改了,包括图像文件。而结果就是渲出来的图会整体过亮发白,显得不正常。这并不对。因为图像文件和显示器不一样,图像文件本身的Gamma就是正常的,是1,而不是显示器的非正常的2.2,因此不能当作和处理显示器的问题那样对待。所以要在输入输出的Gamma里设置2.2,让图片反过来显示得暗一些,来抵消仅设置A后导致的整体过亮。这样的话,最终图像就显得协调了。既让A设置发挥了作用,也借由B设置保证了图像文件不变亮,回复它本来应有的色彩效果。

 

B设置是全局设置,不能单独针对某个图像文件在输入或输出时来调整。如果个人有这个需要,可以把B设置恢复为1,然后在调用或保存图片时,单独从各自相应的对话框里设置Gamma为2.2。在调整图像输入方面时除此之外还有第3个方法,就是借助颜色校正插件。这个插件可以在鹏帆版主早先的LWF介绍贴中查询,这里就不细说了。如果使用的是max2009,max2009已经自带一种叫颜色修正的贴图类型,作用和该插件很相近,直接用它即可,就不用再单独安装插件了。至于LWF后产生的RGB值改变,或者适应改变后的效果,或者使用颜色校正插件都可以。

 

5、为什么还要在VRay的颜色贴图(Color mapping)卷展栏里设置2.2?它和max的Gamma设置有什么联系?

 

通常VRay在计算暗部角落区域的时候,因为那里出现的内容少,有效的像素少,或者说需要表现的细节少,所以VRay不会在那些地方过多的去采样和计算以节约时间。这就带来一个问题:如果仅仅通过上述max自身的Gamma设置,完成了LWF,校正了图的Gamma使之变亮,那图中那些原本偏暗的地方在被强行校正提亮后,就会因为暗部采样样本少而出现很多杂点。这就和在PS中把一个原本灰暗的图一下子调得太亮而导致暗部出现许多杂点的效果一样。要避免这个问题,来实现一个能保证质量的LWF流程,就需要在VRay的颜色贴图中,把曝光模式的Gamma设置为2.2。这样VRay就可以保证图中的暗处也有足够的采样计算了(因为VRay也知道了显示器的Gamma是2.2而自发做了调整)。它和max里上面提到A设置,意思是一样的。但因为唯一不同的是 VRay的有了暗部采样计算的过程,所以质量效果更好。

 

同时为了保证图的色彩还原真实度,和考虑到调节的便捷性,建议尽可能的只用线性曝光方式来渲染LWF图。

 

6、怎样区别对待这两处的Gamma?为什么LWF下要务必使用VRay的渲染窗口?

 

首先要说的是,max里的2.2,和VRay的2.2,如果两者都同时设置了的话,默认会得到一个错误的结果。因为这就相当于图在渲染出来后,Gamma被校正了两次,而变得过于白亮和不正常。而两者若只改其一,渲染后当然就可以得到对的效果,但仍然有问题:

 

只改max的2.2,也就是上述的A设置,会造成暗部采样不足, 导致产生很多杂点,图像质量不高;

 

只改VRay的2.2,max的Gamma全局环境没有得到调整,渲出来的材质效果和从材质编辑器里看到的效果不一样,给作图造成不便。(因为没有设置A,只设置了B,贴图会显非常暗。如果AB都不设置,则图像会受VRay的2.2影响而发白。)

 

为了能够保证质量和方便调节,我们当然是希望两者能够共存的。所以要达到合理化的LWF设置流程,最好的选择就是使用VRay的渲染窗口(也就是VR帧缓冲器/Frame buffer)。在之前的教程正文中也提到务必使用VRay的渲染窗口。因为max的全局Gamma设置正好是对这个东西不起作用的,它既可以正确支持 VRay的Gamma是2.2,又不会受到max中A设置的影响。两处地方同时设置为2.2也不会产生因二次校正后导致的图像发白的错误效果。这也就完美的解决了共存问题。但要说明的是,在VRay渲染窗口渲染完图像保存的时候,按Gamma值为1的原则保存即可。也就是说不用在max的Gamma输出设置中设置为2.2而是保持默认的1。否则还是会产生二次校正。

 


*CGahz.COM 收集整理,转载请注明来自CG爱好者网(www.cgahz.com)

分享到:

已有13条评论 发表评论