【转】关于LWF——线性工作流
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——线性工作流的更多相关文章
- Gamma校正与线性工作流
1 Gamma校正是什么?8位亮度值x(0-1)经过x^0.45的一个提亮过程. 2 为什么需要Gamma校正 人的眼睛是以非线性方式感知亮度,在自然界中,人感觉到的一半亮度其实只有全部能量的0.2, ...
- 聊聊Unity的Gamma校正以及线性工作流
0x00 前言的前言 这篇小文其实是在清明节前后起的头,不过后来一度搁笔.一直到这周末才又想起来起的这个头还没有写完,所以还是直接用一个月前的开头,再将过程和结尾补齐. 0x01 前言 结束了在南方一 ...
- 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效
原文:西川善司 http://www.4gamer.net/games/075/G007535/20160726064/ 最终幻想15的演讲会场.相当大,听众非常多. 在本次计算机图形和 ...
- 合金装备V 幻痛 制作技术特辑
合金装备V:幻痛 制作特辑 资料原文出自日版CGWORLD2015年10月号 在[合金装备4(Metal Gear Solid IV)]7年后,序章作品[合金装备5 :原爆点 (Metal Gea ...
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- 数字色彩的艺术 | The Art Of Digital Color(修订)
翻译一篇来自2011年的文章,原链地址:https://www.fxguide.com/featured/the-art-of-digital-color/ 在这个时期,DPX日渐式微,ACES方兴未 ...
- 闲话ACES(修订)
最近身边的人见面就聊ACES,ACES俨然已经是行业热点了. ACES的确更高效的解决了色彩一致性的问题,这是符合历史进程的(+1s),无疑值得肯定.但由于色彩管理意识不强,关于ACES的认识就存在着 ...
- 容器技术与DevOps
容器技术的使用支撑了目前 DevOps 三大主要实践:工作流.及时反馈.持续学习. 有人说容器技术与 DevOps 二者在发展的过程中是互相促进的关系.得益于 DevOps 设计理念的流行,容器生态系 ...
- cinder create volume的流程(1)
前提:代码的跟踪,使用的是ocata版本 零.执行cinder create 命令,创建数据卷,打开debug开关 [root@osnode241001 ~]# cinder --debug crea ...
随机推荐
- Poisson Distribution——泊松分布
老师留个小作业,用EXCEL做不同lambda(np)的泊松分布图,这里分别用EXCEL,Python,MATLAB和R简单画一下. 1. EXCEL 运用EXCEL统计学公式,POISSON,算出各 ...
- iOS类实现里面怎么用属性
属性(properity)是一个很好用的东西,简单而直接.Objective-C还创建了一个点语法来帮助大家使用.根据以前C++的习惯,类外访问实例变量时,最好通过getter/setter方法,也就 ...
- 细说Javascript之null、undefined和NaN
首先简单介绍一下Javascript中的数据类型,Javascript中的数据类型有undefined,boolen,number,string和object等5种,前4种是原始类型,第5种是引用类型 ...
- Python 基礎 - 認識模塊
什麼是模塊?簡單說就是別人寫好了一堆功能,封裝在一起. 模塊有分二種,一個是之前有提到的 標準庫,就是不需要透過額外的安裝就有的模塊 ,另一個叫 第三方庫,需要另外安裝才能使用的模塊 #!/usr/b ...
- C++ 中的形参与返回值
函数调用时,形参对象和返回对象均采用引用方式进行(临时对象作为中介),当一个对象作为参数(非引用)被函数调用时,该对象会通过复制构造函数获得一个临时对象,该临时对象以引用方式传递给函数,简言之,函数会 ...
- BlackJack Strategy
GAME SPEC: 2-deck, 104 cards total. Bellagio has 2-deck and 6-deck games. based on hard 17, dealer h ...
- iOS AudioQueue机制的延迟问题探究
关键字:VOIP,AudioUnit,AudioQueue,RemoteIO问题描述VOIP通话,iOS底层音频方式采用AudioUnit机制,本来也挺好,但是会有遇到CS域来电时RemoteIO挂死 ...
- 编译llvm+clang
第一步,下载llvm代码: git clone git@github.com:llvm-mirror/llvm.git 第二步,进入llvm/tools目录并下载clang代码 cd llvm/too ...
- java Scanner
public static void main(String[] args) throws IOException { System.out.print("Enter a number:&q ...
- 12-factor
简介 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS).12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费 ...