特效產業裡的色彩管理 - 第一章: 總論
- 顏色如何在後製階段中流動
在特效產業裡其實有不少從業人員不怎麼熟悉色彩管理。講白了,根本就是怕爆,連怎麼開始了解色彩這件事都不知道如何起頭,也不知道為何顏色總是不一樣,所以也就只能在未經色彩統一的情況下強行將顏色修正至一致。
了解色彩是在製作特效的過程中至關重要卻也是極為容易被忽略的部分。一個健全色彩管理的工作流程會讓大家工作效率加倍,並且避免掉事後回頭修改的困難度;而未經統一工作流程有極大的可能讓工作事半功倍。在我們正式開始之前呢,避免還是會有一些基本觀念被誤解或是不熟悉的情況,我做一些簡單的回顧。
在此篇只會提及一般使用的線性以及ACES工作流程的色彩管理,並不會討論到ACES的細節,請放心閱讀。
什麼是色彩空間?
色彩空間主要由三個要素構成: 伽馬(Gamma)、色域(Gamut)和白點(White Point)。
Gamma是用來編碼和解碼照度(Illuminance)的一種非線性曲線,而這種非線性的特性緣由自人眼如何感受光和顏色;gamut是由三原色(primaries):紅、綠和藍來定義出一個三角空間;而除了gamma和gamut,我們還需要定義出此空間的哪一點為最亮、最白的一點,也就是white point,來源是由於太陽光在不同的時間點有不同的色溫。
根據不同的目的、環境明暗等情境,每個色彩空間有自己對於gamma、gamut和white point有不同的定義。以上圖sRGB為例:
Gamut::sRGB的紅、綠、藍三原色分別位於圖中三角形各頂點,而此gamut也來自於電視專用色彩空間Rec.709的gamut,為早期CRT電視中磷光體塗料所能呈現的顏色範圍。
Gamma:CRT電視的物理特性為輸入電壓產生的亮度並非線性,而是以2.2的降冪曲線呈現,此為Rec.709的gamma曲線,sRGB承襲自此,但加入部分線性,因此與Rec.709的gamma稍有不同。
White Point:sRGB使用的white point是標準光源的D65,即為近似Daylight 6500K。
跟特效製作有甚麼關係?
我們先來聊聊為什麼每次處理非線性的素材都要先經過gamma校正。
以上圖為例,我們都知道現實世界的顏色都是以線性為運算法則,因此如果我們要把在sRGB下0.5的灰色亮度提高兩倍,就必須先校正成線性,也就是0.5校正成0.18後才能乘上2變成0.36,再將數值轉換成sRGB非線性下的數值0.63。
但如果沒有經過gamma校正直接進行亮度調整呢?把0.5直接提高兩倍變成1,在上圖左圖中我們就會看到板子中間的灰色區域會變成和板子右邊的白色相同亮度,但是在現實中我們用眼睛看灰色區域的亮度怎麼樣都不會跟板子右邊的白色一樣亮。特效產業製作的要點是真實,那這種方式的製作顯然不符合這個目的。
再來談談gamut,這是另一個容易被忽略的「為什麼顏色不一樣?」原因。舉個例來說,sRGB的紅色在軟體中為(1,0,0),而ACEScg的紅色在軟體中也是(1,0,0),因此會造成sRGB的紅色很明顯並不等於ACEScg的紅色,但是兩者的數值在軟體中卻相同,如果沒有經過適當的轉換會造成製作中或算出來的結果顏色會不符合真實狀況。
好的,所以我們知道了在特效製作中需要特別注意的兩件事:
- 將所有物件都轉為線性
- 確認所有素材是同樣的gamut和一樣的white point
不同的線性流程
在ACES成為主流前,對於色彩管理最基本的概念就是保持colorspace在每一個階段的一致性。
在以往的特效產業的線性工作流程中,最常使用的colorspace為linear-sRGB。對於CG端來說,必須先將sRGB的素材做gamma校正使其為linear-sRGB後才能將這些素材進行3D運算;而matte painter除非有Log的素材、或是有需要有高動態範圍的需求,非大型製作一般在sRGB即可應付多數情況,詳細的內容改天再寫一篇新的吧。至於在合成部分,確保合成師們能夠正確的轉換log拍攝素材至linear-sRGB,且接手CG的AOV理應為linear-sRGB,以及讀取的素材也都需校正至linear-sRGB,不外乎就是上述所說:保持colorspace在每個階段的一致性,而linear也會讓軟體的運算相對正確。
談到ACES。我認為ACES與以往的線性流程並沒有觀念上的差異,仍然為了色彩統一。但說白了由於傳統的線性流程需要對於色彩理論、影視產業在製作上的歷史發展、製作上的各階段,以及軟體技術尚有全盤性的了解才較能做到色彩管理的一致,且即使了解也需要在不同的色彩定義中不斷轉換,很容易造成混淆。而ACES的優勢在於除了它對於整個流程從input到output有很明確的規範、允許高動態範圍和廣色域並支援市面多數攝影廠商的色彩空間,詳情就不在本篇贅述,之後再開篇新文章聊聊ACES。
sRGB vs ACES
既然傳統的linear-sRGB線性流程也已行之有年,那實際上在CG端使用ACES的理由和優勢是什麼?
原因是傳統線性流程的gamut範圍過小,如文章開始的圖,sRGB的gamut只佔了人眼可視範圍的約二分之一,在製作中的gamut也只在sRGB的範圍內的話會有許多超出範圍的顏色被壓回範圍內,這也代表在3D軟體中物件接收和反應光源的像素均會被強制侷限在sRGB小小的三角範圍內。
如下圖,我們可以看到在sRGB的作業環境下高光的部分呈現過曝且過飽和,而在ACES的作業環境下的高光有較漂亮的過度且含有更多細節,相對的看起來也較為真實自然,透過一旁的曲線也可以到看在高光區的曲線較為溫和。
從Chris Brejon的網站我們可以看到更多更詳細的解說. Chris Brejon是一位ACES導師並且撰寫CG攝影CG cinematography。他的文章包含許多理論甚至心理學的部分,需要花點時間閱讀和消化,但相信可以對想了解這塊的人提供許多問題的答案。
這個常看到的人眼可視範圍是由在CIE-XYZ國際規範中描繪色彩模型,並取切面成為我們目前看到的平面圖。上圖左為linear-sRGB運算出來的顏色範圍,如上述所說,所有的顏色均會被侷限在sRGB的gamut內,我們可以看到在雙邊牆上以及球體上的亮部均呈現過曝以及過飽和的情況;反之上圖右從ACES色彩空間中算圖結果顯示在暗部呈現更多細節,在亮部區域,尤其是綠色,有更加自然的過渡。
快速總結一下上面那一小段,如果CG製作人員以linear-sRGB的作業環境工作,運算出來所能呈現的顏色會被限制在sRGB所規範的gamut裡;而在ACES的流程中,因為有較廣的gamut以及高動態範圍,因此算圖結果會看起來更加真實。
拍攝端的ACES
我們介紹了傳統的linear-sRGB流程、ACES流程,也帶到了基本概念對於CG為何建議使用ACES系統。現在我們回過頭來講講拍攝的部分。
同樣的,這裏我們只談拍攝端與ACES的關係如何影響在特效上的製作。
我們都曉得市面上有許多專業的電影級攝影機,且每個攝影機製造商都有自己開發的函數(log)以及gamut,而在傳統的linear-sRGB流程中我們需要自行對這些素材各別定義顏色才能轉換至統一的色彩空間進而與其他同樣設定的素材有較精準的運算。
這裏就是許多製作人員栽頭的地方,我們怎麼知道素材被正確解讀?我們怎麼知道我們看到的顏色是哪個色彩空間的顏色?為了能夠控管顏色,了解與掌握拍攝素材的資訊就很重要了。以下我們一樣以Alexa LogC作為範例如何將檔案本身的色彩空間轉換至製作用的色彩空間。
- Gamma校正:通常處理拍攝素材的軟體,都有內建這些攝影機製造商的型號所對應的1D LUT,透過這些1D LUT將帶有LOG函數的素材校正至線性。也就是Alexa LogC轉換至linear。
- Gamut轉換:除了LOG函數,每家製造商也會有自己的gamut。Alexa的gamut為Alexa Wide Gamut(AWG),而我們傳統製作用的色彩空間為linear-sRGB。
許多製作人員常常忽略了或不了解第二點。如果以合成來說的話,Nuke在轉換gamut這部分並不積極,因此如果不手動轉換gamut的話就等同於我們拿一個linear-AWG的拍攝檔案與其他在linear-sRGB的素材進行製作。雖說,之前許多這樣的流程下一樣結案,客戶也不在意這些事情。但如果我們想要追求更真實的效果、想要知道為什麼我們的CG看起來很假,那了解這些觀念和步驟可以提供很大的幫助。
在ACES的流程中,只要軟體設定好OpenColorIO,在讀取以及定義這些素材時就已經將gamut轉換至ACES,那剩下要做的就是正確的校正gamma曲線使其為linear。再複述一次重點,將不同攝影機帶有有不同gamut的素材,統一轉換至一個廣範圍的ACES gamut,這樣的好處就是不用再多花時間跟功夫手動轉換這些不同設定。
合成端的色彩管理
上面提到ACES在CG裡的概念就不贅述了。如果到目前還跟得上的話,我想這部分是不會太難理解,不過就是一個觀念一直在覆述:保持色彩空間的一致性。
對於合成端的製作人員來說,擁有最大可編輯性的素材就等於是像一個廚師有最大權限可以使用所有高檔食材、設備和調味料,畢竟巧婦難為無米之炊。如果拿到手機拍出來的素材,那合成最多能夠做到的就是將特效做的跟手機拍出來的一樣。
什麼?你問為什麼不做的跟電影等級一樣?不好意思,辦不到。如果拿到的拍攝素材而我們把CG合的跟電影一樣那就是我們合成失職了。
合成端只要確認拍攝素材、CGI和其他的素材是在同一個色彩空間,不管是linear-sRGB還是ACES還是其他,那麼剩下的只需要擔心美感上的問題了。至於實際上在合成軟體裡面的操作步驟就有空再寫吧。
對我來說,色彩管理的課題一直是非常深遠,花了幾年時間了解也才會越知道自己所知甚少且仍在繼續領悟新知識。若本篇有出現錯誤的部分請告知我以方便修正,謝謝。