论Gamma和线性工作流

  • 本视频使用优酷提供的通用代码引入,可以支持PC和IOS设备,如果始终处于读取状态,请点击视频框右下角优酷图标回到视频原链接观看。

线性工作流程,是写实渲染的理论基础。如果不懂这个,所谓的照片级渲染是无从谈起的。

我敢说建筑学的很多同学过去都没怎么听说过这个词,确实,这个线性工作流程本来就不是建筑学该关心的事情,理论上来说,应该是三维软件帮我们料理好。

但是问题远没有那么简单,一个如此显著的问题能在计算机图形学领域潜伏40多年,直到今天还在困扰我们,一定是有不可动摇的原因的。

Alvy Ray Smith在95年说,这玩意20年前就该被解决…

 
对,就是那个计算机图形学先驱,发明Alpha通道和HSV系统的Alvy Ray Smith:

我花了大量的时间和精力查找资料,与朋友和专业人士探讨,最终梳理出一些适合在建筑学领域里科普的常识性知识。也写进了我的毕业论文。

我的微信平台的第一篇推送,其实也是关于这个知识,可以说这是我这几年一直在关注和思考的话题。

这堂讲座的内容,我先后在清华、同济、东南、天大、哈工大、华工、北建大、河工大等等高校进行过分享。

为什么要去巡讲,因为我一直感觉,这东西“不当面讲,有点讲不清楚”。

后来,借着春节期间在重庆,我还专门与重庆大学的CG艺术家戴巍面谈,之所以找到他,就是因为他也早就觉得线性工作流程非常重要,但是网络上公开的教程还是不够解渴,想要自己制作一部,我和他约定,“年后”一定要把这个视频做出来,但是无奈今年过得略忙,这一“年后”,就直线到了年底了。

不管怎么说,在今年内,我还是把这个一直以来的愿望完成了,这是昨晚戴老师的微博,我也是笑尿了:

总之,这堂讲座绝对干货,其实,在研究过线性工作流以后,更令我着迷的,是人对自然的感知特性,以及图像再现的基本逻辑。比起这种fundamental的知识所带来的启发性,渲张照片级的图简直不在话下。

但是,对于一部分人来说,这堂讲座可能会听睡着,不怪你,因为这确实不是建筑学的必备知识。另外确实需要比较好的数字图像基础知识才能100%的跟上讲座中野马般的思维。走神那简直是分分秒秒就会发生。

好,介绍了这么多,线性工作流到底是什么鬼?我就简单引入一下问题,免得大家摸不着头脑:

简单来说,不用线性工作流,你的渲染就有可能暗成狗:

打灯就可能曝成翔:

用了线性工作流,一切就都会正常:

就这么不讲理。

以前很多渲染教程遇到室内渲染发黑发暗的解决方法就是:补光。然后介绍各种奇技淫巧的补光方案,但是很不幸,他只是被这个bug给坑了,做对了流程的话,根本不用补光。如果要补光也是在做对的基础上出于艺术的需要,而不是为了给bug填坑。两者不可同日而语。

你如果在渲染中没遇到类似的问题,证明你比较幸运,你用的那款软件已经把预设参数调对了。

(举个例子:3ds max2014版+Vray 2.4版已经把这个默认参数调好了,所以不用太担心,重点是原理。而且在Vray for SketchUp里也没办法用完美的线性流程,视频里介绍的都是不得已而为之的方法。)

听完了这场讲座,真正理解了的同学也能够独立回答这样一个思考题:为什么这问题40年了直到今天还没解决。这个答案我没有直接给。

更重要的是,讲座中还涉及了32位每通道图像的后期处理流程。掌握了这个流程,你就有机会把室内的亮度搞对了。

总之,找个头脑清醒的时间段,看看这期讲座吧。准有用。

如果你想把可视化当成设计方法而不是设计成果,这招是肯定要学的。

借这个机会,感谢一下这些年来与我讨论这个问题的各位朋友。真的感谢你们。

视频高清源文件点击下载(762.9M) 密码:0cml

【注意】:32位成果转8位图的方法:PS菜单:图像>模式>8位/通道。 在弹出窗口中,“方法”下拉菜单:选择“曝光度灰度系数”,确定。

网站推广阶段,欢迎您关注网站的微信公共平台:
扫描关注“韩的日志”微信订阅号

  • 请注意,为了保证我能看到所有留言的提示,留言将通过审核后才会显示,请不必重复留言。
韩世麟

韩世麟

站长,天津大学研究生毕业,天津人
存为书签: 本文的固定链接.

80 条评论

  1. 刚补完了 谢谢韩大

  2. 老韩,其实人眼就是相机,针对gamma来说……….

  3. 为何灯被拱一下就是错的?贴图的颜色也是光的反射,贴图能被拱,灯光就不行?

  4. 为啥木纹在PS里,你调了一个0.454的GAMMA值,图像反而变暗了?0.454不是叫提亮GAMMA吗?

    • @jameslt 非常好,这个点我当时没说,是这样的一个细节:在他们做屏幕和做相机的专业圈子里,有一条不成文的规矩,就是怎么方便说怎么来。举个例子,拍照的时候,本来是1/2.2的编码gamma,但是说的时候为了方便,就把这个“分之一”省略了。所以在专业人士口中,屏幕的gamma是2.2。相机的gamma也是“2.2”(其实是2.2分之一)。这就好比我们摄影的时候,快门本来是200分之一秒的,但是老手之间交流,只会说:这个快门200,这个快门300。“分之一”就被省略了。所以也就造成了“灰度系数校正”是实际“灰度系数”的倒数。

  5. 您好,请讲解一下camera raw,我的camera raw无法打开由vray创建的hdr以及exr文件。

  6. 请问,那个地球拉近动画是怎么做的?

  7. 我发现我今天才学明白这么多年的ps!

  8. 为什么用vary渲完以后点击sRGB之后保存的图还是原来的样子

  9. 感谢韩神的无私奉献,一个月前才看完你之前写的那篇关于线性工作流的烧脑神作,受益匪浅。没想到今天就看到了视频。我一定认真拜读。

  10. 用机器猫的话说:线性工作流这个问题,要么彻底别知道,看到了也装没看见,要么研究就研究彻底。不然很容易陷入巨大的困惑之中。曾听一从业多年的灯光师同时在陷入困惑后大喊“我特么现在都不知道怎么打光了!”,想起我之前陷入爬不出来时都特么不知道怎么调色了!看到一颜色都不知道这是不是幻觉。起始想搞清楚LWF很简单——只要认清一点——我们的眼睛对世界的亮度的感应不是线性的即可。

  11. 韩神 2.0用线性工作流要不要关物理相机 或者说关不关影响大不大~感谢

  12. 韩神,这公开课听了3次 = = 听懵了,大概是这样步?
    显示器或JPG8位图记录自然的人眼中的中灰就是0.2能量,然后就把自然光能量GAMA^0.454(在有限的128个点中记录更多暗部信息),然后在JPG中就把0.2的自然能量记录成了0.5的数据,也就是JPG把0.2的自然光给提亮成0.5,记录了更多自然中的光中0.2能量后面的暗部信息(128个点)。
    然后我们看到那张被提亮了的中灰JPG位图,之所以不会以屏幕开一半灯关,关一半灯显示JPG中亮度信息的中灰色,是因为屏幕LED把那个JPG中提亮了的0.2自然光(0.5的亮度信息)给^GAMA2.2。然后在屏幕中显示中灰色就开成20%(约0.218)的灯。所以人看电脑屏幕JPG图像不会觉得突兀,暗部比较能接受的丰富的灰度信息。

    那么这张被提亮过后的JPG,被放入到VR当中,JPG的0.5的自然光能量数据亮度信息,被VR以线性对应的采样方式采样了,其实算的亮度是在屏幕后面那张被提亮了的GAMA0.454的JPG。(出图后JPG饱和度低的原因?)

    而在VR的人工光当中,衰减计算是真实的,然而在显示屏中被强行DEGAMA2.2,也就是VR的光被屏幕处理了输入的光能量乘上了GAMA2.2,所以在屏幕中显示得就暗掉了。所以在把得到的渲染图亮度乘上一个GAMA0.454,就恢复了正常了?然而此时的JPG材质,本来已经被当成了0.5能量的光,(就是被GAMA0.454提亮了的JPG),然后此时因为要提亮屏幕的亮度,整体又在被再次GAMA0.454,所以就是一个双倍的曲线是,因此饱和度极低,颜色不纯。
    因此在VR渲染之前,要把JPG给GAMA2.2(一次)降下成线性的亮度信息!
    然后在VR,材质JPG8位图才能是线性光采样,人工光也是线性光采样。尽管显示出来被屏幕DEGAMMA2.2,偏暗
    此时只要来个GAMMA0.454提亮就好了?
    这逻辑有没错 – –

  13. 老韩,最后存完HDR后期怎么做呢 改成8位图曝光又会变 不能直接存成jpeg,后期ps直接在32位里面吗

  14. 老韩,问一下那个GI的引擎的问题,是不是下面这样的?

    GI通道图 –发光贴图第一次反弹 带有自适应性,图上颜色一样的地方,就会以最小比率发出RAY ,然后与相邻的格子做平均光信息渐变。所以出来的GI通道图就会比较平滑
    如果是 –纯蒙特卡洛 就是格子就是格子,不做平均色,因此GI通道有噪点
    灯光缓存 ,无视像素图符大小,直接撒RAY采GI立面的二次反弹光信息,那出来的GI通道图是不是与纯蒙特卡洛差不多?(如果二次引擎用纯蒙特卡洛的话)

  15. 老韩 室内渲大中庭上面那块玻璃怎么处理(单面还是双面?天窗玻璃材质是正面朝相机还是反面?)? SU里面怎么都出不了直接光照LIGHT通道的阴影。。

  16. 老韩,今天看了你的视频,一直有个疑问无法解决,当材质遇到纯色时,也就是系统默认的gamma为1的RGB数值怎么方便转换为gamma为2.2的数值,图片可以由系统直接就转换了,RGB颜色值怎么办?因为一般客户提供的颜色只有没有经转换的颜色RGB值,客户看到的的颜色是没转换过的,怎么让电脑知道正确的颜色呢,当然我想了个笨办法就是把RGB值在ps做成8位jpg文件填色作为贴图使用,但是这实在是,,,,

  17. 我用3dmax的,当max的gamma设定2.2后颜色选择器已经被线性了,看到的颜色已经不对了,max里面有个影响颜色设定,当勾选时材质颜色显示被线性,不勾选,仅仅是材质输入显示没有被线性,实际材质球还是被线性。如果它不被线性就解决的我的问题,实在是找不到在哪里设置,

    • @yb918 3D max的线性工作流搞清楚了,用的是2014版的3dmax,vray2.4. 只要在3d的首选项里,勾选启用gamma/lut correction ,gamma 2.2。然后剩下两个勾可以勾也可以不勾(只是影响你在界面里看到的效果,不影响渲染数据),我的建议是勾选影响材质编辑器,不勾选影响颜色选择器。然后在vray的color mapping面板,默认参数就可以,线性曝光,亮部倍增1,暗部倍增1,gamma2.2,mode若是选择color mapping only,就保存32位图(推荐);mode若是选择color mapping and gamma,就保存8位图。其实建议两个都勾选,影响颜色选择器,影响材质编辑器。用习惯了就好

  18. 找到一个办法,参看网址,其中一个办法真是做成贴图,第二个办法还要要利用贴图,用max材质编辑器的颜色吸管吸出来正确的颜色,不晓得还有什么更好的方法了。https://mp.weixin.qq.com/s?__biz=MzIxNzE0MjE0Mg==&mid=2653175110&idx=1&sn=a8a63af2083a87f4e7cfd1c91c76c3e8&scene=0&key=b28b03434249256b5b40006b5b6430694a6657383f88b793a5f11e5d1aa53c8148e02e565af51f6921700475709a69a3&ascene=7&uin=NTIzOTMxODU1&devicetype=android-19&version=26031031&nettype=WIFI&pass_ticket=Le07l6NrXahBFhv8PRmWca8Skjyfl8uLNGodL+uz08P7ZThXM3sT2Bsu5kV7Azis

  19. 在视频中我看直接可以在ps里面调出Camera Raw ,为我我的ps不行呢?我用的是ps6 能直接用Camera Raw调出 jpg和tif格式文件。请问Adobe Camera Raw 如何打开32bit的exr文件和32bit tif文件以及hdr文件呢?谢谢!

  20. 老韩,图片经过两次gamma校正,实际上只是增加了暗部的信息却并没有改变自然中光的能量(0.2还是0.2)。也就是说实际怎么亮,屏幕上就是怎么亮,只是暗部比以前更有层次了。那为什么我们在打图的时候图片比较亮,但打出来的图就暗了?是不是因为我们在ps的时候主观上调暗了(0.5调成0.2),但在打印机上没了gamma校正,只打出0.2的能量(实际该是0.5)。所以,在我们ps调到感觉很舒服的时候,还得再给个gamma0.454然后才去打图? -。-lll

  21. 老韩,我发现vfs2.0的参数面板中已经勾选了linear workflow,这是不是意味着线性工作流已起作用,默认参数已经帮你调好了,不再需要自己在input gamma中将2.2改成4.84了?

  22. 韩神你好,看完最后在su测试那里我觉得有点蒙,我不知道3d的线性工作流和gamma应该怎样设置,按照你在视频里测试的模型自己在3D测试了一下,我测试环境是max2017 vray3.4。参数面板上enviroment里全开了,gi调到8.0,结果是都只是贴图的亮度变了,大盒子的颜色没变化(用的是紫色)1贴图的亮度跟原本的一致(首选项开了校正vray设置里没开线性工作流)2贴图非常黑(首选项开了校正vray设置里开了线性工作流)3贴图十分亮(首选项没开校正没,没开线性工作流)4贴图跟原图的一致,渲染结果和1完全一样(首选项没开校正,打开了线性工作流)。那是不是只要是渲染结果跟原图一致的设置和参数都可以使用?

    • @yepsinglee 2014版的3dmax,vray2.4. 只要在3d的首选项里,勾选启用gamma/lut correction ,gamma 2.2。然后剩下两个勾可以勾也可以不勾(只是影响你在界面里看到的效果,不影响渲染数据),我的建议是勾选影响材质编辑器,不勾选影响颜色选择器。然后在vray的color mapping面板,默认参数就可以,线性曝光,亮部倍增1,暗部倍增1,gamma2.2,mode若是选择color mapping only,就保存32位图(推荐);mode若是选择color mapping and gamma,就保存8位图。

  23. 新版vfs 3.4的话,线性工作流参数找不到了啊,是不是就不用调了?

  24. 韩神,你好!看完你的视频受益匪浅,谢谢。我有个困惑:在3dmax2016+vray3.4的绘图环境中,勾选了gamma/lut矫正后,是不是意味着我所用到的贴图已经由3d自动完成了De-gamma处理?还是说需要像视频中所说的那样,对贴图进行手动的De-gamma处理?

  25. 看完两边之后还是有点懵,但是我有一个总体上的思路,不知道是否合理?
    假如自然界中的某个场景,被我们的眼睛来获取画面信息,由于你讲到的视觉上的原理,那么相机来获取这个画面信息(8位),它需要这个gamma值来矫正过来,符合我们所看到的信息。同理,如果在软件中模拟这个场景画面,软件也相当于相机一样,通过光照计算等等,最后加一个gamma值来符合我们所看到的信息,问题恰恰是我们向软件中输入的这个色彩信息(贴图、颜色信息等等),我们再输入之前它已经被gamma处理过了,所以最明确的做法是不是就是如何向软件中输入类似于相机捕捉到的初始色彩信息呢?也就是反gamma过来呢?

    • @Zero-D 不是在于自然界某个场景需要相机校正才能符合我们看到的信息。而是相机由于自己灰阶有限(讨论前提是8位每通道),必须校正,否则记录的信息会浪费:高光信息太多,暗部信息只记下来20%。自然界的信息经过相机第一次编码gamma(对数据施加0.454gamma“提亮”,把自然界中灰色映射为0.5的灰阶数据),再经过屏幕解码gamma(对图片数据施加2.2gamma,把128灰也就是0.5灰这个数据以正确的0.218的亮度输出出来)。自然的0.2又变成屏幕上的0.2(屏幕也是自然,现实生活中的亮度)。这就是线性数据的采集和还原。只要保证采集+还原以后,数据总gamma=1,数据相对的关系没变化就好了。

    • @Zero-D 你的思路是正确的,面对一堆被“扭曲”过的8位贴图,我们需要预先把它的gamma抵消掉,把它的中灰色映射成0.2左右的反射率数值,再参与渲染计算,才是对的。目前这个过程在新版的 Vray 3.4 for su 中是自动实现的,无需担心。

  26. 韩神这篇文章确实对建筑学帮助很大,以前尽拆楼板、补光了。

    但是我有个问题,是关于室外渲染的。过去1.49版本他默认设置的伽马是1,我也没多注意渲染的也还行,但是特点就是明暗对比非常强烈,像窗即使很大也几乎黑掉。以前觉得效果还不错,但是这两年慢慢觉得有些过于浓重。看到很多更好的图,黑白灰都很明快素雅。后来发现是gamma的问题(当年试用2.0的时候不知为啥觉得特别灰,就没用)。

    那么现在有了线性的逻辑,室外是否要用线性?我看到韩神你说不必。我最近的试验也还是觉得如果要表达那种例如庭院等室外透视光影关系的话,2.2的伽马阴影还是深不下去,整个画面太灰。但是调小吧,整个画面又趋向浓重。但是我很奇怪按理说既然线性是真实的,那么为啥不用呢?想请韩神谈一谈。

    当然可以靠后期。不过我手上这个图具体的问题是,因为有很深的有顶的纵深庭院,有很大的玻璃。黑暗部分占得比重很大。整个画面还是偏浓重,我也不清楚是设计的空间现实中就是这结果还是渲染技术还是不够到位。那么现在有32bit的调法,对我这个问题就好多了,可以比较细腻地调暗部和亮部的关系。于是就碰到一个问题,我之前已经渲染、后期的差不多了,不用线性的图,怎么存32bit?linear那个勾我没打(因为贴图的原因,打了之后实际效果纹理太深),don’t affect colour那个勾我试过了,勾上再存32bit和直接不勾正常出8bit的图相比还是偏亮(我估计是要勾linear才是准的)。

    当然可能我这个问题是空间本身就是这样暗的(不过我用vray默认的阳光和参数就亮堂多,我用的是点光),但是我依然想知道一下室外庭院空间渲染你怎么看。还有如果室外不用liner,怎么存32bit。我想来想去是不是要对直接存下来的32bit图在改一个gamma?

    • @lwh0314 一点点说吧,首先从理论上来说,所有的图都要用线性的,和室内外没关系,因为这属于“对不对”的是非问题,不用线性,理论上就是绝对错误了,所以严格来说,必须使用。

      然后说实践,在1.49版本,默认没开,2.0版本,默认开了,但是8位图是对的,32位图需要额外设置一下。3.4版本,默认永远线性,而且连设置都不让你设置,无论存8位还是32位,都是自动帮你把颜色搞对。那目前来讲,我推荐3.4版本,直接渲染,直接存32。

      至于您说的希望暗一点或者亮一点,对比度什么的,完全是后期问题,就用32的原片,尽情后期即可,目的还是为了达到自己想要的感觉,渲染器是为了出一个科学的底图。

      希望您对这个答案满意。

      • @韩世麟 谢韩神。折腾了一下已经装了3.4了,确实不错。顺便问下,3.4的玻璃只能用折射做了么?会不会吃速度

        • @lwh0314 对,最好是把折射拉高,其实也不是特别影响速度。如果不需要折射率的话,可以把反射率和折射率的关联断开,把折射率调成1。

          • @韩世麟 嗯,我试了下用brdf材质做的玻璃似乎和原来的玻璃有些不同,按你说的把雾颜色、折射、折射率全调了,看着貌似还是有些不给力,关键是玻璃后头的物体用denoiser后居然模糊了,我试了n多次,两个场景,大玻璃近景。高质量也试了(大图分辨率没试)。用发光贴图做第一引擎到好了。很是奇怪,不知道你有没有遇到这个问题。然后貌似删了brfd,添加原来的反射层,没啥问题。3.4好是好,就是有一些bug和不明白的地方在赶图的时候真是很崩溃。

            我感觉可能建筑学玻璃还是用原来的方法比较好?但是强迫症百思不得奇解默认的玻璃看起来那么好为啥用起来不给力,官方宣传的那张玻璃真是酷炫啊。3.4总算是彻底克服了太暗的问题,如果材质都可以从默认的给那真是对建筑学帮助太大了。但是现在看起来还是有些bug.

    • @lwh0314 当初我说室外不用开,其实原因在于软件默认参数修改+PS后期对新手不太友好,所以我是基于一个“方便”的角度,给出了一个个人的推荐。现在3.4版本来了,这个问题可以说不存在了,对新手来说即使什么都不会,做的也是线性工作流,想不线性都不行。

  27. 老韩,现在的vfs线性工作流是不是假的,我感觉还是伽马4.84才是正确的,我测试的时候勾选线性,伽马4.84,勾选线性发现图像变暗了,这是什么情况?

  28. 韩神你好,首先特别感谢你,从大学到工作都一直关注你的博客,很多东西都是跟着你的步伐理解的,现在公司还在用vray for rhino 2.0版本的所有这篇线性工作流的文章真的帮助好多,虽然我不是公司的渲染师但是对于一般的草图探讨也是很有用的,最近给自己的电脑装了3.4,发现3.4并没有color mapping 的 setting,那是不是说明3.4默认的就是正确的2.2的gamma线性工作流呢?谢谢!

    • @qwer123456 对,3.4以后gamma校正变成了自动的,非常完美,在存8位或者32位的时候,都会自动调好。唯一要注意的是,在打开2.0时代的老模型的时候,要抹去老版本信息,这样gamma就都对了。具体使用方法请参见http://hanshilin.com/software/vray-for-su/v-ray-3-4-for-sketchup-review/

  29. 2.0版本的不能用1.49版本的那个方法吗

    • @WXQ123 嗯,2.0其实默认光衰减速度是对的,直接渲染直接保存8位图即可,然后想出32位每通道的图片的话,要在颜色映射勾选,don’t affect colors。 3.4版本以后默认线性工作流,什么都不用调。

发表评论