ACES是什么?第一次有人把它講的這么明了!
?A?站一位法國大神寫的《?ACES?基礎(chǔ)》科普貼。??大神表示這篇?ACES?基礎(chǔ)知識介紹是一次“就連媽媽都能看懂的”科普嘗試,真的這么保姆級別嗎?以下就是完整內(nèi)容!?咱們一起來看!
Mathieu Maurel
3D Generalist
Mathieu Maurel,一位來自法國的3D Generalist,專注于外觀開發(fā)、燈光、渲染和合成方面的技術(shù)研究。
————————————
ACES是當(dāng)下的一個熱詞,藝術(shù)家們可以用它來做出畫面精美的圖像。可它是如何發(fā)揮作用的呢?我們是不是也能用ACES來渲染高質(zhì)量的樂高圖像呢?從理論上來說它并沒有多么復(fù)雜,你只需要了解一些有關(guān)色彩空間的知識就可以了。因此我寫下了這個文檔,嘗試用自己的話來解釋,文中用ACEScg來代替ACES,CG代表的是computer graphics,你們懂得。
1. Linear Workflow(線性工作流程)
在我剛開始學(xué)習(xí)3D的時候,我們一直用的是sRGB渲染,所有紋理、渲染和合成都是sRGB的。后來有一天朋友告訴我,“兄dei,線性工作流程才是王道”,他說的沒錯,ACEScg就是未來的未來式,聽我細(xì)細(xì)說來。
我們屏幕采用的是sRGB模式(至少有99%是吧),也就是色彩配置,我們看到的所有視覺效果(例如視頻、喵星人的gif等)都是如此。而線性工作流程就是說,屏幕是sRGB,但是gamma超級暗(0.45),我們可以通過以相反值(2.2)補償sRGB的gamma drop的方式來進行Linear渲染,得到的效果會更加逼真。這個過程令很多藝術(shù)家汗顏,其實很正常,只是開始不太容易,需要對gamma進行調(diào)整,如果是數(shù)據(jù),紋理就是Raw格式,如果是色彩,就是sRGB。思考一下無論是不是線性流程...都沒關(guān)系,反正大家已經(jīng)知道怎么用了(都知道吧?)。
我們需要明白一個非常重要的事情,Linear并不是色彩空間,它是一個經(jīng)典sRGB模式,只不過被我們修改了gamma曲線,或者再精確點,我們所說的Linear是具有Linear函數(shù)的sRGB色域。因此,計算還是在sRGB中進行,即使在更好的燈光條件下,其余顏色和值也是在sRGB中的(之后會解釋關(guān)于色域、Linear函數(shù)等詞的含義)。
以上這些對于理解 ACEScg的真正革命尤為重要。
2. ACEScg
什么是ACEScg呢?有這么兩個問題,我們的屏幕是sRGB模式,但如果在另一個具有更多色彩的色彩空間中渲染,再回來到sRGB屏幕上正確顯示又會怎樣?為什么要把計算限制在顯示的范圍內(nèi)?這些問題即是有趣的開始。
對于那些很難理解色彩空間的小伙伴來說,想象一下國際象棋棋盤(雖然類比不恰當(dāng),但你還是要跟著我想):sRGB是一個沒有太多正方形的小棋盤,sRGB渲染就相當(dāng)于把棋子放在上面,振幅很小效果也不太好。而在ACEScg中,棋盤大很多,渲染過程有很多方格來放置/移動棋子,效果也比 sRGB模式下的效果好很多。
問題是,我們的貼圖(例如紋理、HDR等)和屏幕都是在sRGB棋盤上的,非要把它們放到ACEScg棋盤上,雖然正方形數(shù)量多了,但不知道該把它們放到哪里(你說sRGB棋盤上的3D knight該放在ACEScg棋盤上的什么位置)?也就是說你不能把sRGB棋盤上的圖像直接放到ACEScg棋盤上,反之亦然。非要這么做的話,就得進行轉(zhuǎn)換,也就是下面要說的IDT和ODT。
IDT = Input Device Transform(在ACEScg中進行的轉(zhuǎn)換的內(nèi)容)
ODT = Output Device Transform(為了適應(yīng)顯示器而產(chǎn)生的結(jié)果)
當(dāng)然中間還有RRT,咱們暫且不論。
3. Transformation(轉(zhuǎn)換)
用一個基礎(chǔ)3D場景舉例(還不錯吧?我自己搭的)。在這個場景中有3種紋理(咱們跳過McBeth,只討論球體):
- light dome的HDR
- 漫反射貼圖
- 粗糙度貼圖
漫反射貼圖是sRGB下的8 bits.jpg格式,粗糙度貼圖是Linear的32 bits .exr格式,HDR貼圖是Linear的32bit.exr格式。如果你還記得我們在第一章線性工作流程中介紹過的,非ACEScg渲染需要把HDR和粗糙度設(shè)為Raw格式(因為是數(shù)據(jù)),但為了避免紋理被沖洗掉,我會將漫反射設(shè)置為sRGB模式(或gammaCorrect值為0.455,效果幾乎相同)。
這樣的設(shè)置與ACEScg幾乎相同,但還存在一些細(xì)微差別。事實上IDT會根據(jù)基本圖像是Linear(HDRi)、sRGB(漫反射)還是數(shù)據(jù)(粗糙度)而有所變化,看起來是這樣的:
4. Schema(架構(gòu))
我會用相對直觀的方式來解釋。
5. Explanation(解釋)
如果上面給出的架構(gòu)不是很清晰,那讓我進一步解釋一下。
左邊是電腦上的文件,有紋理,有HDR等,他們來自于網(wǎng)絡(luò)、Photoshop,隨便什么地方吧。這些文件是sRGB的,是大多數(shù)用戶可以使用的標(biāo)準(zhǔn)文件。你可以把這塊理解成沒有太多方格的小棋盤。
中間是3D軟件,比如整合場景進行渲染的Maya,可以做一些合成的Nuke。色彩空間是ACEScg,所有信息都可以在同一的空間中進行交換。你可以把這塊理解成大棋盤,到處都是正方形。
右邊是查看圖像的地方,屏幕是sRGB的,我不能直接在Maya或Nuke中保存圖像,不然得到的圖像有問題,因為小棋盤(屏幕是sRGB的)不能顯示大棋盤(ACEScg)的圖像,而且ACEScg是線性的,無法真實顯示,再加上不是相同的正方形,也無法確定棋子該放在什么位置。這就是為什么我必須將ACEScg圖像轉(zhuǎn)換為sRGB圖像(也可根據(jù)其他屏幕類型的情況而定)的原因。
所以,當(dāng)在ACEScg的Maya中導(dǎo)入紋理時,我需要考慮圖像類型和配置文件以適應(yīng)其IDT(從sRGB 到ACEScg):
●?sRGB圖像?(通常為8bit,格式為jpg、png等)?,用于色彩?(漫反射、SSS、albedo等)?=使用IDT?Utility_sRGB_Texture
●?Linear圖像?(通常為16/32bit,格式為exr)?,用于數(shù)據(jù)?(粗糙度、金屬、法線、置換等)?=使用IDT?Utility_Raw
●?Linear圖像?(通常為16/32bit,格式為exr)?,帶有色彩信息?(HDRi或數(shù)字繪景)?=使用IDT?Utility_Linear_sRGB
然后我以exr格式16/32bit渲染,在Nuke中合成,圖像發(fā)布到A站上,你們會在電腦屏幕或手機上觀看,采用的是sRGB(大多數(shù)用戶使用的顯示標(biāo)準(zhǔn))。因此我將ODT設(shè)置為?Output_sRGB?(從ACEScg到sRGB)。
注意,必須根據(jù)屏幕和項目來選擇ODT,在上面的例子中,我用的是sRGB,也可以根據(jù)顯示器選擇Rec709或者其他別的模式。
6. Important(重點)
想讓有關(guān)ACEScg的內(nèi)容簡單而且便于理解可不是一件容易的事情,因為其中涉及到了很多細(xì)節(jié)和重點,接下來我會嘗試更深入地解釋一些IDT和色彩空間的內(nèi)容,重點是理解貼圖的來源。
在前面的例子中,我說過.jpg格式 8bit的漫反射貼圖要用 IDT?Utility_sRGB_Texture?來轉(zhuǎn)換,但你們必須了解,IDT并不是根據(jù)源圖像的格式或深度進行選擇的,而是根據(jù)它的色彩空間選擇的。sRGB和Linear有相同的primaries,經(jīng)常被認(rèn)為是兩個不同的色彩空間(特別是在Nuke中),因此我們既要區(qū)分貼圖的功能(色彩或數(shù)據(jù)),又要區(qū)分其所在的色彩空間(最常見的是sRGB或Linear,當(dāng)然也有其他)。
我以sRGB和Linear為例,是因為我們經(jīng)常從 Megascan獲取資產(chǎn),或是從Substance Painter或Photoshop中得到貼圖。基本上在大多數(shù)情況下,我們的紋理是sRGB的(jpg,png... 8bit)或Linear的(hdr,exr... 16/32bit)。但由于某種原因,漫反射貼圖也有可能是Linear 16bit的.exr格式。遇到這種情況,需要將對應(yīng)與色彩功能的 IDT設(shè)置為Linear,也就是IDT?Utility_Linear_sRGB?。
IDT基本上都是基于貼圖的色彩空間,下面有一例子:
● 如果貼圖來自Mari,并且在ACEScg中導(dǎo)出,用 IDT?ACEScg?;
●?如果貼圖來自Photoshop,并且是sRGB,用IDT?Utility_sRGB_Texture?;
●?如果貼圖來自Substance Painter,并且是Linear,用IDT?Utility_Linear_sRGB?;
...
這里有一個簡單的表格,總結(jié)了根據(jù)貼圖來源使用IDT的方法。
7. Vocabulary(詞匯)
接下來我們快速討論一些剛剛遇到的特殊詞匯,以便幫助小伙伴們理解我們所討論的內(nèi)容,當(dāng)然你也可以查一查他們的官方定義到底是怎么解釋的。
色彩空間?通過3個事情來定義:
Primaries?:指的是schema 1(棋盤)上顯示的三角形的三個頂點,這個三角形稱為?色域?(gamut),請注意不是gamma。
Whitepoint?:指的是三角形中定義為最白的空間,移動此點可以使圖片變暖或變冷。
Transfer functions?(傳遞函數(shù)):這才是gamma,在 schema 2中,紅線表示sRGB,藍(lán)線表示Linear
以上這些讓我們更深入地了解IDT和ODT術(shù)語,在了解了源文件的色域和傳遞函數(shù)之后,就可以推斷出適合于它的IDT,以?Utility_Linear_sRGB?為例:
Utility?- IDT存儲的組(類似于標(biāo)簽,方便查找)
Linear?- 傳遞函數(shù)(schema 2)
sRGB?- 色域(schema 1)
然后可以把IDT應(yīng)用于與sRGB primaries線性關(guān)聯(lián)的紋理。
8. Versus(對比)
到目前為止知道怎么使用ACEScg了吧!咱們再來說說為什么要用ACEScg來代替 Linear Workflow 呢?因為它確實是一次關(guān)于圖像質(zhì)量的飛躍,它使渲染引擎不再受屏幕色彩空間的限制。盡管網(wǎng)上有很多對比sRGB和 ACEScg的內(nèi)容,但我認(rèn)為我自己的比較還是一些細(xì)節(jié)方面的優(yōu)勢。
Linear sRGB 渲染中,顏色在McBeth上過于飽和,而圖像整體顯得更暗淡一些。為了調(diào)整這個問題,我調(diào)整了色彩分級中的高光,人為降低了色彩飽和度以達(dá)到逼真效果,相反也可以對比其余部分使圖像更具深度。
ACEScg渲染中,色彩會在光線較強的地方自然褪色,同時在其余圖像上的深度增加,這是因為ACEScg包括對比度和值的管理工具,而這個工具在sRGB中是沒有的。用較少的精力獲得效果更好的圖像,藝術(shù)家們都會很開心,這樣就有時間來精進和調(diào)整更細(xì)致的圖像效果,使用ACEScg可以在炸毀燈泡的同時還擁有逼真的效果!最后引用Thomas Mansencal的一句名言,“如果沒有S型預(yù)覽轉(zhuǎn)換,就別讓朋友看線性場景”。
9. Conclusion(結(jié)論)
希望這份小文件可以對您有所幫助,對你們做出的解釋也正好回答了一些我自己的問題。當(dāng)我以為對這些內(nèi)容很熟悉的時候,當(dāng)我準(zhǔn)備開始總結(jié)的時候,還是發(fā)現(xiàn)了一些我必須要糾正的問題。
別有壓力。如果你覺得自己已經(jīng)理解了,那很好!如果能應(yīng)用到工作流程中去那就更好了,花些時間測試一個小的個人項目。如果第一次用不對也別擔(dān)心,在我看過的眾多ACEScg工作流程演示視頻中,演講者也會犯錯誤然后再糾正自己的錯誤。所以別擔(dān)心,坐下來按照自己的節(jié)奏嘗試每一個步驟,相信我,這是值得的。


評論(0)