200912181738[CG]TGA還是PNG, 都是 Color Bit Depth惹出來的

說到這個TGA還是PNG,其實也不是什麼太嚴肅的話題,所謂青菜蘿蔔各有所好,不過在仔細的探究一下Color Bit Depth之後,會發現,其實PNG是有他的一個優勢在, 所以,最近我才會開始喜歡使用png來作後製的工作.

先說在前頭,我並不是學理論出身的,而這一篇牽扯到一些理論...大部分的理論知識我都是從書上或是網路上看來的,可是這些資訊來源很大一部份是英文的,我的英文也是菜菜的,所以可能會有些誤解的地方,不過,如果可以實作證明的,我會盡量實作解釋,如果有發現什麼不對的,也請回應指正.

Color Bit Depth是怎麼回事,照字直翻就是色彩的位元深度,其數值大多會以2的次方值來作表現,比如說常聽說的 8bits color, 24bits color等, 8bits color就是2的8次方,也就是256色,而24bits color也就是常說的全彩,2的24次方,顏色就高達16777216,一千六百七十幾萬色,就一般螢幕顯色而言,也就是這樣了,再高,人類的眼睛也分辨不出來.

但是,這不是我們現在要看的,我們要看的是每一個Channel 的色彩深度,以24bits color的圖檔來說,便是RGB 8 bits/channel,每一個圖素的顏色值,都是由0~255的RGB值所組成的,像我們在PhotoShop中調整顏色時,便可以看到,RGB值僅有0~255的變化



而tga檔主要有兩種常用的色彩模式, 一個是24bits與32bits,這兩種模式就RGB而言,並無不同,主要是32位元模式比24位元多了一個8bits的alpha channel.
至於png的色彩模式就寬多了,就RGB而言,除了常用的24bit以外,還有個48bits顏色,也就是RGB各為16bits/channel,還可以額外再加入一個也是16bits的alpha channel,這使得png檔在進行後製作色彩調整時可以有更高的寬容度與正確性.

這樣用講的可能很多人還是會不明白兩者之間的差別,接下來我們實際作一個簡單的例子,這樣就可以知道為什麼我會覺得用png會比用tga來的好了.

首先,先到MAX來作個簡單的場景



茶壺用內定的灰白色材質便可,地板設個Checker的黑白方塊,並將Specular Level調高一些,就調到90好了.
而燈光的設定中,將Multiplier設為5,並且將Decay設為Inverse Square,調一下Start的位置

Render出來的圖是這樣

在MAX中所Render出來的圖檔是64bits的,也就是說包含Alpha channel再內的RGBA四個Channel都是16bits,
從哪裡可以得知呢,在MAX render出來的圖上,按著滑鼠右鍵不放,便會出現影像資訊的圖框,同時滑鼠的位置會變成吸管的樣式,這時移動吸管,影像資訊圖框的內容就會變成吸管所指定的像素的內容,比如說我們把吸管移至白色的地方,就會出現這樣的內容

上面就很清楚的說明此圖為 64bits [RGBA] ,而且下格的RGB色彩值均為最高的65535,如果這是24bits的圖的話,色彩值就只會到255而已了.

這張圖分別存成兩種格式,當然,一種是tga檔,另一種就是png檔了
在存成tga檔時,記得選32bit模式,這樣才會將alpha channel存進來,取檔名叫8bit_tga

存png檔的時候選的是48bit模式,而且要記得把Alpha channel打勾, 取檔名叫16bit_png

將兩個檔案都存入完畢後,我們在到Combustion中將兩個檔案都打開

透過開關圖層,我們可以對兩張圖作一個比較,在螢幕上看起來,兩張圖實際上是沒有什麼差別的,主要是因為我們的螢幕顯色最高不過是24bit而已,剛好跟tga的顯色程度一樣,而png因為高達48bit,已經超過螢幕顯色範圍了,經過降色顯示後,就跟tga檔一樣,沒有什麼分別了.
這樣是不是表示tga跟png沒有什麼差別呢,不,接下來的才是重點了

回到MAX,將燈光的Multiplier調至0.5

Render出來結果便成這樣



這一張圖黑到一個不行,只有光源處還有一點小小的亮處
可是當我們檢視畫面影像資訊的時候,便可以發現,雖然畫面上看起來是黑的,可是在原本有亮一點的位置,其RGB值也還沒有到全黑的程度.
好了,接下來該把這張圖存檔了,一樣分別存成tga,png檔,可以直接把剛剛作的圖給覆蓋掉沒關係.,存好後,一樣到Combustion中將圖檔叫出來.

叫進來後我們在兩個圖層加上Gamma/Pedestal/Gain的Operator

調整Gain值到最高,如果覺得還不夠亮也可以調一下Gamma值,我只把Gamma調到2,出來的結果是這樣,
先來看TGA
直接擷取畫面來看


這個結果大家應該也滿常看到了,整個都是鋸齒狀的雜點,感覺好像便成縮成256色後的樣子,像這種品質的圖檔,根本沒有辦法拿他來作任何事,只能丟到資源回收桶,重新作圖罷了.
可是來看看png檔,相同的設定,出來以後哩


看吧,還是維持著一個相當不錯的漸層,這張圖我可沒有作模糊化處理呦

為什麼呢,因為tga檔中的像素點,每一個channel都只有少少的256階顏色,在作這種大幅度的色階調整時,每個channel 的顏色資訊不足,無法配合數值的調整,作出來後,反而像這樣降色階的感覺了.
而png檔咧,每一個channel都有多達65536階的顏色可以調配,也因此在作大幅度色階調整時,很容易就可以找到符合的顏色階層來顯示.
雖然是這麼說,不過,如果原本就是光線沒有照到的地方,再怎麼調整也沒有用了,因為他原本的值就已經是0了,

過暗的圖可以這樣調,那過亮的圖還有沒有救哩,
我們來試試看,回到MAX,將燈光的Multiplier 調至50,夠曝了吧,Render出來的結果是這樣


在影像資訊中可以查的到,曝掉的亮面值已經全部都是65535了,也就是紀錄下來的就已經是純白色了,理論上,這白色再怎麼調也不會有什麼色階出現的,把這張圖檔存成png叫入Combustion中試試,果然不出所料,曝掉的圖,就算是png檔有著48bit的色階,也是沒有用了.

真是如此嗎,其實還有一種圖檔格式有機會可以調整過曝的圖,那就是MAX跟Combustion的好麻吉,rpf檔

rpf有什麼能耐可以處理這種曝掉的圖,重點是rpf檔中,每一個channel居然可以高達32bit的浮點值,這實在是非常驚人的數值,廢話不多說,趕緊來試試看.

從render出來的視窗上按下存檔鍵,選擇rpf檔,出現設定視窗


看到沒有,可以選擇Bits per channel 32,Floating Point,趕緊按下確定,再到Combustion中來調整看看.
如果真的是這樣作的話,出來的結果一定令人大失所望,因為rpf的像素色階值
已經超過螢幕畫面所能記憶的值了,render出來的視窗畫面僅能紀錄最高每個channel16bit而已,所以雖然我們存的是32bit,可是實際上的內容卻只是16bit而已,這樣出來的結果跟png沒有什麼不同.

那要如何才能夠存到真正的 32bir/Channel呢,其實很簡單,在Render設定視窗中,先設定存檔就可以了


這樣存出來的才是貨真價實的32bir/Channel

換到Combustion中來載入rpf了,一樣,加上個Gamma/Pedestal/Gain的Operator,往下調整Gain值,這時候你就會發現很神奇的事,原本曝掉的白色部分,這黑白格子的顏色居然出現了.
記不記得剛剛調的燈光的值,原本Multiplier的值是5,後來我們調成50,也就是說原本的值是現在的值的1/10,所以,如果我把gain值設為0.1的時候.....
結果,兩張圖示幾乎一模一樣了,這個rpf檔夠厲害吧.

其實這個要用什麼樣的格式,真的是端看個人的需求,rpf檔先不管,雖然很好用,可是檔案大小實在是太大了,一般我們在render的時候應該也很少會去做到過曝的情形 ,如果必須要有的話,也可以作暗一點,在利用png檔來調亮,這樣細節也比較容易保存下來.

 

 

回應
累積 | 今日
loading......
    沒有新回應!
ClustrMaps
零戰嗜好模型製作過程週刊零戰金屬模型DeAGOSTINIZero Fighter紙模型CG3DHalinski旅遊ZeroFighterMAX貞貞博物館台南教學海邊展覽場景教程集集收藏製作教學溫泉明信片咖啡高雄氣象氣象觀測站盆栽國際明信片交換東埔Postcrossing動畫孔廟水里科學Combustion鶯歌特效Mentalray外掛墾丁親子休閒陶瓷博物館GPMmore
我的Face Book
google提供的廣告
猴猴