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。否则还是会产生二次校正。

【转】http://blog.sina.com.cn/s/blog_7cc7a7f20100rddk.html

【转】关于LWF——线性工作流的更多相关文章

  1. Gamma校正与线性工作流

    1 Gamma校正是什么?8位亮度值x(0-1)经过x^0.45的一个提亮过程. 2 为什么需要Gamma校正 人的眼睛是以非线性方式感知亮度,在自然界中,人感觉到的一半亮度其实只有全部能量的0.2, ...

  2. 聊聊Unity的Gamma校正以及线性工作流

    0x00 前言的前言 这篇小文其实是在清明节前后起的头,不过后来一度搁笔.一直到这周末才又想起来起的这个头还没有写完,所以还是直接用一个月前的开头,再将过程和结尾补齐. 0x01 前言 结束了在南方一 ...

  3. 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效

    原文:西川善司 http://www.4gamer.net/games/075/G007535/20160726064/   最终幻想15的演讲会场.相当大,听众非常多.      在本次计算机图形和 ...

  4. 合金装备V 幻痛 制作技术特辑

    合金装备V:幻痛 制作特辑 资料原文出自日版CGWORLD2015年10月号   在[合金装备4(Metal Gear Solid IV)]7年后,序章作品[合金装备5 :原爆点 (Metal Gea ...

  5. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...

  6. 数字色彩的艺术 | The Art Of Digital Color(修订)

    翻译一篇来自2011年的文章,原链地址:https://www.fxguide.com/featured/the-art-of-digital-color/ 在这个时期,DPX日渐式微,ACES方兴未 ...

  7. 闲话ACES(修订)

    最近身边的人见面就聊ACES,ACES俨然已经是行业热点了. ACES的确更高效的解决了色彩一致性的问题,这是符合历史进程的(+1s),无疑值得肯定.但由于色彩管理意识不强,关于ACES的认识就存在着 ...

  8. 容器技术与DevOps

    容器技术的使用支撑了目前 DevOps 三大主要实践:工作流.及时反馈.持续学习. 有人说容器技术与 DevOps 二者在发展的过程中是互相促进的关系.得益于 DevOps 设计理念的流行,容器生态系 ...

  9. cinder create volume的流程(1)

    前提:代码的跟踪,使用的是ocata版本 零.执行cinder create 命令,创建数据卷,打开debug开关 [root@osnode241001 ~]# cinder --debug crea ...

随机推荐

  1. JavaScript基础--面向对象三大特性(八):继承封装多态

    一.构造函数基本用法:function 类名(参数列表){ 属性=参数值} function Person(name,age){ this.name = name; this.age = age; } ...

  2. JS form表单图片上传

    // 点击file 类型的input 触发的方法 function changesProvider(){ // fileProvider -> input中的name属性值 var f = do ...

  3. js中的offsetWidth岁的BUG

    ---恢复内容开始--- 在js使用offsetWidth来操作控件的运动是会遇到: var oDiv = document.getElementById('div1') oDiv.style.wid ...

  4. 金浪网关ESR-6400G 告警解决办法

    防火墙中提示为每秒新建连接数大于设定范围,自动断开改IP两分钟 解决办法:更换MAC地址与IP地址 下图是防火墙设置

  5. D - 蜘蛛牌

    Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  6. sqlite3使用(一)

    最近工作接触到sqlite3了,于是用博客记录下,当然只是浅用哈! 参考资料:http://www.runoob.com/sqlite/sqlite-tutorial.html 概念: SQLite ...

  7. 解决CentOS6.4 Docker "Couldn't connect to Docker daemon ..." 问题

    OS: CentOS6.4 #uname -r 2.6.32-504.1.3.el6.x86_64 安装完毕fig,并完成相应配置时执行如下命令出错(fig安装参见:http://www.fig.sh ...

  8. find 命令的参数详解

    使用name选项 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用. 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来.不管当前路径是什么,如果想要在自 ...

  9. find查找命令的各种使用方法

    find是文件查找工具,实时查找,速度慢,精确匹配 find命令基本使用格式 find [options] [查找路径] [查找条件] [处理动作] 查找路径:默认为当前目录 查找条件:默认为查找指定 ...

  10. 《C与指针》第二章练习

    本章问题 1.Comments in C do not nest(嵌套).What would be the result of "commenting out" the code ...