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。否則還是會產生二次校正。