朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊|登陸

等待

返回 展開菜單

論Vray for SketchUp環(huán)境下的線性工作流

VRAY渲染 觀看預(yù)覽

VRAY渲染

包含5節(jié)視頻教程
關(guān)注33.0萬

vray是目前制作渲染效果圖最強(qiáng)大和最普及的渲染器,如果你是做建筑動畫或者室內(nèi)效果圖,還不會vray渲染器的話,那你就out了,趕快和朱峰社區(qū)一起輕松的學(xué)習(xí)vray吧!

關(guān)閉

同學(xué),你之前的渲染是錯誤的

——論Vray for SketchUp環(huán)境下的線性工作流

文/韓世麟

不管你是不是被這個聳人聽聞的標(biāo)題吸引,在好奇心的驅(qū)使下打開了這篇帖子,我希望你能夠耐心的把這些或許有(fei)點(diǎn)(chang)枯(wu)燥(liao)的東西看完,消化,并且在讀懂之后意識到,這篇文章確實(shí)不是標(biāo)題黨。事先要澄清的是,渲染確實(shí)有錯誤,但錯不在你,也不在我,而在于軟件設(shè)計過程中有些關(guān)鍵性的問題被忽視了,造成了系統(tǒng)性的計算錯誤。

引言

為了引入這個話題,首先談?wù)勥@些大家可能遇到過的問題:如果你接觸過Vray for SketchUp這個軟件,并且嘗試使用它渲染室內(nèi)(如博物館設(shè)計中只開了很小窗口的展廳),半室內(nèi)(灰空間),或是夜景的話,你很可能遇到如下的困惑:渲室內(nèi)圖時總會覺得過暗,或者渲夜景人工加的燈光很容易就過曝。你是不是有同感呢?如果是,這篇文章將會解答你的疑惑。

實(shí)際上,以上兩個情形本質(zhì)上是同一個問題:渲染時人工加入的光源(點(diǎn)光源,面光源,IES,或者相對面積較小的開窗洞口(注1)等等),總是給人非常不給力的感覺,即使倍增值調(diào)的很高,屋里也亮不起來,倍增值增加到極高,好不容易把周邊環(huán)境照亮了,光源附近卻一定會明顯過曝,完全有違真實(shí)生活中燈光或者自然光的表現(xiàn)。(圖1)

圖1:情景一,按正常思路打光,室內(nèi)場景總會很暗。

上圖使用了Vray自帶的陽光系統(tǒng),即使陽光照進(jìn)室內(nèi),屋內(nèi)仍然很暗,明顯曝光不足。

圖2:情景二,燈光很不真實(shí),屋里還沒亮起來,燈光周邊已經(jīng)過曝了。
建立簡單的暗室場景,墻體是50%的灰色,使用最基本的Vray矩形燈光,可以看到整個房間的曝光度還略顯昏暗,顯然需要增加光源亮度,但是燈光周圍已經(jīng)過曝得不成樣子,讓人不敢繼續(xù)向上增加燈光的倍增值。而在現(xiàn)實(shí)生活中,這樣大面積的一盞燈,已經(jīng)足夠把整個房間照的亮亮堂堂了(注2)。

為什么會這樣?如何解決?

首先就事論事地說一下浮于表面問題以及解決方法:

對于第一幅室內(nèi)圖,室內(nèi)明顯曝光不足,此時我們直覺反應(yīng)(注3)的解決方法是:
1. 增大光圈,減慢快門速度,使室內(nèi)整體曝光達(dá)到可接受的正常亮度。(使用該方法,整體亮度雖然上去了,但是窗口高光區(qū)會過曝。)
2. 增大室外環(huán)境光陽光系統(tǒng)的倍增值。(使用該方法,即使窗口過曝得一塌糊涂,室內(nèi)總亮度仍然提升不大。)
3. 前期處理不管用,那可以試試后期方法,將過暗的圖紙拖入Photoshop,觀察一下它的數(shù)據(jù)分布(圖3):

圖3:從直方圖可以清楚的看到,絕大部分的數(shù)據(jù)堆在左邊,也就是數(shù)據(jù)集中于暗部,這是典型曝光不足的圖片。那么此時無論是使用色階工具還是曲線工具提亮,在整體亮度提高之余,你會發(fā)現(xiàn),高光區(qū)過曝了(圖4):

圖4:使用曲線工具提亮,效果好了很多,但高光區(qū)過曝。

以上的三個直覺化的處理方法,無論用哪個,高光區(qū)都會過曝。

但是對Photoshop曲線工具理解比較深的同學(xué)會注意到,圖4的曲線頂部相當(dāng)長的一段數(shù)據(jù)是水平的平臺,這就意味著我把原圖中接近70%的高光信息全部映射為了白色。OK,難怪會過曝,都怪曲線拉得太粗暴。在這個案例中我只需要增加若干控制點(diǎn),把曲線比較柔和的由黑提亮到白,就可以比較好的挽救這張圖了(圖5):

圖5:在曲線上定了三個控制點(diǎn)(技術(shù)好的話兩個控制點(diǎn)就夠),讓全圖像素比較柔和的映射為較亮的輸出結(jié)果。結(jié)果很不錯,既沒有過曝,光線看起來也自然多了。

好,本篇教程圓滿結(jié)束了,謝謝大家。

等一下,這一切背后的機(jī)制都是為什么?為什么形如圖5這樣的上拱曲線可以讓圖面的光線過渡看起來正常?難道我每次渲染室內(nèi)都要先渲一張極暗的結(jié)果然后后期提亮(注4)?有沒有更好的方法,可以讓我在渲染的時候,直接得到正常光照過渡的結(jié)果?

關(guān)于背后機(jī)制的解答

先來回答第一個問題:為什么形如圖5這樣的上拱曲線可以讓圖面的光線過渡看起來正常?

很顯然,這個蹩腳的問題是我為了寫作方便而故意設(shè)問的。對于初次接觸這個問題的讀者來說,通常只能感性的描述為:啊,圖變亮了。但是實(shí)際上發(fā)生的事情是,在經(jīng)過圖5這樣的上拱曲線的映射之后,光線的衰減速度,趨于正常了,或者更精確地說,是在屏幕設(shè)備上顯示的光線衰減速度,看起來接近我們對平時的生活印象了。

暈,這是什么意思?

為了解釋這些問題,首先要談的是人眼對生活中光線的感知習(xí)慣:相對的來說,人眼對暗部的光線變化敏感,對亮部的光線變化不敏感。

這很好理解,如果不給人物理測量工具,只讓人憑感覺判斷事物的屬性的話,人往往要靠事物之間的相互比較來感知。而等量的變化,永遠(yuǎn)是在小尺度上要容易察覺,大尺度上不容易察覺。舉最簡單的例子:同樣是十厘米的長度差距,人眼去目測的話,兩個人的身高差十厘米很容易看出來,兩棵樹高度差十厘米就看不出來,兩座山高度差十厘米就不可能看出來。類比到光強(qiáng)度來說,兩個燈泡,同樣是差20W的功率,30W和50W的亮度天差地別,180W和200W差距就沒那么明顯,1000W和1020W很可能看起來一樣。

在這里,我就要引入線性和非線性的概念了。

線性,即是以我們熟知的物理測量單位對數(shù)值進(jìn)行描述,比如長度,一把直尺上刻度的增加1cm,2cm,3cm就是線性增長。類比到亮度,如果不太科學(xué)的轉(zhuǎn)化成燈泡瓦數(shù)來說的話,10W,20W,30W這樣就是線性增長。這種十進(jìn)制的描述體系,稱作base-10。

人眼對光線亮度的感知很顯然不是線性的,人眼不是測量儀器,我們看不出光源線性的瓦數(shù),相反我們善于比較,我們知道同樣規(guī)格的燈泡。兩個燈泡比一個燈泡亮一倍,四個燈泡比兩個燈泡又亮一倍,八個燈泡……

這種非線性的描述,便是我們對光線的感受習(xí)慣,所以在攝影和數(shù)字圖像技術(shù)里,我們不是習(xí)慣用線性物理量“流明”“坎德拉”“勒克斯”來對亮度進(jìn)行描述,而是用“擋(Stop)”這種不量化卻非常直觀的方法來描述。每差一擋,光線能量差一倍。這種非線性的描述方式,對于人的視覺感受來說是非常非常恰當(dāng)?shù)摹_@種倍數(shù)關(guān)系的描述體系,稱作base-2。

如果硬是要給人眼對光線的感受繪一個圖解的話,可以不精確的描述為如下這樣(圖6):

圖6橫軸輸入的信息是按線性速度增長的光線亮度,縱軸輸出的信息是人眼對這些亮度的心理評價。在坐標(biāo)軸原點(diǎn)附近,光線很暗的時候,微小的亮度提升會給人強(qiáng)烈的變亮感受,因此亮度增長斜率很高,而接近高光區(qū)以后,能量的增加給人的刺激逐漸變得不明顯,人們覺得亮度的提升速度變緩了下來。

以上的論述和我們畫圖有什么關(guān)系?心理感受這么不靠譜的事情會影響什么呢?其實(shí)影響很大,你仔細(xì)想想就會發(fā)現(xiàn),屏幕上的畫面,只是對自然界的一個概括和映射,數(shù)字圖像從使用數(shù)碼相機(jī)/攝像機(jī)對大自然的亮度進(jìn)行采集,一直到傳輸?shù)诫娮悠聊簧线原呈現(xiàn),可不是簡單的把自然環(huán)境的亮度值搬運(yùn)到電腦屏幕上再以相同的亮度值呈現(xiàn)給你看。(類比一下:錄音機(jī)可以做到等分貝還原,但是屏幕做不到等能量還原。)試想你生活中的電燈,太陽這種真實(shí)光源有多亮?而你的電腦屏幕最亮能有多亮?既然不能真實(shí)再現(xiàn)自然界的能量強(qiáng)度,那么如何讓人看起來覺得真實(shí)呢?這中間的數(shù)學(xué)把戲可不簡單!處處要以人眼的感受為準(zhǔn)。人眼這種對暗部敏感的固有特性影響了很多事情,其中兩件最為主要的事情就是:

一,在圖像采樣編碼端,決定了圖像不能以線性密度進(jìn)行采樣,而要巧妙的分配采樣比重更多的給暗部信息。

二,在屏幕設(shè)備輸出端,決定了屏幕不能線性的呈現(xiàn)亮度,而要巧妙的分配亮度的分布,多花一些色階范圍來刻畫暗部信息,使之看起來符合人的心理感受。

而為了達(dá)到這兩個效果,就要用到Gamma校正。

Gamma校正

我將詳解上一節(jié)這兩個截然分開但又息息相關(guān)的步驟,讓我們看看機(jī)智的工程師們是怎么設(shè)計這些解決方案的:

為了控制光線強(qiáng)度從線性到非線性的映射,工程師們引入了gamma這個參數(shù),這是一個極為方便的灰階亮度控制工具。

使用gamma校正的公式表示如下:

這是一個冪函數(shù),自變量是輸入值,輸出值是它求得的結(jié)果。右上角這個“幾次方”就是gamma。

而冪函數(shù)的的特性是(喜聞樂見的高中數(shù)學(xué)回顧時間),在自變量取0到1之間時,不管gamma是多少,它們的函數(shù)圖象都通過(0,0)和(1,1)。這樣一來,如果定義最暗點(diǎn)亦即純黑色為(0,0),最亮點(diǎn)亦即純白色為(1,1)的話。我們可以得到非常好用的提亮或者壓暗的映射關(guān)系(圖7):

圖7便是(0,1)區(qū)間內(nèi),gamma分別為1,2,4,8和1/2,1/4,1/8的圖像。

如果橫軸是輸入的亮度值,縱軸讀數(shù)是輸出的亮度值的話,則有如下簡單的規(guī)律:

當(dāng)gamma=1時,輸入亮度等于輸出亮度,此時沒有對數(shù)據(jù)進(jìn)行任何修正,是一個線性映射。
當(dāng)gamma>1時(比如gamma=2那條綠線),曲線下凹,低于gamma=1的對角線,所有的輸出數(shù)據(jù)都小于輸入數(shù)據(jù),即處處比原亮度要暗。那么和Photoshop中的曲線工具非常相似,這是一條非線性映射的“壓暗曲線”。
相似的,當(dāng)gamma<1時(比如gamma=0.25那條綠線),曲線上凸,所有的輸出數(shù)據(jù)都大于輸入數(shù)據(jù),即處處比原亮度要亮。那么這個gamma變換,是非線性映射的“提亮”操作。 要加深理解的是這里所謂的“提亮”,“壓暗”僅僅是表面上看起來的結(jié)果。Gamma校正的目的只是為了修正數(shù)值之間的映射關(guān)系,在不改變起點(diǎn)和終點(diǎn)的情況下,重新分配中段數(shù)據(jù)的格局,并無所謂提亮還是壓暗。你要關(guān)注的是,工程師們?nèi)绾瓮ㄟ^非線性修正,讓更多存儲空間和屏幕色階用來表現(xiàn)暗部信息。 一, 采樣/編碼端(Encoding) 當(dāng)我們把自然界的光線強(qiáng)度信號,采集并編碼到一個低動態(tài)范圍數(shù)字圖片的時候(比如8位格式的jpeg),有很多因素限制了數(shù)字設(shè)備對真實(shí)環(huán)境的忠實(shí)記錄。首先,數(shù)碼相機(jī),攝像機(jī)的感光設(shè)備所能看到的動態(tài)范圍,是遠(yuǎn)不如人眼的,動態(tài)范圍即是指可感受到的最亮點(diǎn)與最暗點(diǎn)之間的亮度差異(描述動態(tài)范圍的大小既可以用線性的十進(jìn)制物理單位描述,即“base-10”,也可以用表示二元倍數(shù)關(guān)系的“擋”來描述,即“base-2”)。 本來電子感光元件對能量的感應(yīng)基本是線性的,這就是說一份的能量,可以激發(fā)一份等比例大小的電信號,但是如果就這么忠實(shí)的把原始信息記錄下來,勢必會造成暗部信息過少,亮部信息冗余,既浪費(fèi)了存儲空間,質(zhì)量又不好。原因還是在于人對光線的感知本來就是非線性的,暗部的細(xì)節(jié)變化比亮部變化更容易被察覺,我們需要記錄更多的暗部信息。 雖然人眼在極暗條件下的感光能力不如電子設(shè)備(人眼近似ISO約800),但是在同一個視野內(nèi),人眼可以捕捉的動態(tài)范圍,是超過電子成像面板的。那么這些電子成像設(shè)備,為了模擬和還原人眼所能看到的自然界豐富的亮度層次,就必須在采集信號的時候,分配較多的存儲空間給暗部。如果僅憑線性感光元件用線性映射記錄自然的亮度,則只能記錄非常有限的動態(tài)范圍,太亮的細(xì)節(jié)會過曝記錄不到,暗部豐富的細(xì)節(jié)也會缺失。 因此,在采樣編碼的時候,會使用一個小于1的gamma來轉(zhuǎn)化亮度信息(在大多數(shù)設(shè)備上約是0.45),才能比較合理的分配數(shù)據(jù)儲存空間,保真場景的亮度動態(tài)范圍。如下圖(圖8): 
圖8的橫軸,是線性輸入的光線數(shù)據(jù),在此即是自然界的光線。而縱軸,是經(jīng)過gamma校正后,輸出到存儲設(shè)備中的數(shù)據(jù),可以看到,通過這樣的gamma校正,按照線性物理單位來衡量的前21.8%的暗部細(xì)節(jié),占用了50%的數(shù)據(jù)存儲空間。而電子設(shè)備花費(fèi)另外50%的存儲空間,把剩下78.2%的數(shù)據(jù)作為亮部信息,全部囊括其中。這樣一來,就達(dá)到了合理分配采樣比重,保真信息的目的。

生動一點(diǎn)描述的話,從橫軸的零點(diǎn)向右推進(jìn),暗部的細(xì)節(jié)層次被gamma校正放大并記錄了下來,這樣未來我們才有機(jī)會還原更多暗部豐富的色階變化。而過了50%的存儲空間,到達(dá)亮部區(qū)域后,曲線的增幅減緩下來,雖然橫軸的亮度在持續(xù)線性增加,但是縱軸的數(shù)據(jù)積累卻可以慢慢的達(dá)到頂峰,這樣橫軸的亮度極限就有機(jī)會向更亮的極限去推進(jìn),從而達(dá)到亮部信息最大限度的記錄。

而這一切,都是因?yàn)槿搜蹖饩的感受是非線性的,暗部變化很容易被察覺,必須分配更多的色階層次來記錄,而亮部的明暗變化細(xì)節(jié)沒有必要刻畫的那么仔細(xì),對于亮部來說,更大更真實(shí)的動態(tài)范圍才是人眼更關(guān)心的。

相似的道理,8位的jpeg圖片格式,它們的灰階預(yù)算就更緊張了,相較于大部分電子采集設(shè)備的的灰階可以達(dá)到10位1024個,8位圖片僅有256個明度灰階,那么在壓縮8位圖片信息的時候,就更需要采用這樣的gamma校正,來最大限度的保留場景的對比度層次,因此,幾乎所有的8位圖片格式,在編碼的時候,都是采用圖8的gamma灰度系數(shù)來壓縮數(shù)據(jù)的。在這些圖片里,暗部層次被拉開,亮部層次被壓縮,然后儲存于8位圖片之中,總體上來看,由于是一條上拱曲線,那么所有的輸出數(shù)據(jù)實(shí)際上都被不同程度的“提亮”了,只不過暗部提亮的劇烈,亮部提亮的緩慢,最黑點(diǎn)(0,0)和最白點(diǎn)(1,1)沒有移動。

經(jīng)過這樣的處理,jpeg圖片所能表現(xiàn)的動態(tài)范圍達(dá)到大約11擋左右,對于一般觀眾,基本夠用。

基于上文提到的種種原因,小于1的gamma,又被稱作“編碼gamma”、“壓縮gamma”。意思就是在編碼數(shù)據(jù),壓縮低動態(tài)圖片文件的時候所采用的gamma值。直觀特點(diǎn)是上拱,提亮(這只是表面特點(diǎn),目的并不是為了提亮,而是保真)。

二, 屏幕解碼輸出端(Decoding)

一般家用電子顯示設(shè)備的色深度是8位,RGB每通道都有256個亮度層次,三個通道取值均相同的時候,呈現(xiàn)灰色,因此一般的計算機(jī)屏幕共有256個灰階層次。

屏幕的亮度很有限的,即使RGB均取最大值255,亮度也不過是一個柔和的純白色而已,想要用這種有限的動態(tài)范圍來表現(xiàn)大自然豐富的動態(tài)范圍,就必須有技巧的分配亮度,拉開亮部信息的跳躍階梯,通過灰暗像素的對比,來襯托明亮像素的亮度,讓本來不怎么亮的白色像素在周邊灰階的對比下顯得很明亮,達(dá)到符合人的心理感受,重現(xiàn)自然界場景的目的。

舉個例子,如下圖(圖9):

圖9舞臺上有很多盞明亮的燈,給人很刺眼的感覺,如果我問你這里面主要的燈光是什么顏色,你可以輕易的說出燈光是黃色的。然而如果你用Photoshop的吸管分析工具,吸一下高光的部分,當(dāng)然會得到一個RGB等于255的純白色的結(jié)果(圖10)。

很顯然圖10中這一大片過曝的區(qū)域都是純白色,沒什么稀奇,如果單純滿屏幕都是白色的話,你肯定不會覺得屏幕很刺眼,但是當(dāng)過曝的白色區(qū)域周邊出現(xiàn)了微妙的色彩襯托,暗部呈現(xiàn)深黑色,明暗有了參照以后,圖像帶給人的心理感受可以變得很強(qiáng)烈,很生動,你很容易說服自己:“這個燈光很明亮”,因?yàn)閳鼍暗拿靼祵Ρ瘸潭龋夏愕娜粘=?jīng)驗(yàn)。

那么在電腦屏幕上,如何處理來自自然界的線性數(shù)據(jù)(base-10)呢?如果我們有一張數(shù)據(jù)線性分布的圖像,將要被呈現(xiàn)到屏幕上的話,是否需要gamma修正?如果是,應(yīng)該修正多少呢?

首先,我來向你證明一件事,如果使用線性映射來等比例的呈現(xiàn)圖片信號,是行不通的。請看下圖(圖11):

(此圖的演示效果只有在圖片100%顯示模式下有效,在視頻,pdf文檔中均由于壓縮算法會失效。)
圖11左邊方塊是一個明度約為74%的灰白色,中間方塊是由多個1像素大小的純黑和純白像素間隔而成的棋盤格,右邊方塊是50%的灰色。放大特寫如下(圖12):

我們知道在屏幕上RGB=255表示純白,也是屏幕最亮的值,而RGB=0,是關(guān)閉該點(diǎn)的燈光顯示,也就呈現(xiàn)了黑色。那么中間這個棋盤格,對于屏幕設(shè)備來說就是“開了一半的燈”,如果用物理工具測量的話,中間棋盤格所呈現(xiàn)的亮度,恰好是屏幕白色亮度的一半,如果定義純白能量為100%,這個棋盤格的平均能量顯然正好是50%。

然而如果你把這個線性能量50%和右邊的50%灰比較一下的話,你會發(fā)現(xiàn)50%的灰色要暗得多,中間的棋盤格平均灰度明顯偏亮,反而更接近左邊74%的亮度。

這就是說,如果屏幕在顯示數(shù)據(jù)的時候線性的把亮度數(shù)值換算成等比例的能量(舉例說就是文件中存儲的大小為0.5的數(shù)據(jù)直接對應(yīng)屏幕上50%的能量),那么呈現(xiàn)在屏幕上以后,我們會覺得本應(yīng)是50%的灰色偏亮了不少。

下圖是一個灰階過渡,對于屏幕來說這個灰階過渡是線性的,如果我們用照度計測量的話,它們的每一個色階提升的亮度的物理數(shù)值是基本均等的,也就是以base-10的標(biāo)準(zhǔn)來衡量的話,下圖亮度每一格都比前一格增加相同的能量(圖13)。

很明顯的,由純黑到第一個灰階,有一個很大的跳躍,而在高光區(qū)則變化不明顯。道理還是我們所知道的,人眼對暗部的明暗變化更敏感一些。因此,為了更好地利用屏幕顯色的動態(tài)范圍(這個動態(tài)范圍很小很珍貴,因?yàn)榧儼?55的亮度本來就不高)。在亮度信息解碼到屏幕上的的時候,會用一個比1大的gamma,進(jìn)行灰度校正。如果沒有這一步,屏幕上圖像的灰階過渡就會看起來和圖13一樣不舒服:暗區(qū)跳躍大,亮區(qū)層次模糊。

那么這個gamma取多少呢?在早期,不同的設(shè)備,不同的操作系統(tǒng)都有不同的gamma值。1996年,惠普和微軟聯(lián)合為顯示器,打印機(jī),以及網(wǎng)絡(luò)圖像(8位圖像)推出了sRGB標(biāo)準(zhǔn),sRGB,即standard RGB,意即通行的國際標(biāo)準(zhǔn)。在坐標(biāo)軸上,sRGB的圖像是這樣的(圖14):

請注意此圖是兩張圖表的疊加,所以縱軸的讀數(shù)左右兩邊不一致。我們先看橫軸以及右側(cè)的縱軸,橫軸是輸入數(shù)值,比如是某圖片文件的亮度讀數(shù),而右側(cè)的縱軸就是該讀數(shù)在屏幕上輸出的像素亮度占屏幕白色亮度的百分比。

其中若隱若現(xiàn)的黑色虛線,是gamma=2.2的函數(shù)圖象。

而紅色曲線,即是sRGB標(biāo)準(zhǔn)的圖像。不像其他大部分RGB標(biāo)準(zhǔn),sRGB空間的gamma不是常數(shù),而是一個分段函數(shù),我們放大一下圖表的左下角(圖15):

sRGB校正曲線橫軸(0,0.04045)區(qū)間內(nèi),是一條由(0,0)指向(0.04045,0.00313)的直線。而在大于0.04045以后,是一個指數(shù)為2.4的復(fù)合函數(shù),軌跡和gamma=2.2基本重合,而各個點(diǎn)的等效gamma一直在變,由1一直增長到2.3左右。

再回頭看圖14:

這其中的藍(lán)色曲線,就是對紅色曲線取對數(shù)的結(jié)果,也就是求出了每點(diǎn)的等效gamma值,左邊縱軸就是等效gamma的讀數(shù)?梢钥吹皆谳斎胫敌∮0.04045的時候,由于紅色函數(shù)是一段直線,因此等效gamma等于1,而在輸入值大于0.04045以后,等效gamma由1一直慢慢增加到2.3左右。當(dāng)輸入值為0.5的時候,藍(lán)色曲線的中位數(shù)讀數(shù)約為2.16,并非2.2。

紅色曲線之所以是一個分段函數(shù),是因?yàn)閟RGB標(biāo)準(zhǔn)首先本著首要原則:處處以人眼的感受為準(zhǔn)(人眼可不是用一個簡單的常數(shù)就對付得了的),然后又綜合考慮了很多復(fù)雜的因素(比如8位圖像主流的編碼gamma,1996年主流CRT顯示器的解碼gamma等等),才提出了這個校正標(biāo)準(zhǔn),目的是為了更精確的符合人眼的觀賞習(xí)慣,以圖13的灰階過渡來舉例子,在把圖13的線性灰階經(jīng)過了sRGB的非線性gamma校正以后,我們看到的非線性灰階,會是一個比較完美的從純黑到純白的過渡。

而由于紅色的sRGB曲線幾乎和gamma=2.2曲線重合,因此在很多不太精確的情況下,我們就認(rèn)為國際的屏幕校正標(biāo)準(zhǔn)是gamma=2.2,這是無傷大雅的。

使用gamma=2.2校正后的灰階圖(圖16):

可以看到這個灰階過渡看起來就均勻多了,但是若是探究其實(shí)際的亮度增長,則是暗部亮度增加緩慢,越亮則亮度上升越快的曲線。(很好理解,暗部微小的變動即可被察覺,因此盡可能縮小暗部之間色階的亮度差距,而到了高光區(qū)則需要較大幅度的拉開亮度差,才會被眼睛察覺。)

因此在屏幕顯示端,通常要使用這樣大于1的gamma來校正輸出的亮度分布,以便較合理的利用屏幕的256個亮度層次,這樣的gamma又被稱作“解碼gamma”。如果你的計算機(jī)屏幕經(jīng)過了標(biāo)準(zhǔn)儀器的校色,那么它的顏色空間應(yīng)當(dāng)是符合sRGB國際標(biāo)準(zhǔn)的,進(jìn)而你可以得出結(jié)論:它的gamma在2.2左右。

那么把國際上最常用的編碼gamma和解碼gamma放在一起,圖像如圖17所示:

首先解讀一下顯示器的解碼gamma曲線,它是下凹的,可以看到,在經(jīng)過解碼gamma的校正以后,橫軸輸入端讀取的0.5數(shù)值,會被壓暗到屏幕線性亮度的21.8%來輸出,而這個亮度,在人眼看來,正是中灰色。而屏幕輸出達(dá)到屏幕總線性亮度的50%的時候(以base-10的標(biāo)準(zhǔn)衡量),輸入數(shù)據(jù)已經(jīng)達(dá)到了70%多。這就意味著,經(jīng)過gamma校正之后,圖片上70%以上的信息,集中在屏幕50%以下的亮度范圍內(nèi)。而另外一半偏亮的亮度空間,用來表現(xiàn)剩下的21.8%的亮部細(xì)節(jié),只有這樣,亮部的細(xì)節(jié)之間才能大大的拉開差距,被人眼看清楚。這樣的分配,才是比較合理的。

另外看一下采樣gamma曲線,它的大小是1/2.2,正好是2.2的倒數(shù)。觀察一下,它在采樣的時候,把自然界中能量層級為21.8%的信號,放大為0.5記錄了下來,而這個21.8%,在人眼中剛好是大約中灰色的感受(原因我已經(jīng)說過太多遍了)。

于是經(jīng)過了采樣/編碼gamma的壓縮和屏幕解碼gamma的還原,我們就在小小的(確切說是“暗暗的”)電腦屏幕上,看到了大自然豐富的灰度過渡,并且從心理感受層面,得到了“畫面真實(shí)還原”的感受。2.2和1/2.2互為倒數(shù),完美的相互配合著。這里要注意的是,根據(jù)上文詳細(xì)解釋,你應(yīng)該明白這兩個gamma都有各自必須產(chǎn)生的原因,只不過在1996年統(tǒng)一sRGB標(biāo)準(zhǔn)的時候,某種程度上參考了主流編碼gamma的數(shù)值(gamma≈0.454)。而國際標(biāo)準(zhǔn)制定以后,圖像的壓縮gamma便可以反過來依據(jù)國際標(biāo)準(zhǔn)(sRGB gamma≈2.2)來制定大小了,F(xiàn)在的jpeg文件通常都會以sRGB作為文件的的色彩空間標(biāo)準(zhǔn)。

關(guān)于CRT(Cathode ray tube)

上文詳解了編碼gamma和解碼gamma。其實(shí)gamma校正這個數(shù)學(xué)工具的產(chǎn)生,最初是因CRT顯示器而生。CRT顯示器(Cathode ray tube,陰極射線管)本質(zhì)上就是高中物理課上的“示波器”,傳統(tǒng)電視機(jī)和電腦的CRT顯示屏都是使用和示波器相同的原理來呈現(xiàn)畫面的(圖18):

在圖18中,由陰極射線管打出的電子,經(jīng)過磁場偏轉(zhuǎn),最終擊打在熒光屏上,激發(fā)出亮光,這樣從左上到右下不斷的掃描,完成畫面的顯示(傳統(tǒng)電視機(jī)一般是隔行掃描,上下兩場切換)。CRT系統(tǒng)的外觀照片如圖所示(圖19):

那么在這個系統(tǒng)中,輸入端的電壓信號,并不能線性的,無損的轉(zhuǎn)化成屏幕上的亮度值,舉例來說就是當(dāng)我輸入為一個大小為0.5的信號時,呈現(xiàn)在屏幕上的最終亮度,要比屏幕總亮度的50%暗很多(約21%)。由于各個環(huán)節(jié)的物理損耗以及熒光屏的物理特性,越是輸入電壓比較低的時候,屏幕亮度提升越慢,直到電壓較高的時候,亮度的損失才有所緩解,電壓越高,亮度提升越快。輸入信號和輸出亮度的大小,呈現(xiàn)類似下圖的關(guān)系(圖20):

這是一條似曾相識的曲線,它表示的是文件輸入的信號,與CRT顯示器最終輸出的亮度(計量單位base-10)的關(guān)系,可以看到,由于系統(tǒng)性能量損耗的存在,信號并不能線性的反映為屏幕亮度,而是呈現(xiàn)一條大約gamma為2.35-2.55之間的gamma曲線。這個gamma,叫CRT顯示器的“失真gamma”。

那么要不要校正這個失真gamma呢?要校正,但是要不要把總gamma校正到1呢?沒有必要,在實(shí)踐中,只要矯正到2.2左右,就正好和前文提到的8位圖片固有的編碼gamma完美配合了。以一臺失真gamma=2.55的CRT顯示器為例:只需要把gamma=2.55微調(diào)到gamma=2.2就可以,中間只需要把信號補(bǔ)償一個gamma=2.2/2.55≈0.863就可以了。公式如下:

理論總結(jié)

好,那么現(xiàn)在我們來梳理一下所有這些gamma的相互關(guān)系:

首先由于CRT顯示器對于電信號轉(zhuǎn)化光強(qiáng)度的非線性關(guān)系,為了應(yīng)對“失真gamma”,產(chǎn)生了“gamma校正”的概念,人們使用一個“補(bǔ)償gamma”來應(yīng)對這種非線性的失真,隨后“gamma校正”被擴(kuò)展到廣義的圖像灰度修正領(lǐng)域里。

圖像在采樣/編碼端的“編碼gamma”可不是受CRT的這種不完美的物理特性的影響,而是單純的因?yàn)槿搜厶匦,為了高保真的采集自然界的信息,才把“編碼gamma”定為了0.45。

而幸運(yùn)的是,CRT顯示器失真gamma(2.35-2.55)與解碼圖像所需要的解碼gamma(2.2)是非常接近的,因此只需微小的電路校正,就可以把很符合人眼視覺習(xí)慣的畫面呈現(xiàn)出來。CRT失真gamma與圖像解碼gamma數(shù)值上的相似,既有運(yùn)氣成分,也離不開工程學(xué)的設(shè)計。這兩者的巧合大大簡化了早期電視機(jī)設(shè)備的電路設(shè)計難度。

也正是綜合了人眼習(xí)慣,CRT主流失真gamma,圖片/視頻主流的采樣gamma,人眼面對屏幕信息所需要的解碼gamma等等因素,惠普和微軟才在1996年提出了sRGB標(biāo)準(zhǔn)。而這個標(biāo)準(zhǔn)提出以后,所有在sRGB標(biāo)準(zhǔn)以后產(chǎn)生的硬件軟件,都在向這個標(biāo)準(zhǔn)上靠攏。所以就算現(xiàn)在的主流顯示器已經(jīng)不是CRT了,顯示器的解碼gamma最終還必須是2.2。你要知道,現(xiàn)在主流的LCD液晶顯示屏是線性元件,它的亮度對電壓信號的反映基本是線性的,而為了符合sRGB標(biāo)準(zhǔn),液晶顯示器不得不在解碼的時候,給信號加上一個壓暗的gamma=2.2的失真補(bǔ)償,和他的老大哥CRT相比,就顯得委屈得很,沒有那么幸運(yùn)了。沒辦法,誰讓你要顯示8位圖片呢,依據(jù)國際標(biāo)準(zhǔn),它們可都是在編碼的時候自帶提亮gamma的。

所以如果用圖示表示的話,圖片和顯示器對亮度信息的gamma校正特性,可以簡單地概括為(圖21,這套圖片的原作者是英國設(shè)計師Matt Gorner,我對其進(jìn)行了部分的編輯和翻譯):

這幅圖即是說:在8位圖像編碼的時候,所有的文件都被小于1的gamma校正過,所有的數(shù)據(jù)都被不同程度的“提亮”過。這些文件包括你熟知的jpeg,BMP,TIF,另外最值得注意的是,連你最常用的8位RGB(0,255)調(diào)色板,都被gamma校正過,也就是說你每次吸管所吸取的數(shù)值,實(shí)際上都是被放大過的失真信號,有木有三觀盡毀,不相信愛情的感覺?

那為什么我們覺得我們看到的顏色是對的呢?我們已經(jīng)解釋過了,那當(dāng)然是因?yàn)轱@示器針對這些編碼gamma做了反向的解碼,解碼gamma依據(jù)國際sRGB標(biāo)準(zhǔn),取gamma=2.2。相當(dāng)于向下壓暗(圖22)。

這兩者一配合,就相互抵消,輸出了一個所謂“線性”的結(jié)果,但是如果你認(rèn)真思考的話,就會發(fā)現(xiàn),這里的“線性結(jié)果”中沒有任何數(shù)據(jù)之間的關(guān)系是線性的,首先它的數(shù)據(jù)采樣點(diǎn)是不均勻的,亮度的能量層級也是不均勻的。之所以說“線性”,實(shí)際上是因?yàn)楝F(xiàn)在屏幕上所呈現(xiàn)出來的亮度層級,和自然界的亮度層級是成線性比例的。而我們?nèi)搜蹖Υ笞匀坏母惺埽瑥囊婚_始就說了,是非線性的,因此屏幕上用非線性的數(shù)據(jù)分布,還原了我們對自然的感受。

好了,以上就是對所有的背景知識進(jìn)行了詳細(xì)的闡述,我相信如果你認(rèn)真看進(jìn)去的話,是可以理解的,這真的是非常淺顯的常識類知識,再加上各種知識背景的補(bǔ)充,相互間的影響關(guān)系應(yīng)該比較明了了。

那么我們在此基礎(chǔ)上,就可以回到正題了:為什么渲染時的燈光總是不給力呢?為什么形如圖5這樣的上拱曲線,可以讓光線過渡看起來正常呢?

線性工作流

我標(biāo)題叫“你之前的渲染是錯誤的”,但是我也說了,錯不在你,這一切都是因?yàn)椋涸缙诰帉戜秩拒浖某绦騿T,沒有充分的考慮到一系列的gamma在不同環(huán)節(jié)中的應(yīng)用,導(dǎo)致用戶在直覺化的使用軟件的過程中,有些步驟缺失了gamma校正的過程,造成了光線衰減過快。

首先要研究的一個問題是,渲染軟件在進(jìn)行光線、色彩的計算的時候,是根據(jù)什么公式進(jìn)行計算的?

答案很簡單,就是依據(jù)真實(shí)世界的物理定律(為什么不呢?),根據(jù)物理學(xué)的光強(qiáng)度計算公式,渲染軟件中人工加入的燈光,遵循自然界的平方反比衰減定律,也就是說,渲染軟件是用線性的數(shù)學(xué)工具思考的(base-10)。用圖解表示的話,就是這樣(圖23):

在軟件內(nèi)部所加入的人工光源,太陽光,IES,都是按照線性數(shù)值參與計算的,這些燈光的測量單位可以是功率“瓦”(W),也可以是光通量“流明”(lm)總之都是些十進(jìn)制的物理單位,即base-10的線性數(shù)值,衰減速度和自然界一樣,都符合平方反比定律。

那么,當(dāng)我們把8位圖片,輸入到渲染軟件里以后,會發(fā)生什么呢(圖24)?

第一步:我們按照直覺化的操作,直接把8位圖片和8位的調(diào)色板信息,輸入了渲染軟件,那么錯誤從這一步開始就立刻產(chǎn)生了:我們不能這么做。因?yàn)樗械?位顏色信息都是經(jīng)過小于1的編碼gamma放大過的,這里的一個大小為0.5的像素,實(shí)際上只對應(yīng)自然界里的21.8%。渲染軟件是依據(jù)自然界的物理規(guī)則在計算的,那么相當(dāng)于我們輸入的所有顏色信息,都是偏亮的,而在渲染軟件里人工加入的燈,是正常的亮度,這樣的計算結(jié)果怎么可能對呢?我們接著看圖25。

這樣會輸出“混合gamma”的結(jié)果,即圖片顏色帶有提亮gamma,而光線衰減速度為線性。我們所有的人,都是在這一步就出圖打印了,因?yàn)閳D片的顏色經(jīng)過顯示器2.2的解碼gamma壓暗以后,顏色看起來是正常的。但是你會注意到,經(jīng)過屏幕壓暗以后,光線變得很昏暗,衰減速度非?欤斐闪碎_篇提到的問題,而這一步所發(fā)生的錯誤就是其本質(zhì)原因。如果我們?yōu)榱说挚惯@種屏幕壓暗,模擬真實(shí)攝影的過程,為混合gamma的數(shù)據(jù)增加一個提亮的0.454編碼gamma,會怎么樣呢?

第二步:施加小于1的編碼gamma(圖26)。

此時的光線衰減速度看起來就正常了,然而由于圖片顏色被兩個編碼gamma提亮,但僅僅被屏幕解碼gamma壓暗了一次,所以所有的貼圖會看起來顏色發(fā)亮,飽和度降低。這也解釋了為什么開篇的室內(nèi)案例,用形如圖5那樣的上拱曲線是可以挽救的。因?yàn)檫@樣提亮以后,光纖衰減速度,看起來趨于正常,符合我們的心理認(rèn)知。

那么究竟要怎么辦?燈光和圖片,我們糾正哪一個?

正確的方法是校正圖片,在第一步,我們使用一個大于1的壓暗gamma,抵消掉8位圖片和調(diào)色板的編碼gamma,使其輸出線性的物理數(shù)值,這一步,被稱為de-gamma(圖27):

線性的顏色數(shù)據(jù)(base-10)結(jié)合線性的燈光數(shù)據(jù)(base-10)進(jìn)行計算,就會輸出和自然界一樣的線性結(jié)果了,所有的步驟都是在線性空間里計算的(base-10),因此這個工作方式,被稱作線性工作流程,簡稱“線性工作流”(圖28)。

不要忘記,這個結(jié)果僅僅是內(nèi)存中的數(shù)據(jù),從你的電腦屏幕中看起來,圖片的顏色是被壓暗過的,光線的衰減速度也很快,看起來基本上就是漆黑一片的環(huán)境中布滿了過度飽和且深重的顏色。此時,為了抵消屏幕的解碼gamma,合理的采集計算出來的數(shù)據(jù)存儲到8位圖片中,我們要對這個線性數(shù)據(jù)結(jié)果進(jìn)行采樣gamma校正,即使用一個小于1的gamma放大暗部信號,壓縮亮部信號,這一步,和拍攝數(shù)碼照片沒有任何區(qū)別。施加了編碼gamma后,就可以輸出正確的8位圖像結(jié)果了(圖29)。

好了,到這里,我們線性工作流的原理,算是徹底講解完了,有沒有撥云見日的感覺呢?如果還是很困惑,請耐心的閱讀之前所鋪墊的理論,也歡迎和我來討論。

擁有了理論武器,我們?nèi)绾卧赩ray for SketchUp中實(shí)現(xiàn)它呢?

Vray for SketchUp中的線性工作流程

前面說了半天理論,如何實(shí)現(xiàn),才是大家都關(guān)心的問題。那么在一些專業(yè)的CG軟件里,比如3ds Max,Maya,它們都有很針對性的系統(tǒng)參數(shù),來調(diào)整單一元素的gamma,比如我可以設(shè)定所有的貼圖在輸入渲染軟件的時候,被de-gamma壓暗,但是請不要讓我在屏幕上預(yù)覽到這個效果,這樣在給模型貼圖的時候,我透過屏幕看到的,是正常的貼圖顏色(此時屏幕背后的圖片數(shù)據(jù)均是偏亮的),而參與數(shù)學(xué)計算的,是偏暗的線性顏色。而渲染軟件的材質(zhì)編輯器更是可以使用gamma控制節(jié)點(diǎn)來單獨(dú)的調(diào)整每一張圖片的gamma,非常精準(zhǔn),這樣的好處在于我可以只校正色彩貼圖文件,而不校正凹凸貼圖,置換貼圖等灰度文件,因?yàn)樗麄兊幕叶缺硎酒渌男畔,如果一刀切的都被壓暗了,模型的凹凸就會不正確了。

不幸的是,SketchUp在設(shè)計之初就根本沒有考慮這個問題,SU根本不是為線性工作流而生的,或者可以說它不是為渲染而生的,我們在SU里找不到一個系統(tǒng)參數(shù),可以調(diào)整全局的圖片gamma,de-gamma操作就變得極為麻煩。

沒辦法了,我們只好使用Photoshop,來給8位圖片de-gamma,比如我們要渲染在如圖所示的藍(lán)綠色房間中,懸掛一幅風(fēng)景畫的效果,那么默認(rèn)直覺化的渲染操作后,我們會得到如下的結(jié)果,風(fēng)景畫和藍(lán)綠色的墻壁著色正確,燈光昏暗過曝(圖30,圖31,圖32):

圖30風(fēng)景畫貼圖

圖31模型場景

圖32,直覺操作后的渲染結(jié)果。注意此時的燈光倍增值已經(jīng)高達(dá)120,然而屋內(nèi)的總體曝光度仍然極其昏暗,但是燈光附近的墻壁已經(jīng)開始過曝了。

那么為了讓燈光的衰減速度變得正常,我們要給現(xiàn)有的渲染數(shù)據(jù)整體施加小于1的編碼gamma,此時全圖都會被提亮,如何施加呢?注意到在Vray的幀緩存窗口左下角有一排按鈕,其中有一個sRGB按鈕,按下去后,就可以預(yù)覽到該圖片數(shù)據(jù)在sRGB空間里的效果。

按下它就相當(dāng)于不施加gamma2.2的曲線了,我們內(nèi)存中存儲的這幅圖,正是sRGB空間的顏色信號組成的,如果線性的顯示出來,少去了2.2gamma壓暗的步驟,就相當(dāng)于整體提亮0.454的gamma。那么視覺效果上,燈光衰減速度會變得正常,而風(fēng)景畫和藍(lán)色墻壁,由于雙重提亮gamma的存在,會比正常情況亮一個層級,看起來顏色就會被沖淡(圖33)。

可以看到墻壁和風(fēng)景畫的顏色都淺了,燈光變得很充足很自然,甚至有點(diǎn)太亮了,我們可以稍微降低一下燈光的倍增值。

那么,如果應(yīng)用線性工作流程,我們應(yīng)該怎么做呢?首先給圖片和墻壁de-gamma,在Photoshop中打開風(fēng)景畫,點(diǎn)擊圖像>調(diào)整>曝光度(圖34):

此時彈出的面板的第三行“灰度系數(shù)校正”就是我們整篇文章在探討的gamma校正。De-gamma是一個壓暗操作,這里向右拖動滑桿,或者直接輸入0.454,就可以給圖片施加一個2.2的壓暗gamma了,這個面板是模擬沖洗照片的gamma校正操作,這里填寫的gamma是告訴計算機(jī)原片的失真gamma,因此計算機(jī)會反向校正數(shù)據(jù),屏幕上填寫的gamma是實(shí)際運(yùn)算公式中g(shù)amma的倒數(shù)。

De-gamma后,圖片會看起來是這樣(圖35):

可以看到,圖片暗了好多,我們把這張圖片保存,替換到場景中(圖36):

OK,圖片de-gamma完成了,藍(lán)綠色的墻如何de-gamma?關(guān)于單一色塊的de-gamma,我一直沒有談,實(shí)際上就是把應(yīng)用在256的灰階上的原理,分別擴(kuò)展到RGB三個通道就對了,我們看一下藍(lán)綠色墻壁的RGB色值:R40,G204,B204。那么需要把RGB三個數(shù)值換算為0,1區(qū)間的小數(shù),再計算它們各自的2.2次方,然后再總體乘以255。以G通道204為例:

經(jīng)過這樣的計算,原來的R40,G204,B204的藍(lán)綠色就變成了R4,G156,B156的暗藍(lán)綠色(圖37)。

這樣我們再次渲染的話,輸入給渲染器的顏色信息就都是線性的了。默認(rèn)渲染結(jié)果如圖(圖38):

所有的顏色所有的燈光都很暗,這是件好事,當(dāng)我們點(diǎn)擊sRGB預(yù)覽按鈕的時候,一切都完美了(圖39):

在此圖中,燈光的衰減速度正常了,風(fēng)景畫和墻面顏色也是我們想要的顏色,只有配景人Susan的衣服和膚色,因?yàn)闆]有事先de-gamma,所以顏色被沖淡了。

至此,我們完成了大部分的線性工作流,但是所有的人都會有一個疑問,如果僅僅調(diào)整一幅圖,一面墻都這么麻煩,那么這個方法在實(shí)際應(yīng)用中,豈不是沒有意義了嗎?是這樣,缺點(diǎn)不僅僅是麻煩,這種事先使用Photoshop為8位圖片de-gamma的操作,還有一個副作用,就是顏色丟失(圖40):

可以看到在使用曝光度工具de-gamma以后,圖片的暗部變得死黑一片,直方圖右側(cè)對應(yīng)的而高光區(qū)則出現(xiàn)了色階跳躍,這很好理解,因?yàn)樗械臄?shù)據(jù)都被壓暗了,那么由于前后都是僅有256個灰階的8位圖片,勢必造成de-gamma圖片在四舍五入后要丟掉暗部的一些信息,而亮部卻沒有足夠的信息補(bǔ)充進(jìn)來,造成亮部信息直方圖離散分布。直方圖上清晰地表明了這些:暗部每隔幾個灰階就有一條比周邊高約一倍的信息,這就是壓縮四舍五入后和鄰近色階合并,數(shù)量翻倍的結(jié)果;而高光區(qū)因?yàn)閿?shù)據(jù)不足則拉開了空白。通常來講8位圖片轉(zhuǎn)化成2.2校正后的8位圖片,顏色灰階要由256減低到190左右,灰階信息損失高達(dá)25%。

而且還有一個很麻煩的問題是:如果這樣執(zhí)行線性工作流,我在建模階段的貼圖以及從調(diào)色板里吸取的顏色,必須全是偏暗的,那么我很難直接在軟件窗口內(nèi)看到正常的效果,這對設(shè)計流程來說,是不可容忍的障礙(圖38)。

那么經(jīng)過以上的論述,我們似乎可以放棄在Vray for SketchUp中執(zhí)行線性工作流了?常規(guī)的解決方式既麻煩又有瑕疵,真的是很難把這條路走下去。有沒有好的辦法,可以讓我們接近直覺化的操作,建模,貼圖,上色,所見即所得的獲取渲染結(jié)果呢?

我猜你也知道,如果沒有這個辦法,我是不敢寫這篇文章的。好吧,不賣關(guān)子了,在Vray插件中有一個面板,是專門控制計算結(jié)果的校正和輸出的,它就是Color Mapping面板(圖41):

這個面板的Type一欄,有著各種函數(shù)算法,用來控制輸入數(shù)據(jù)到輸出數(shù)據(jù)的映射關(guān)系,那么在Type一欄里的若干函數(shù),有好幾個專門被設(shè)計用來糾正早期非線性工作流程所造成的燈光衰減過快的問題(比如Exponential ,HSV Exponential,Gamma Correction),只可惜它們的入手點(diǎn)都錯了,我們現(xiàn)在都明白了,計算的錯誤是從圖片導(dǎo)入的一瞬間就產(chǎn)生了,拿著一個錯誤的結(jié)果再怎么修正,也不可能得到正確的結(jié)果,只能錯上加錯。

那么我們選擇哪個函數(shù)來修正輸入/輸出呢?答案是:Linear Multiply,即中文版的“線性曝光”,在默認(rèn)情況下,線性曝光映射是寬容度最低的,非常容易過曝,但是線性曝光意味著我們不對輸入結(jié)果進(jìn)行任何的gamma校正,也就保證了在渲染軟件中,是100%的線性計算,數(shù)據(jù)沒有提亮或者壓暗的失真。為了嚴(yán)格的保證這一點(diǎn),必須同時把Bright Multiplier(亮部倍增)和Dark Multiplier(暗部倍增)都調(diào)成1。才是真正的純天然線性工作流。

那么面板的第三行有一個Gamma(2.2)右邊還有一個Input Gamma(2.2)這是什么意思呢?

左邊的2.2,代表你的顯示器的解碼gamma值,如果你的顯示器是主流的國際標(biāo)準(zhǔn)顯示器,那么這里要填寫2.2,沒有問題。

右邊的這個則是輸入信息所經(jīng)歷的“gamma校正”,注意這里有一點(diǎn)容易困惑,在行業(yè)里提到“gamma校正”這個術(shù)語,通常是指輸出值右上角gamma的倒數(shù),因此一個被2.2“gamma校正”過的圖片,其實(shí)就是編碼gamma為0.454提亮過的圖片。

當(dāng)左邊的顯示器gamma等于右邊的輸入圖片的“gamma校正值”的時候,你將會在渲染結(jié)果中看到所見即所得的圖片,也就是大家每天渲染的時候看到的情況,給模型貼上任何貼圖,渲染出來顏色還是正常的(只不過此時光線衰減快)。

最有意思的一步來了,我給右邊的Input Gamma多乘一個2.2,即填寫4.84,在默認(rèn)渲染的情況下,你會發(fā)現(xiàn)所有的圖片顏色以及從調(diào)色板里吸取的都被壓暗了。這是因?yàn)槲移垓_了Vray,讓它誤以為我們的圖片的編碼gamma是1/4.84,由于我們在顯示器gamma那一欄,已經(jīng)告訴Vray顯示器的gamma是2.2,為了彌補(bǔ)2.2和4.84的差距,Vray幫我們對8位圖片和8位調(diào)色板進(jìn)行了大小為2.2的gamma校正,而這一步操作,正相當(dāng)于de-gamma。(本來這兩個參數(shù),是為了彌補(bǔ)編碼gamma和解碼gamma的差距,保證圖片正常顯示的,比如你的顯示器gamma是2.5,圖片編碼“gamma校正”值是2.3,你只要在左邊填2.5,右邊填2.3就對了)

通過這種歪門邪道的方式,我實(shí)現(xiàn)了利用軟件參數(shù),輕松de-gamma的目的,要注意的是,此時Color Mapping面板里Correct LDR Textures和Correct RGB Colors必須勾選,這兩個參數(shù)是和Input Gamma關(guān)聯(lián)的,4.84就是用來校正LDR貼圖和RGB調(diào)色板的。這里面“LDR Textures”其實(shí)是“Low Dynamic Range Textures”(低動態(tài)貼圖)如果說我們知道32位圖片是HDRi圖片(High Dynamic Range image),那么這個LDR,其實(shí)就是8位圖、16位圖啊。右邊這個RGB顏色,就是指灰階256的8位彩色調(diào)色板。

那么總結(jié)一下基本上是這樣(圖42):

其中右下角的Linear Workflow表面上看是線性工作流,但是這個參數(shù)的目的是快速的把過去一些沒有按照線性工作流程制作的老場景迅速的改成線性工作流,在3ds Max中,它會有選擇的校正貼圖紋理而不校正凹凸貼圖等,還是可堪一用,但是在SketchUp中這個參數(shù)似乎不太好用,畢竟SU里沒有相關(guān)的系統(tǒng)參數(shù)與之對應(yīng),所以這個參數(shù)似乎就失效了。而且在線性工作流普及以后,de-gamma的設(shè)定是由你自己控制的,這個快捷選項(xiàng)也是不對3ds Max用戶推薦的。

而中間的Clamp Output千萬不要勾,如果勾選了,就會損失掉高動態(tài)的Super White信息,這些信息是非常有用的,有了它們你就可以把過曝區(qū)域的細(xì)節(jié)信息找回來,勾選的話,過曝區(qū)域就只有大小為255的純白色了。到時候就回天乏術(shù)了。

那么經(jīng)過這樣的設(shè)定以后,我們再來看一下圖31的場景(圖43):

可以看到場景的顏色和參數(shù)設(shè)定,顏色是符合設(shè)計直覺的直觀的顏色,參數(shù)則是使用了線性工作流設(shè)定,默認(rèn)渲染結(jié)果如下(圖44):

好黑,真心有點(diǎn)嚇人。點(diǎn)擊左下角sRGB按鈕(圖45):

完美。

光線衰減速度:正常。圖片的著色:正常。Susan衣服的顏色,墻壁的顏色均正常。而且由于是內(nèi)部參數(shù)計算,gamma被抵消,圖片并沒有丟失任何的顏色層次。

那么最后的一個問題就是:怎么保存這個正常的結(jié)果?

如果我們在這個面板下直接保存8位BMP或者PNG,你得到的還是和圖45一樣的結(jié)果,因?yàn)閟RGB按鈕只提供了預(yù)覽功能,并沒有把0.454的gamma編碼進(jìn)去。

那么在這里,我們要么保存*.exr,要么保存*.hdr,exr模型空白處有透明像素,類比8位格式PNG圖片,hdr則會保留背景的super white信息,類比BMP格式。

那么保存出來的高動態(tài)圖片如何拍平成8位圖片呢?用Photoshop打開*.exr或*.hdr(圖46):

點(diǎn)擊圖像>模式>把32位勾選為8位,會彈出如圖所示的對話框,點(diǎn)擊“合并”。

又會彈出如圖所示的對話框(圖47):

這時候你的圖片會整體變色,這是因?yàn)槭褂昧司植窟m應(yīng)的算法,進(jìn)行了HDR采樣,這個時候我們不需要任何的重采樣,直接把方法由“局部適應(yīng)”改成“曝光度灰度系數(shù)”,這時候顏色又回來了,然后點(diǎn)擊確定,保存,我們的圖片就被采樣為8位了。

至此,在Vray for SketchUp中的線性工作流程全部講解完畢。

由于使用了歪門邪道的“欺騙Vray”的方式,所以這絕對不是正確的線性工作流程,只不過由于SketchUp沒有系統(tǒng)gamma參數(shù),才不得已而為之,更不要把這個方法使用到3ds Max和Maya等軟件當(dāng)中去,它們有更成熟和完美的線性工作流程有待大家去研究。從實(shí)際效果上來看,在SketchUp中這樣做已經(jīng)能滿足大部分的室內(nèi)渲染的需要了,但是有兩個問題,是我沒有解決的:

1. 在最后提亮全部場景的時候,Vray背景貼圖會被一起提亮,相應(yīng)的反射也是被沖淡的,背景的de-gamma,我沒有找到好的辦法,但是大部分情況我們是要換背景的,所以暫時湊合。
2. 另外我不知道這個全局de-gamma會不會影響凹凸貼圖和置換貼圖等灰度控制圖,據(jù)我的測試似乎沒有影響,但又不知道確切的結(jié)果。

總之,我認(rèn)為這個在Vray for SketchUp中的線性工作流,是一個能適應(yīng)大部分常規(guī)建筑學(xué)生出圖需要的工作流程,能夠解決燈光偏暗這個非常令人頭疼的問題,至于凹凸,反射環(huán)境等細(xì)微的問題,本來就不是SketchUp的強(qiáng)項(xiàng),如果你追求照片級渲染,那么我推薦你用3ds Max和Maya。如果是常規(guī)的方案表達(dá),我覺得目前為止的實(shí)驗(yàn)成果,可堪一用。更重要的,是對理論的理解。

最后要強(qiáng)調(diào)的兩點(diǎn)是:不是說線性工作流就是對的,室外渲染可以使用默認(rèn)工作流程,不要用線性工作流。另外如果4.84以后貼圖的飽和度過大,可以嘗試4,3.8這樣的折中數(shù)值。

歡迎以各種渠道聯(lián)系我,和我來討論這個話題。

注1:相信你會理解這個簡單的等效:相對面積較小的開窗洞口,等效于一個面狀光源。

注2:你也許覺得圖2的光感沒有什么奇怪的地方,那是因?yàn)槟忝看问褂娩秩酒鞔驘,都會得到這樣的結(jié)果,你已經(jīng)見怪不怪了,抬頭望望你周遭的環(huán)境,光線的分布絕對比圖2要均勻,柔和的多,房間的每一個角落都是亮堂堂的,主光源也不會像圖2這么刺眼,感受到了嗎?

注3:直覺反應(yīng)指是每個人在得不到指導(dǎo)時候的軟件使用方式,當(dāng)我們用軟件的時候,自己按照正常思維最容易采取的操作方案,稱為直覺反應(yīng)。很多人在使用Vray for SketchUp時最常見的直覺反應(yīng)之一是:簡單的認(rèn)為渲染軟件就是打開默認(rèn)的陽光系統(tǒng),然后把相應(yīng)的物體附上相應(yīng)的官方預(yù)設(shè)材質(zhì),再用官方的預(yù)設(shè)參數(shù)去渲染,這樣一來,如果沒有材質(zhì)庫或是參數(shù)庫就會感到寸步難行,圖紙的質(zhì)量和渲染時間也完全處于聽天由命的狀態(tài)。

注4:其實(shí)連這個辦法都不是每個人都能總結(jié)出來的,但是這個思路非常重要,是開篇的案例能夠被挽救的核心方法。由于在窗口過曝之前及時收手,保存了較暗的渲染結(jié)果,才保留了高光區(qū)周邊的數(shù)據(jù),給后期留下提亮修復(fù)的空間。而現(xiàn)實(shí)中大部分人為了得到正常的曝光,是不得不放棄掉高光區(qū)的細(xì)節(jié)數(shù)據(jù)的,所有人都會直覺化的被迫渲染一張過曝的圖片,而這種圖片是很難后期挽救的,因?yàn)楦吖鈪^(qū)細(xì)節(jié)已經(jīng)純白一片。而且這個方法有一個解決不了的弊端,你仔細(xì)看的話,在圖片的暗部色階過渡跳躍非?欤珘K之間有很明顯的分縫,這是因?yàn)樵瓉韴D紙的暗部原本就沒有這么多信息,被提亮以后,暗部階梯的差距被進(jìn)一步拉大,形成很容易被眼睛察覺到的色階。


超精細(xì)女神制作教程 超精細(xì)女神制作教程

朱峰社區(qū)網(wǎng)頁版
朱峰社區(qū)網(wǎng)頁版(手機(jī)掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請查看版權(quán)規(guī)則。本平臺提供圖文僅可用于個人學(xué)習(xí),如用于商業(yè)請購買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

Yia

Yia

VIP終身

什么鬼? 最近怎么這么多什么sketchup的low文
昂~~ -Yia

贊0

踩0

17年6月21日

2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點(diǎn)擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點(diǎn)擊您的鏈接,您需要需刷新一下才行;同一個好友僅能點(diǎn)擊一次。
購買VIP,觀看所有收費(fèi)教程。