好萊塢 VFX 色彩 pipeline 全面指南 — BCON26(第 3/3 段)


🏦 台灣Pay 銀行轉帳 💙 PayPal
ILM 用 OpenColorIO 把 neutral grade 變成 color space,並處理 CDL 與 display LUT
- 26:54 neutral grading 各工作室做法不同:有一家由專門團隊在 plate 一上線就把調整 bake 進去,這樣費時,之後也難更新 grade
- 33:31 round-trip 驗證:載入改名後的 plate EXR,透過「2T2S graded view」套用 OpenColorIO 色彩管線,再依 tech spec 加 scale 與 crop
- 39:24 ILM 的 artist 與 technology 團隊都在徵才,職缺頁面提供 QR code
💡 你可以怎麼用:想在 Blender 裡確認素材顏色,可以照影片做:在 Compositor 放圖並設好輸入色彩空間,用 CDL 模式的 Color Balance 只調 slope 來校白平衡與曝光。拿別人給的參考圖比對時,記得把參考圖的色彩空間設成 Raw,才不會被多轉一次。
看全部 47 條重點
🧑🏫 這段是 ILM 講者分享好萊塢特效公司怎麼管理顏色:他們把素材的「中性調色」直接做成 OpenColorIO 裡的一個色彩空間。這樣各種軟體讀檔時就會自動套上正確的顏色。影片也示範在 Blender 裡測試調色、用客戶參考圖驗證整條色彩流程,適合想弄懂專業影像顏色為什麼能在不同軟體間保持一致的人。
- 26:54 neutral grading 各工作室做法不同:有一家由專門團隊在 plate 一上線就把調整 bake 進去,這樣費時,之後也難更新 grade↳ neutral grading(中性調色,先把素材校成一致的白平衡與曝光)每家做法不同。有一家讓專人在 plate(現場拍的實拍素材)一進來就 bake(直接寫死進檔案),既費時,之後也難改。
- 26:54 另一家工作室把所有 grade 存在內部資料庫,再依需要在各個應用程式裡套用↳ 另一家不動素材本身,把每段素材的調色數值存在內部資料庫,哪個軟體要看,再去資料庫拿數值套上。
- 27:28 資料庫做法的缺點:每個想看 neutral grade 的應用程式,都要寫專用 plug-in 或維護工具,才能從資料庫載入 grade↳ 資料庫做法的麻煩是:每個軟體都得有人寫 plug-in(外掛程式)或維護小工具去讀資料庫。軟體一多,維護工作就跟著變多。
- 27:28 ILM 有很多應用程式都要讀 plate 並套用 neutral。用 OpenColorIO 就不必為每個應用程式寫專用 plugin↳ ILM 用的軟體很多,每個都要讀 plate 並套中性調色。改用 OpenColorIO(業界開源的色彩管理系統,很多軟體內建支援)就不必一個個寫外掛。
- 27:28 把 neutral grade 指派給 plate,幾乎等同把 color space 指派給 plate↳ 關鍵觀察:幫 plate 指定一組中性調色,跟告訴軟體「這段素材用哪個 color space(色彩空間,規定數值該怎麼解讀成顏色)」幾乎是同一件事。
- 28:03 核心構想:如果 neutral grade 本身就是一個 color space 呢?↳ 所以 ILM 反過來想:把中性調色直接做成一個色彩空間。軟體本來就會處理色彩空間,調色也就順便被套上了。
- 28:03 範例:複製客戶送來的 element,移到 element 資料夾,並依客戶 tech spec 做 desqueeze 與縮小↳ 示範開始:把客戶給的 element(單一素材)複製到專用資料夾,照客戶 tech spec(技術規格文件)做 desqueeze(把變形鏡頭壓窄的畫面拉回正常比例)並縮小。
- 28:03 客戶常附 Nuke script 示範 plate 該怎麼轉換,但這是 Blender 演講,所以講者照客戶的 PDF 做↳ 客戶常附一份 Nuke(業界常用的合成軟體)腳本,示範素材該怎麼轉換。這場講的是 Blender,所以講者改照客戶的 PDF 規格來做。
- 28:35 上線的 element 採新命名規則:$shot、element 名稱、影格編號、副檔名↳ 處理好的素材一律改用固定命名:鏡頭名、素材名、影格編號、副檔名。後面的自動套色就是靠檔名辨認,所以命名要一致。
- 28:35 OpenColorIO 功能:影像載入時,檔名的部分內容會和 config 檔裡的 color space 比對。用的是 file rule「ColorSpaceNamePathSearch」↳ OpenColorIO 有個 file rule(依檔名自動判斷色彩空間的規則)叫 ColorSpaceNamePathSearch:載入圖片時,拿檔名去比對 config(設定檔)裡的色彩空間名稱。
- 29:06 工具 ilm_ocio_bake_shot_conf 產生 element 的 neutral grade 時,也會把符合命名規則的新 color space 加進 shot level config↳ 公司工具 ilm_ocio_bake_shot_conf 產生中性調色時,會順便在該鏡頭專用的 config 裡,加一個以素材名命名的色彩空間,剛好對得上檔名。
- 29:06 因此 Blender 會套用 turnover color space 和 neutral grade,並轉換到工作室的 working space↳ 結果 Blender 讀檔時會自動認出色彩空間,依序套上客戶交件(turnover)時的原始色彩空間、中性調色,再轉進公司統一的工作色彩空間。
- 29:42 neutral grading 檔內有兩個 ColorCorrection 元素:char 與 pdtime。這裡只關心 char 的 slope 屬性↳ 中性調色檔裡有兩個 ColorCorrection(色彩校正)區塊,分別叫 char 和 pdtime。這裡只用到 char 裡的 slope 設定。
- 29:42 新增的 color space 裡,第二個 file transform 位於轉換到 scene linear 之後↳ 新加的色彩空間裡有兩道檔案轉換。第二道放在素材已轉成 scene linear(數值與實際光量成正比的線性空間)之後才執行。
- 30:16 這些 ColorCorrection 元素屬於 Academy 的 CDL(color decision list)。slope 屬性就是把輸入值做乘法↳ 這些區塊屬於 CDL(color decision list,業界交換調色數值的標準格式)。slope 很單純,就是把每個像素值乘上一個倍數。
- 30:16 乘法在 scene linear 中進行,而 scene linear 裡的乘法其實就是曝光調整↳ 在 scene linear 裡乘一個數,等於把光量整體放大或縮小,效果跟調相機曝光一樣。
- 30:48 所以 neutral grade 實際上是在 scene linear 中做非破壞性的白平衡或曝光校正↳ 所以中性調色其實只是在線性空間裡做白平衡(紅綠藍各乘不同倍數)或曝光校正,而且不改原檔,隨時能換數值。
- 30:48 .ccc neutral grade 檔平常由自家工具寫出,但可在 Blender Compositor 模擬:接一張影像,input color space 設為 turnover 檔的 color space↳ 存調色的 .ccc 檔平常由公司工具寫出,但可以在 Blender 的 Compositor(節點式合成畫面)模擬:放一張圖,把輸入色彩空間設成客戶原始檔用的那個。
- 31:19 接著加第一個 Color Balance(CDL 模式)並留空,再轉到工作室 color space,再加第二個 Color Balance(CDL 模式),只設定 slope↳ 接著加一個 Color Balance 節點,設成 CDL 模式但不調。轉到公司色彩空間後,再加第二個 CDL 模式的 Color Balance,只調 slope。
- 31:19 這樣就能測試並互動調整 neutral grade↳ 這樣就能邊看畫面邊調數值,找出中性調色該用多少倍數,等於在 Blender 裡搭一個可以互動的試驗台。
- 31:19 正確數值寫進 ccc 檔後,重啟 Blender,就能在任何 OpenColorIO-aware 應用程式載入↳ 把調好的數值寫進 .ccc 檔、重開 Blender 後,任何支援 OpenColorIO 的軟體(OpenColorIO-aware application)都能讀到同一組調色。
- 31:53 在 Compositor 加 image node,會自動套用以 element 名稱命名的 color space,自動套上 neutral grade 並轉成 ACEScg↳ 之後在 Compositor 加 image 節點讀素材,會自動選到以素材名命名的色彩空間,套好中性調色,並轉成 ACEScg(ILM 的工作色彩空間)。
- 31:53 CDL grading:接著套用 shot-level CDL。客戶在 turnover 裡只給了 bg01 element 的 CDL 檔↳ 中性調色之後,還要套客戶指定的鏡頭層級 CDL,也就是整個鏡頭的創作調色。這次客戶交件裡只給了 bg01 這個素材的 CDL 檔。
- 32:27 客戶給的是 .cdl 檔,但 OpenColorIO config 預期 .cc 副檔名,和 pipeline 工具產生的格式略有不同↳ 客戶給的檔案副檔名是 .cdl,但 config 預設找的是 .cc 檔。兩者都是 CDL 資料,只是格式跟公司工具產生的略有不同。
- 32:27 OpenColorIO 技術上支援 .cdl,改 config 裡的副檔名即可↳ 其實 OpenColorIO 讀得懂 .cdl,只要把 config 裡指定的副檔名改掉就能直接用。
- 32:58 也可用 ilm-toolbox 的 ilm_cdlgen,能把 CDL 資料寫成多種檔案格式。範例產出 grade.cc,放進 resource 資料夾↳ 另一條路是用 ilm-toolbox 裡的 ilm_cdlgen,它能把 CDL 數值輸出成各種檔案格式。範例產生了 grade.cc,放進 resource 資料夾。
- 33:31 round-trip 驗證:載入改名後的 plate EXR,透過「2T2S graded view」套用 OpenColorIO 色彩管線,再依 tech spec 加 scale 與 crop↳ 接著做 round-trip(來回驗證處理結果是否符合客戶預期):讀改名後的 EXR(影視常用的高動態範圍圖檔),用「2T2S graded view」套上整套色彩流程,再照規格縮放、裁切。
- 33:31 和客戶提供的 TIFF 參考檔比對,TIFF 的 color space 設為 Raw,不做任何轉換↳ 拿客戶附的 TIFF 參考圖來比對。TIFF 的色彩空間設成 Raw,意思是照原始數值顯示、不做任何轉換,避免顏色被重複處理。
- 34:05 EXR 經 neutral grade、反向 neutral grade、套 CDL、再套 display LUT 後,與客戶參考檔吻合↳ EXR 依序經過中性調色、反向拿掉中性調色、套 CDL、再套 display LUT(把數值轉成螢幕顯示用的對照表),結果跟客戶參考圖一致,代表流程正確。
- 34:05 客戶範例把所有畫面縮到 HD,所以講者也加了 downscale to HD 來比對↳ 客戶的參考圖都縮成 HD 解析度,所以講者也加了一步縮到 HD,讓兩邊條件相同才好比對。
- 34:05 display transforms:本例用 ACES workflow,並有客戶提供的 LMT↳ 顯示轉換(display transform,把工作數值轉成螢幕上看到的樣子):這例子用 ACES(影視業常用的色彩管理標準流程),另有客戶提供的 LMT(ACES 裡用來調整整體外觀的轉換)。
- 34:37 OpenColorIO-gen 也能處理自訂的非 ACES 色彩管線↳ 不用 ACES 的客戶也沒關係,OpenColorIO-gen 這個工具同樣能建出自訂的色彩流程。
- 34:37 以前每台螢幕會拿到一個 display LUT。例如 Rec. 709 gamma 2.4 與 PQ P3 D65 LUT,工具仍能產生前面所有內容,只要告訴它每個 LUT 對應哪種螢幕↳ 以前客戶會為每種螢幕給一個 LUT,例如 Rec. 709 gamma 2.4(一般 SDR)和 PQ P3 D65(HDR)。只要告訴工具每個 LUT 對應哪種螢幕,前面整套設定照樣能生出來。
- 34:37 工具會加入 ILM 內部使用的所有 display 轉換,並替每個 display 挑最合適的 LUT↳ 工具會自動把 ILM 內部用到的所有顯示轉換都加進去,並替每種螢幕挑最適合的那個 LUT 來當基礎。
- 35:12 例如 PQ P3D65 LUT 可作為 Rec. 2100 HDR 或 P3 sRGB extended 的基礎;Rec. 709 LUT 可能經 warp 後用於 sRGB 或 cinema mastering 輸出↳ 例如 PQ P3D65 LUT 可以延伸給 Rec. 2100 HDR 或 P3 sRGB extended 用;Rec. 709 LUT 則可再經過調整(warp),用在 sRGB 或電影院母版輸出。
- 35:44 Q&A:ILM 通常把套 neutral grade 的責任交給 compositing supervisors,因為他們最了解鏡頭需求↳ 問答:誰負責套中性調色?ILM 通常交給合成主管(compositing supervisor),因為他們最清楚每個鏡頭需要什麼。
- 36:14 該工具也開放給 artists 使用,只是責任通常落在部門主管↳ 工具也開放給一般 artist 使用,但把關的責任通常還是在各部門主管身上。
- 36:14 neutral grade 最終只是 config 資料夾裡的 .ccc 檔,可用任何工具產生。想換 grading 工具也能自由實作,最後都轉成 OpenColorIO 能用的形式↳ 中性調色最後只是 config 資料夾裡的一個 .ccc 檔,用什麼工具產生都行。想換調色軟體也可以,只要最後轉成 OpenColorIO 讀得懂的格式。
- 36:45 講者希望把這個工具 open-source 並公開釋出↳ 講者希望之後能把這套工具開源,公開給大家使用。
- 36:45 OpenColorIO 內部沒有 primaries 的概念↳ 問答:OpenColorIO 內部沒有 primaries(三原色在色彩座標上的位置,決定色彩空間的範圍)這個概念。
- 37:18 但 OpenColorIO 可做 matrix transformation。工具會從 color primaries 原始資料自動算出要放進 config 的 color matrix,所以理論上可加入自訂 primaries 的 color space↳ 但它能做 matrix(矩陣,把顏色從一組原色換算到另一組)轉換。工具會從原色資料自動算出矩陣寫進 config,所以理論上能加入自訂原色的色彩空間。
- 37:18 建立 color matrix 時需要知道來源與目標 gamut↳ 要算這個矩陣,必須知道來源和目標各自的 gamut(色域,能表現的顏色範圍),也就是從哪個範圍換到哪個範圍。
- 37:49 工具目前以 ILM 工作色彩空間 ACEScg 為目標,所有定義都轉入或轉出 ACEScg。也可改成 Rec. 709 mode,矩陣會自動算好↳ 工具目前以 ACEScg 為中心,所有色彩空間都定義成轉入或轉出 ACEScg。也能切到 Rec. 709 模式,矩陣會自動重算。
- 38:21 OpenColorIO 完全不規定什麼算 color space,它只是一大張 node graph,記錄各 color space 與彼此的轉換關係↳ OpenColorIO 不硬性規定什麼才算色彩空間。它本質上是一張 node graph(節點關係圖),記錄有哪些色彩空間、彼此怎麼互轉。
- 38:21 你甚至可以不用 color space、只用 transfer functions。這樣做是錯的,結果可能很怪,但 OpenColorIO 本身不會限制↳ 你甚至可以只放 transfer function(決定數值和亮度怎麼對應的曲線),不定義完整色彩空間。這樣做是錯的,結果會很怪,但系統不會擋你。
- 38:54 最佳做法:每個 color space 都有 gamut 與 transfer function(或 gamma curve),並在 config 的 to_scene_linear、from_scene_linear 區塊正確設定轉換↳ 正確做法:每個色彩空間都要有色域和 transfer function(或 gamma 曲線),並在 config 的 to_scene_linear、from_scene_linear 區塊寫好進出線性空間的轉換。
- 39:24 ILM 的 artist 與 technology 團隊都在徵才,職缺頁面提供 QR code↳ 最後講者宣傳 ILM 的美術與技術團隊都在徵人,職缺頁面有 QR code 可以掃。
📘 術語
neutral grading(中性調色):在 scene linear 中做非破壞性的白平衡或曝光校正
plate(實拍素材):字幕未解釋;提到要讀取 plate 並套用 neutral grade
bake(烘焙(寫死)):直接把調整寫進 plate,之後難以修改
OpenColorIO(開源色彩管理系統):一大張 node graph,記錄 color space 及其轉換關係,不規定什麼算 color space
color space(色彩空間):最好各自具備 gamut 與 transfer function 或 gamma curve
config(設定檔):OpenColorIO 的設定檔,定義 color space,含 to_scene_linear、from_scene_linear 區塊
ColorSpaceNamePathSearch(依路徑名稱搜尋色彩空間規則):OpenColorIO 的 file rule,影像載入時拿檔名部分內容比對 config 中的 color space
turnover(客戶交付素材):字幕未解釋;提到客戶在 turnover 中提供 bg01 的 CDL 檔
desqueeze(反壓縮(還原畫面比例)):字幕未解釋;依客戶 tech spec 對影像做 desqueeze 與縮小
scene linear(場景線性):在其中做乘法,其實就是曝光調整
CDL (color decision list)(色彩決策清單):Academy 的格式,ColorCorrection 元素是它的一部分
slope(斜率):CDL 的屬性,對輸入值做乘法
.ccc / .cc / .cdl(CDL 檔案格式):neutral grade 存成 .ccc;config 預期 .cc;客戶給的是 .cdl
Compositor(合成器):Blender 的節點合成圖,可模擬寫出 neutral grade 的流程
Color Balance (CDL mode)(色彩平衡節點(CDL 模式)):在 Compositor 中設為 CDL 模式,只調 slope 即可測試 neutral grade
ACEScg(ACEScg 色彩空間):ILM 工作室的 working color space
OpenColorIO-aware application(支援 OpenColorIO 的應用程式):ccc 檔寫好後可在這類應用程式中載入
round-trip(來回驗證):處理影像後與客戶提供的參考檔比對是否吻合
display LUT(顯示查找表):以前每台螢幕會拿到一個 display LUT
LMT(LMT):字幕未解釋;只提到本例 ACES workflow 中由客戶提供
primaries / color matrix(原色/色彩矩陣):工具從 primaries 原始資料自動算出要放進 config 的 color matrix
gamut(色域):建立 color matrix 時需知道來源與目標 gamut
transfer function(傳遞函數):與 gamma curve 並列,是 color space 應具備的要素之一
plate(實拍素材):字幕未解釋;提到要讀取 plate 並套用 neutral grade
bake(烘焙(寫死)):直接把調整寫進 plate,之後難以修改
OpenColorIO(開源色彩管理系統):一大張 node graph,記錄 color space 及其轉換關係,不規定什麼算 color space
color space(色彩空間):最好各自具備 gamut 與 transfer function 或 gamma curve
config(設定檔):OpenColorIO 的設定檔,定義 color space,含 to_scene_linear、from_scene_linear 區塊
ColorSpaceNamePathSearch(依路徑名稱搜尋色彩空間規則):OpenColorIO 的 file rule,影像載入時拿檔名部分內容比對 config 中的 color space
turnover(客戶交付素材):字幕未解釋;提到客戶在 turnover 中提供 bg01 的 CDL 檔
desqueeze(反壓縮(還原畫面比例)):字幕未解釋;依客戶 tech spec 對影像做 desqueeze 與縮小
scene linear(場景線性):在其中做乘法,其實就是曝光調整
CDL (color decision list)(色彩決策清單):Academy 的格式,ColorCorrection 元素是它的一部分
slope(斜率):CDL 的屬性,對輸入值做乘法
.ccc / .cc / .cdl(CDL 檔案格式):neutral grade 存成 .ccc;config 預期 .cc;客戶給的是 .cdl
Compositor(合成器):Blender 的節點合成圖,可模擬寫出 neutral grade 的流程
Color Balance (CDL mode)(色彩平衡節點(CDL 模式)):在 Compositor 中設為 CDL 模式,只調 slope 即可測試 neutral grade
ACEScg(ACEScg 色彩空間):ILM 工作室的 working color space
OpenColorIO-aware application(支援 OpenColorIO 的應用程式):ccc 檔寫好後可在這類應用程式中載入
round-trip(來回驗證):處理影像後與客戶提供的參考檔比對是否吻合
display LUT(顯示查找表):以前每台螢幕會拿到一個 display LUT
LMT(LMT):字幕未解釋;只提到本例 ACES workflow 中由客戶提供
primaries / color matrix(原色/色彩矩陣):工具從 primaries 原始資料自動算出要放進 config 的 color matrix
gamut(色域):建立 color matrix 時需知道來源與目標 gamut
transfer function(傳遞函數):與 gamma curve 並列,是 color space 應具備的要素之一
✏️ 小考一題
講者說 CDL 的 slope 屬性在做什麼運算?因此在 scene linear 中等同於什麼?
A. 對輸入值做乘法;等同曝光調整B. 對輸入值做矩陣轉換;等同色域轉換C. 對輸入值做次方運算;等同 gamma 調整D. 對輸入值做加法;等同對比調整看答案
答案:A。[30:16] slope 屬性就是對輸入值做乘法,在 scene linear 中的乘法其實就是曝光調整
💛 覺得有幫助?支持一下


課本免費、沒有廣告,支持與否都能照常讀 🐰