签到

05月21日
尚未签到

共有回帖数 0

    刘云

    等级:
    • 荣誉:
    VRay算出来的效果图

    上图左是用不正确的Gamma算出来的效果图,右图是在正确的Gamma环境调出的结果. VRay在预设的状况很容易算出艷丽饱和的色调 这样的色调跟mental ray的细緻的清色调有很大的差别. 其实色调感的关键是gamma, 反而不是渲染器本身.伽玛(Gamma)是旧时代的產物 由於当时CRT萤幕输入一单位电压并不会產生等量的亮度(非线性) 所以為了正确显示画面 就刻意產生一个曲线关係(输入与输入) 让最终输出的影像為线性影像. 即使是现代 能够製造出线性反应的萤幕(例如液晶) 这种现象仍然深深的影响影像处理 不管是后至合成调色 或是3D算图渲染.过去因為数位相机拍摄的影像因為一定会放在萤幕上观看 而数位相机发展的年代 当时仍然是CRT 所以数位相机会自动在照片中内嵌Gamma的资讯 让照片能正常地显示在CRT萤幕. 然而到现代这反而成為一个大问题 因為所有渲染引擎VRay, mental ray, Finalrender, Maxwell,..都是以线性环境来计算物体与光的反应 所以如果输入一个带有Gamma资讯的贴图 会造成输出影像的错误(误差) 甚至產生某种色彩调性(比方说VRay似乎比mental ray更艳丽)的误解.

    mental ray算出来的效果图这裡翻译了几篇不同来源的文章, 可以把趁机会把观念搞懂 因為线性工作流程(linear workflow)是未来的趋势. 当浮点运算(16或32bit)的后製剪辑软体变成主流时 每个专业领域的人每天都会与LDR, HDR, Gamma这些东西搏斗.

    这是Autodesk 3ds max 2010 Help裡面的说明图 这个流程几乎把所有观念都讲到了, 关键在於在你餵给算图器(renderer)图档之前 一定要把图档改為线性资料 这时图档就能够在算图器这个黑盒子中以正确的数学式计算结果 最后在输出的时候即使结果是正确的 你没有调整到跟萤幕相对的gamma值 那也会看起来是错的影像!---以下文章翻译自MY MENTAL RAY网站---

    标题: Gamma伽玛校正(Gamma correction)是一个经常被误解的观念。简单来说,伽玛描述了相机或萤幕的非线性反应的现象。当一个相机(模拟或数字)接收到两倍的光源时,相机并不会把这个资料存成两倍的RGB数值。有很多原因為什麼相机的记录系统会有这种记录方式----这种现象称為伽玛。其中一个原因是显示器感光本身的问题,例如底片具有非线性的感光曲线,另外CRT萤幕也有同样问题:像素的亮度跟输入的电压强度并不是呈现线性关係。另外一个原因,因為人眼对於黑暗中的细节比明亮中的细节还要更敏感(人眼的感光曲线其实是对数曲线,称為Weber-Fechner定律)所以人眼视觉是以非线性的方式记录讯号的。而现代液晶显示器(TFT)本身虽然没有先天上的伽玛问题, 但是為了要迎合传统的工作流程 TFT萤幕会刻意模拟出伽玛的效果。建议读者也可以读读这篇关於线性色彩空间 你就会知道位何在处理HDRI资料时伽玛校正的重要性。如果你仍然不明白正确处理伽玛是很重要的,请继续往下读。伽玛的基本观念(Gamma 101)所有的萤幕都有非线性的输出输入反应。这是故意的.
    大多数的2D软体都会以线性的顏色模型来处理,所以它假定,255数值的亮度是128数值的两倍。但由於显示器对於讯号的输出输入是非线性的,所以產生的亮度会是不正确的。事实上,大多数萤幕(gamma=2.2),如果你想要显示出255数值亮度的50%亮度的话 那你就必须要输入(0.5 ^(1/2.2))* 255 = 186的数值。如果你不考虑gamma的问题 输入128数值 就只会產生大约(128/255)^ 2.2 = 22%的亮度。
    数位相机基本上具有线性的输出入效果,但因為通常我们会在电脑萤幕上面看拍出来的照片,所以数位相机会故意在照片裡面嵌入gamma。 (所以。JPG格式是带有gamma的,但是RAW的格式是即线性资料,当你把RAW档转成JPG格式时就会產生非线性的照片了)
    因此,如果你用2D软体去开你照片拍出的jpg图档时,您必须要把gamma补偿回来(去gamma)。
    如果你的图片是在2D软体產生的(基本上这张图是线性的),当你把这张照片显示在带伽玛的萤幕 你也要做gamma补偿。更多关於伽玛Gamma不是bug,它是一个功能,因為人的眼睛对光线的亮度具有非线性的感光反应。如果你每个顏色只有8 bit来记录顏色资料,很重要地利用这8 bit正确地重现人眼的感光效果很重要 它必须要是非线性的编码方式。即使是新一点的萤幕仍然有伽玛:同常显卡会用8位元来处理每种顏色避免色带问题,这8位元必须每个强度看起来间距是等距的。萤幕的厂商有能力製造线性反应曲线的萤幕,但如果你用8位元来显示图片,效果会很糟。
    现今大多数电脑萤幕都以sRGB的标準来显示,也就是伽马2.2。
    大多数数位相机也以sRGB纪录相片。如果是扫描进来的图或是合成图像就不会带有伽马2.2。
    几乎所有的浮点纪录HDR资料是线性的,即与伽玛為1.0。
    对於图片而言,“伽马”代表了强度是如何被记录的。换句话说:图档的gamma是為了要让图片在萤幕上能正确地显示出来。
    有些图片会带有gamma的标籤,但这是不可靠的,因為很多绘图软体会忽略这个标籤。因此,要正确知道图档的gamma数值并不容易。
    如果您的萤幕有2.2的伽玛而显示的图片看起来有很正常,那该图片可能本身就带有伽玛2.2。
    3D算图引擎会假定光线是以线性的模式来记录。所以,你丢给算图引擎任何不是线性纪录的图档(带有gamma),严格说起来这个图档呈现出的效果是错误的(儘管它可能仍然好看)。
    请注意,NVIDIA显卡驱动程式把gamma复杂性隐藏起来,当你在NVIDIA控制面板中看到:“1.0”,其实就代表是伽玛2.2。因此,“NVIDIA公司的γ= 1.0”,其实是标準的sRGB伽玛2.2什麼时候忽略gamma问题时会產生恐怖的错误基本上当你要去编辑像素混合时就会有差。例如:反锯齿,特别是在做wireframe渲染或是渲染有高对比的影像
    缩小图片。所以,高对比度的影像,会產生更明显的错误
    半透明物体Gamma in 3ds Max
    在Preferences选单中可以控制伽玛。基本上有叁个伽玛值可以调:显示描述了您显示器的  gamma 通常,这个会设定成2.2。
    当读取贴图时自动载入Gamma。这个功能能把图片线性化(译注:去gamma)。通常,这个有设定為2.2。 注意:如果您打开一张图档,这张图档嵌入伽玛资讯,3ds Max会套用固定的gamma数值,而不是用你图档的gamma数值!当然你可以改变这个设定 当你开啟图档的时候。
    输出伽马会处理当你储存图档时。这数值应该是1.0,如果你要储存线性浮点图档格式。如果你只是希望这张图档再萤幕显示,那就用2.2吧

    当您打开一张bitmap图档 而这张图档内嵌gamma,当你开啟图档时 你可以选择是要套用通用gamma数值 还是要读取图档的gamma。有一点很重要的是 bump 或 displacement贴图你gamma一定要设定為1.0 因為这些是线性资料!请注意,一些旧的3ds Max算法已调整為“好看”不伽玛校正,并因此将看起来很有趣,如果你正确的伽玛。render farm会遇到的伽玛问题当你的render slaves(算图奴工)不认识你送出的max场景档裡面的gamma资料时 算图就会出现问题 所以 你可以在每台算图奴工中设定respect the gamma state 这样当读到max场景档时就会自动载入gamma。
    在3ds Max 2009当中使用分散式算图Distributed Bucket Rendering (DBR)会有某个bug, 他会强制载入固定的nput Gamma. 这是因為分散式算图会自动啟动mr Map Manager 它会忽略"per bitmap" gamma的设定, 所以 当你在场景中有使用HDR档案 HDR会受到gamma=2.2影响 所以最后会產生太暗的影像 目前解决的办法是将global input gamma设為1.0 然后使用mr's "Utility Gamma/Gain" shader把贴图去gamma.伽玛常被误解的观念错误观念: 我已经校正萤幕了-所以我不需要管gamma
    错。当你校正完萤幕,通常代表你校準到标準的sRGB曲线,通常会是伽玛2.2。当你的萤幕做过校正,这表示你的所有图档都必须要做伽玛2.2的补偿错误观念: 我的数位相机会记录“线性”的照片
    有可能 你如果是用RAW档来存档的话 它是线性格式没错。但当你把RAW档转成JPG格式时就会自动套用gamma,通常这个数值是2.2---以下文章翻译自MY MENTAL RAY网站---
    作者是: Zap Anderson (mental ray作者之一)

    标题: 為何算图整个都过曝?答案是:在你设定正确的色彩空间之前 算出来的图很容易过曝你之前设定过的场景都是错的.
    你之前算过的图都是错的.
    你以前输入的(材质 灯光)都是错的.几年前,所有的材质shader都是用错误的色彩空间在做计算。常见的问题包括,当使用灯光衰减 接近灯光的地方或过亮(因此有任会避免是用灯光衰减)在高光的边界的地方出现丑陋的过亮问题,就好像2 +2 = 10的效果)由於这一点,很多人会用某些秘技来解决此问题。方法是把高光与diffuse做单纯的add混色 (像photoshop那样),或只要diffuse强度 。所有这些技巧是错的,但最后的效果看啟示真实的,即使这时候的gamma=1。可悲的是,很多人就是因為这样反而看惯了不正确的gamma算出来的效果。请看这两张CG图(一个是用Mentalray算的 另外一个是用finalrender算的)。Mentalray的效果是把tonemapper的作用法挥到极致(把过亮的部位去饱和度 增加视觉美感),而finalrender算出来的是难看的gamma=1结果。你可能会认為finalrender的效果才是正确的 但事实并非如此。你可以看到finalrender把反射算的太亮 產生不真实的感觉。现在的问题是,当您转换到正确的色彩空间(finalrender或Mentalray),你输入的图档是错的 出来的结果当然也是错的。请看这篇关於XSI 解释的很清楚重点是,当你在最后套用伽玛校正,这就表示你接下来做的每件事也要考虑到伽玛。顏色不会因為某些错误而看起来过亮。顏色之所以会看起来过量是因為你把整个环境弄的过亮....或者因為你将gamma=1的顏色显示在gamma 2.2的萤幕所以结果反而让顏色不会过亮!例如 你看到所有未校正的顏色都是错的 。他不会是最后会显示的顏色。贴图也有一样的问题,如果你有一张gamma 1.0的贴图透过gamma 2.2的萤幕来看 但是看起来却是正确的顏色 為何呢? 因為其实每张图片有史以来 都会把伽玛数值烧到图片裡面。所以这意味着...这些图片通通都错了(...在这样的歷史原因下。我们可以理解為何要把伽玛数值烧到图片裡面,因為这样的图片放到当时的CRT萤幕 反而会让我们认為这张图片显示是正确的!)是的,每一张再看到的数位相机拍出来的照片,你在网上看到,都是错的(在以上的观念下)。错。所有的图片都错了。那又是為什麼这些图看起来是正确的呢? 因為你以错误的gamma去算图 然后以错误的gamma萤幕来观看。因此,儘管你最终的贴图看起来是“正确的”,但是所有的计算式 “光学的计算”过程都是错误的。某些算图软体具有色彩校正的功能,当它读入图档的时候 它会自动去gamma(un-gammaed)產生现性色彩空间的贴图 每套算图引擎的这类功能不太一样 很不幸的是某些的作用不正确 某些有bug。因此,最好的办法是自己做顏色校正的节点转换。mia_exposure_simple就是这样的节点,它是一种简单tonemapper。 (它其实只具有亮度/对比度/伽马控制工具 外加过亮区域的压缩功能 避免clip现象;))要知道,当你做了伽玛校正后 你就会改变原本图片的红,绿,蓝通道的权重,这就相当於改变了顏色的饱和度。
    所以你一开始的时候就必须输入正确的顏色过亮(Overbrights )
    tonemappers的最重要工作就是要处理过亮问题。 mia_exposure_simple使用一个简单的压缩演算法,把顏色推到'门槛'以上,直到把它渐渐地clip成纯白,否则它会直接顶到纯白色变成难看的硬clip。这个方法很重要,其实在底片,数位相机,CCD中也是这样处理地。用老的shader,specular highlights很容易就爆光,看起来很难看 由於hard-clipping色彩通道的关係。这会让调顏色的人会把顏色条的太弱(相对於真实的物理强度),因為即使是最“弱”的数值相加起来 也会很容易过曝 為什麼?因為这些顏色的加法是建立在非线性的色彩空间请想想如果“2 +2”不等於“4”,而是“10”!因此,如果“2 +2 = 10”,你希望效果看起来是“4”(因為你眼睛认為看起来正确),透过试误法 你发现"2+0.5"的结果看起来像 “4”,所以原本正确应该要用2,你改用0.5 然后你就对这样的结果满意。但是当你把最后的结果,放到正确的tone operator(甚至只使用老式正确伽玛),它的结果还是会看起来像“2.5”而不是“4”。这就是為什麼很多人会投降 说gamma真是个烂东西 我以前没用gamma算图都不会有这种错误,干!放弃gamma!而真正的错误是你的specular highlight数值太小的。mia_material能够正确地处理这类问题的,你会发现,如果你在用它的时候没有使用伽玛校正或tonemapping,你会发现最后的highlights太亮。这是因為shader本身是正确的 但是你观看它的方式是错的。根据物理的算图是很困难的,主要是因為有很多根深蒂固错误流程 还有软体本身的错误。很多人误以為Maxwell是神奇的渲染器,而且远远优於mental ray,其实原因很简单这类渲染器一开始的时候就是以physical rendering的流程来写的,它并没有陈旧的软体包袱 与错误的流程要烦恼。Maxwell可以让所有的顏色正确显示,然后自动修正所有输入的图档,因為算图引擎确定最终的输出方式一定是以物理正确的色彩环境来显示,透过physical tone mapper来与萤幕观看!---以下文章翻译自http://3dlight.blogspot.com---
    作者是:Andrew Weidenhammer标题: 线性工作流程介绍(Linear Workflow Introduction)让我们开始谈谈线性色彩工作流程吧。你可能已经知道什麼是线性工作流程,但对於那些来不懂的 以下是简短解释:
    线性工作流程是因為你算图器本身就是以浮点 (线性)空间来运算的。它会產生8-bit的输出,而这个图档会加入gamma 為了要在萤幕上显示。真是可惜阿。本来浮点的图片对於后製合成是很方便的 却在输出的时候转成8-bit。如果你不了解8-bit, 与32-bit(浮点)图片的差别,或是萤幕的gamma,那你可能要先爬文。有些好书我可以推荐你读。The HDRI Handbook这本写的很不错,我高度推荐。网路上也有很多关於hdri的资料,hdri在计算机图形学中,就是利用线性工作流程的概念。了解hdri,你就会更了解线性工作流程。你可能认為线性工作流程有什麼大不了,因為你已经利用8-bit的方式算出好多年的美丽图档。其实只主要的差别,我想 可以归结為以下:1。物理正确性
    你可以以真实的单位来创建场景,例如使用真实的烛光亮度。2。真实光照
    这说来话长,但在CG灯长久以来是以线性衰减来欺骗观眾,或是根本就没有衰减。这是因為灯光的线性衰减并没有套用正确的伽玛。这就是為什麼我们的CG前辈phong与 blinn要去研究光线是如何反应的 利用shader模拟光线效果。我们必须跨出歷史 进化到使用物理精确的材质。这就是為什麼现在有这麼多MR (architectural) shaders。它们都是针对物理精确线性流程来设计的。3。后製的可调性大增
    32位元浮点或16位元浮点有能力应付庞大的色彩和曝光调整。当你使用真实浮点的后製软体如Fusion,大多数的滤镜都能真实的產生效果。运动模糊效果,光晕,会表现的更真实与自然。---以下文章翻译自http://www.creativecrash.com 网站---
    作者是 throb你有没有想过,為什麼你的GI算图结果如此黑暗?那麼,事实上,其实结果不是这麼深。问题在於显示设备(CRT或LCD)及该软件是没有作出调整的伽玛是把我们的显示图像。这是伽玛明确要求sRGB。技术信息sRGB可在该网站上。让我们看一下显示器会如何显示你输入的图档。这是非线性显示器。虚线是你输入的图档资料 实线是萤幕根据输入的强度所输出的强度 因為这条实线是直线所以这个萤幕是正确地显示。要知道 这个萤幕校正并不是跟底片有关。事实上,这跟底片没什麼关係。它本质上是為了要校正萤幕。好了,现在我们来看怎样解决这个问题。是的,这是一个问题:)嗯,朋友,我们只要再套用另外一条反向的曲线,就可以把原本的曲线变成直线了(线性化)。你看到这次实线因為我们套用的曲线而变直了。再解释一下,... sRGB是绘图软体对萤幕的校正。数位相机会对你的照片套用sRGB 但是你不会察觉这件事. 所以当你利用此照片在真正的线性工作环境中时 事实上你的操作可能会比真实世界的光线反应还要更剧烈一点。我用以下的渐层图来说明这是一张渐层图 图中是个0到1的数值 共有32阶。请注意0.5数值正好在中间。这张是你输入到萤幕的图档。这是一个线性图档!这是你的显示器显示出来的样子。在0.5的位置显然不是在中间了。这代表萤幕是非线性的。这是校正后的影像 没错 看起来比较亮了 但是这个校正让你播放在非线性的萤幕上时 图片显示的是线性的 以上说明希望读者能明白我们再举一个例子。这裡有两张图。再中间的灰色具有0.18的数值(中间灰色点)。左边是以sRGB编码 右边透过sRGB萤幕校正的影像。这会让灰色变成.46的数值。Gamma编码的图形会导致灰阶的细节消失线性图形会保有细节
    让我们将以上观念以3D软体进行实战吧:3DS Max 7.0与VRay的1.46以上是我们算第一张的结果:现在,我们必须将这张图线性化,如果我们希望画面更逼真。首先到Customize - Preferences - Gamma tab 将数值改变这样我们才能在材质编辑器看到正确数值。Brazil的用户,你就快完成了 接下一步吧。
    Mental Ray的用户 到这裡算是完成了!你本来就是用线性方法在算图
    Scanline render用户-到这裡算是完成了。以后的操作都是线性流程了

    楼主 2015-10-22 10:30 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知