是這樣的,在上一篇寫使用xpExplosiaFX製作煙霧流體方塊的文章時,當時其實在最後渲染出圖的時候我遇到了一個問題:
大家可以看到,我在C4D裡用OC渲染出圖然後再導入AE打算進行簡單的後期調整的時候,顏色明顯的變暗了許多。
當時由於趕著發文,我和苦七一起測試了半天總算是把問題解決了:
不過背後的原因其實我自己是一知半解的,於是最近這幾天一直在研究這個問題。
一方面發現是自己給自己挖了個坑,前一段時間寫的關於OC保存方面的內容有些細節沒說清楚:
另外一方面牽扯到一個我聽說過但是一直沒有認真學習過的內容:線性工作流。
為此我在網上查看了不少的內容,這裡給大家推薦幾個我覺得講解的挺好的內容:
線性工作流其實是一個很專業的話題,網上也有很大專業人士做了大量的講解。
所以我今天打算用自己的理解分享一下線性工作流,順便把自己之前關於OC保存內容中挖的坑給填了。
其中某些說法可能不夠嚴謹,但是我覺得可能會更有助於我們理解。
不同的軟體、不同的渲染器它的線性工作流程在操作上是有區別的,今天主要分享的是關於OC的線性工作流。
我們平常可能並沒有太在意過它也能做出圖,這個主要得益於軟體的智能化。
但是當我們在作圖過程中遇到問題的時候,知道一些關於線性工作流的基本原理,會更幫助我們更有針對性的去解決問題。
關於線性工作流的原理以及好處大家除了可以看看上面我推薦的幾個視頻以外,也可以查看苦七翻譯的OC官方幫助手冊:
開始之前我們先說一個很重要的概念叫做伽馬矯正。
我這裡用不太準確、嚴謹的例子來說明一下:如圖所示,我在OC設置裡面把響應改為線性的,伽馬值改為1。
渲染器在處理圖像的時候模擬真實場景是以數學層面的正確性來進行是線性計算的,而我們人眼對光線,顏色和色調的感知是非線性的。
因此如果線性數據直接傳遞到我們的眼睛裡可能就會產生亮度的認知錯誤,就好像這張圖感覺總體看起來飽和度偏高畫面偏暗:
並且如果直接將渲染器線性計算的結果以線性的格式輸出(例如32位每通道的EXR/HDRI/TIFF),雖然後期可操控性更大,但是佔用硬碟的空間太大。
因此我們通常會將線性數據以非線性的格式輸出(例如8位每通道的JPG/PNG/BMP),這樣雖然後期可控性變小了,但是佔用硬碟空間也變小了。
然而我們都知道32位每通道所包含的色彩信息是遠遠大於8位每通道的,因此默認情況下在導出的時候會自動嵌入一個叫做sRGB的色彩空間,對圖片進行了一次伽馬矯正,這個結果類似於我們將OC設置裡的伽馬值設置為2.2。
需要注意的是,當我們儲存的是非32位每通道的圖片數據的時候才會進行伽馬矯正:
而我們的顯示器也是非線性顯示的,它會以一個下壓的伽馬曲線來對圖片進行處理,兩個伽馬值相互抵消最終伽馬數值等於1。
我這裡用C4D默認保存的方式來給大家舉例說明一下,我在OC設置裡把伽馬值改為1,保存格式為8位每通道的PNG格式,然後C4D默認渲染輸出的時候分別選擇嵌入sRGB和線性。
這個時候保存出來的兩張PNG圖都會默認被sRGB提亮只是我們看不到:
而當保存到電腦中以後,顯示器再用一條下壓的伽馬曲線抵消掉sRGB,因此我們在圖片查看器中看到的兩張圖和渲染預覽框裡的圖是一樣的:
但是當我們將這兩張圖都導入AE以後,你會發現線性的這張圖變得更暗了。
這是由於AE默認線性圖也是被sRGB提亮過的,所以它又給了線性圖一個下壓的曲線,所以這樣看起來就會更暗:
因此我們需要在項目設置-顏色設置裡將工作空間選擇為sRGB,同時勾選線性工作空間,這樣顏色就矯正回來了:
以上的描述就是電腦對於伽馬矯正的全過程,下面再來說說我給自己埋的坑。
因為我向來比較喜歡一波流,所以當時文章中的建議是使用OC渲染的時候,直接通過OC渲染通道面板保存:
首先是OC渲染通道這裡保存對PNG格式支持不是很好,舉例說明OC設置裡為線性,伽馬值為1:
渲染輸出以後你會明顯看到被sRGB提亮了的效果:
但是導入AE以後,同樣AE會默認抵消伽馬,所以顏色就又還原回來了,並且用OC渲染通道保存出來的PNG圖片,解釋素材中的許多選項都是不可用的:
那麼OC渲染通道裡就沒辦法保存PNG格式了麼,其實也不是,這裡有兩個重要的參數沒有給大家解釋清楚,一個是Image color profile(顏色配置文件),一個是Tonemap type(色調映射類型)。
顏色配置文件決定著導出的圖是否嵌入sRGB,而色調映射類型決定著你實際導出圖片用的什麼映射類型:
我這裡用一個比較極端的參數,將伽馬值改為0.1,然後顏色配置文件以及色調映射類型都為線性渲染出圖:
你會發現圖片查看器看到的以及導入AE以後的結果,仍然是和之前伽馬1的結果一模一樣:
這是由於雖然我們的渲染設置裡伽馬值設置為了0.1,但是色調映射類型我們選擇的是線性的,所以相當於又被強制設置為了伽馬值為1,因此我們需要將色調映射類型選擇為色調映射:
這個時候導入AE的顏色就是和渲染預覽框的顏色是一致的了,不過圖片查看器裡的顏色仍然是提亮過後的顏色:
OC渲染通道在渲染PNG的時候和C4D默認保存不一樣,需要嵌入sRGB:
這樣渲染預覽窗、圖片查看器以及AE導入後的顯示才是一致的:
因此總結一句話,當你想要使用OC渲染通道一波流的話,請將顏色配置文件選擇為sRGB,同時將色調映射類型選擇為色調映射。
當然也有鹿友反饋沒有辦法使用OC一波流的情況,這個我確實不清楚是不是BUG的原因,我這裡測試渲染確實是可以的。
所以如果你真的無法OC一波流的話,就在C4D默認保存裡設置吧,畢竟我剛才也提到了,OC渲染出來的PNG格式其實是有問題的:
說完了伽馬矯正,把我之前對於OC渲染通道保存的坑填了,最後我們再來說說線性工作流。
線性工作流其實可以大體分為導入端和導出端,對於導入端,前面我們也說了,8位每通道的圖片是被sRGB提亮過的,所以直接將一個提亮過的貼圖導入到一個線性工作流的環境肯定是會出問題的。
OC這一點非常的智能,當我們將一個8位每通道的貼圖導入進來以後,會自動給一個伽馬值為2.2的顏色校正,壓暗圖片:
但是當我們導入的是一個32位每通道的EXR線性圖片的時候,OC也會自動壓暗:
另外當我們導入的是一個灰度信息的貼圖例如凹凸、置換、粗糙度等,也是不需要將伽馬值改為2.2的:
導出端我們只需要將格式改為32位每通道的exr線性格式,顏色配置文件以及色調映射默認線性即可:
另外我看到有些教程說的需要在OC主要面板裡把浮點映射改為浮點線性,我測試的結果是改與不改對渲染導出的圖片都沒有影響:
最後我們再來總結一下OC線性工作流的完整流程:
1、首先將OC設置裡響應改為線性,伽馬值2.2。
2、對於導入的貼圖是8位非線性有顏色的圖片,默認伽馬校正數值2.2,對於導入的是32位線性圖片或者灰度信息的圖片請將伽馬值改為1。
3、渲染輸出保存為32位每通道的線性格式例如EXR,顏色配置文件以及色調映射默認線性。
4、以32位線性圖片在後期軟體例如AE中進行處理,然後最終導出一個sRGB的非線性圖片。
今天的內容其實我寫了很久,改了又刪,刪了又改,也是希望儘量做到準確,可能當中還是有不嚴謹的地方。
希望能給大家有所幫助,也歡迎大家下來找我探討一起提高。
好啦,今天的內容就到這裡,想要原視頻的童鞋後臺撩我獲取吧!
更多內容歡迎關注公眾號:
本文由「野鹿志」發布
轉載前請聯繫馬鹿野郎
私轉必究