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


🏦 台灣Pay 銀行轉帳 💙 PayPal
用 OpenColorIO 定義色彩空間,並以 ILM 工具產生 show-level 與 shot-level config
- 13:29 加入 ACES 2065-1 色彩空間,含 family name、description 與「to scene reference」區段。從它轉到 scene reference space(ACEScg)只需一個 matrix transform。
- 19:56 delivery color space 也可省略。明確設定的好處是:萬一收到非預期的素材,仍能照客戶要求的格式交回。
- 26:24 這個 CCC 檔用來存放該 plate 的 neutral grade 資訊。
💡 你可以怎麼用:如果你在 Blender 裡接到別人給的素材或 LUT,先確認三件事:素材的色彩空間、調色風格(LMT/CDL),以及最後要在哪種螢幕上看,並把這三件事分開處理。想統一多個軟體的顏色時,先查每個軟體支援的 OCIO 版本,再決定設定檔要用哪一版。
看全部 47 條重點
🧑🏫 這段講好萊塢特效公司怎麼用 OpenColorIO(OCIO,一套管理色彩空間互相轉換的開源規格),把「客戶交來的畫面 → 做特效 → 套上客戶的調色 → 在螢幕上顯示」整條流程寫進一份設定檔。講者也示範 ILM 自家的兩個工具,分別自動產生全片共用的設定和單一鏡頭用的設定。想知道專業影像的顏色為什麼能在不同軟體之間保持一致,這段很值得看。
- 13:29 加入 ACES 2065-1 色彩空間,含 family name、description 與「to scene reference」區段。從它轉到 scene reference space(ACEScg)只需一個 matrix transform。↳ 在設定裡新增色彩空間 ACES 2065-1(color space:規定每組數字代表哪種顏色的規則)。它要轉到中轉站 ACEScg(scene reference space,所有空間互轉都經過它),只需一次矩陣運算。
- 14:01 matrix transform 的數字怎麼來,講者說稍後再說明。↳ matrix transform 是用一組固定係數,把紅綠藍三個值重新混合計算。這組係數怎麼算出來,講者說後面才解釋。
- 14:01 再加入 ACESccT,它是 log space,gamut 與 reference space 相同。這次改用反方向(from scene reference)定義,只加了一個 log camera transform。↳ 再加入 ACESccT。它是 log space,用對數曲線壓縮亮度。它的 gamut(能表示的顏色範圍)和中轉站一樣,所以只要往反方向寫一條 log 曲線轉換就夠了。
- 14:33 從 ACES 2065-1 轉到 ACESccT 的流程:先用 ACES 2065-1 的 to scene reference 轉到 ACEScg(scene linear space),再用 from scene reference transform 完成整條轉換鏈。↳ ACES 2065-1 要變成 ACESccT 時,OCIO 會先轉到 ACEScg,再從 ACEScg 轉出去。兩段接起來就是完整路徑,不必替每兩個空間各寫一條轉換。
- 15:08 OpenColorIO 會自動知道如何反轉你提供的任何 transform。只給 to scene reference,需要反方向時它也能自己算出 from scene reference。↳ 每個轉換只要寫一個方向,OCIO 會自己算出反方向。所以設定裡只寫「轉進中轉站」也可以,需要「轉出來」時不用另外補。
- 15:39 理想 workflow 前半:載入 plate 時指定 color space,從客戶給的空間轉換;套用 neutral/balancing grade;轉進工作室 working color space,最好能自動完成。↳ 理想流程的前半段:讀進 plate(實拍素材畫面)時先標明它的色彩空間,套上 neutral grade 把各素材的色調校平,再轉進工作室做特效用的 working space。這些步驟最好全自動。
- 15:39 在 working space 做 VFX、合成、爆炸等效果。之後移除 neutral grade,避免和客戶在片場看到的 look 衝突。↳ 特效、合成、爆炸都在 working space 裡做。做完要把先前校平用的 neutral grade 拿掉,否則畫面會和客戶在片場看到的樣子對不上。
- 15:39 接著轉到客戶選定的 grading space,用客戶的 CDL 和 LMT 套上 look。↳ 接著轉到客戶指定的 grading space(調色用的空間),套上客戶的 CDL(常見的調色數值格式)和 LMT,畫面就有了客戶要的風格。
- 16:14 最後加上 display LUT。客戶給的 display LUT 不一定對應我們要輸出的顯示器,之後可能還要加額外修正。↳ 最後加上 display LUT。LUT 是一張查表,把輸入的顏色對應成輸出的顏色。客戶給的可能是別種螢幕用的,所以可能還要再補一層修正。
- 16:14 上述是 VFX 電影的流程。動畫長片或演唱會體驗可能需要稍微不同的做法。↳ 以上是真人特效電影的流程。動畫長片或演唱會影像的需求不同,做法也要跟著調整。
- 16:14 設定中有些部分在很多專案間一致,例如色彩空間名稱;有些則看客戶決定,只適用單一專案。↳ 設定裡有些東西每個專案都一樣,例如色彩空間的名稱;有些由客戶決定,只適用那一部片。
- 16:45 這條操作鏈很複雜,不太可能找到現成方案,無論是預製 config 還是 Blender 內建的設定都不夠用。↳ 步驟這麼多,市面上現成的設定檔或 Blender 內建的色彩設定都無法完整涵蓋,工作室只能自己產生。
- 17:16 ILM OCIO-Gen 是命令列工具,輸入專案的各種資訊,就能輸出可靠且一致的 OpenColorIO config 供各專案使用。↳ 所以 ILM 做了 OCIO-Gen。在命令列輸入專案資訊,它就輸出一份 config(OCIO 設定檔)。每部片都用同一套方法產生,結果可靠又一致。
- 17:16 ILM OCIO-Gen 是純 Python 程式,只依賴 OpenColorIO,可以從 first principles 產生完整的色彩 pipeline。↳ OCIO-Gen 完全用 Python 寫成,除了 OpenColorIO 不需要其他套件。它能從最基本的定義開始,把整條色彩流程算出來。
- 17:50 first principles 指 gamut、tone curve 等色彩空間定義都照公開發表的白皮書實作。轉成 OCIO 的每個步驟都看得到,可重複、容易追蹤。↳ first principles 指的是:色域、tone curve(亮度對應曲線)等定義,都照公開白皮書自己實作。每一步都看得到,能重跑,出錯也好追查。
- 18:20 這個程式設計成能處理多種常見的客戶色彩 pipeline,也能依工作室需求客製。↳ 這個工具能處理多種常見的客戶色彩流程,工作室有特殊需求時也能自己改。
- 18:20 簡單執行一次會輸出約 1,500 行的 config,內容是大量 YAML。↳ 不加任何選項跑一次,就會產出約 1,500 行的設定檔,內容幾乎都是 YAML(一種人也讀得懂的文字設定格式)。
- 18:52 這份輸出的 config 包含所有已知色彩空間定義,使用 ACES 1.0 display pipeline,studio working gamut 為 ACEScg,並預期客戶以 ACES 2065-1 交件。這是很常見的 workflow。↳ 這份預設結果包含所有已知色彩空間,顯示流程用 ACES 1.0,工作色域用 ACEScg,並假設客戶交來的是 ACES 2065-1 素材。這是很常見的組合。
- 19:23 為 Two Tears To Steel 建 config:show name 設為代號 2T2S。↳ 接下來是實例:替《Two Tears To Steel》建立設定,專案名稱填代號 2T2S。
- 19:23 turnover color space 在 tech spec 的 VFX plate deliverable 標題下寫的是 lin AP0。這已是工具預設值,指令可省略。↳ turnover color space 是客戶交來素材的色彩空間。規格書寫的是 lin AP0,剛好是工具的預設值,指令裡可以不寫。
- 19:56 delivery color space 也可省略。明確設定的好處是:萬一收到非預期的素材,仍能照客戶要求的格式交回。↳ delivery color space 是交回給客戶的色彩空間,也可以省略。但明確寫出來的話,萬一收到格式意外的素材,交件時仍會照客戶要求的格式輸出。
- 19:56 套用 CDL grade 用 --grade-input-colorspace 選項。↳ 要套客戶的 CDL,就用 --grade-input-colorspace 這個選項來設定。
- 20:29 專案使用 LogC4 ARRI Wide Gamut 4,工具要求用 ILM 命名慣例寫成 logc4_awg4。↳ 這部片用 ARRI 的 LogC4 搭配 ARRI Wide Gamut 4。指令裡要照 ILM 的命名規則寫成 logc4_awg4,工具才認得。
- 20:29 ACES workflow 試圖把 look 的概念從特定 display 中分離出來,LMT 就是這個用途。↳ ACES 的思路是把「風格」和「螢幕」分開。LMT 只負責畫面的創意風格,不管最後在哪種螢幕上看。
- 21:00 過去客戶會給 Rec. 709 一個 LUT、DCI-P3 另一個 LUT,創意與技術部分混在同一個 LUT 裡,很難拆開。想在其他顯示器上看內容時特別麻煩。↳ 以前客戶會替每種螢幕各給一個 LUT,例如 Rec. 709 一個、DCI-P3 一個。風格和螢幕修正全混在同一張表裡,想換到別的螢幕看時很難拆開。
- 21:00 在工具中加入 --lmt 選項即可套用 LMT。↳ 在指令加上 --lmt,就能把客戶的 LMT 放進設定。
- 21:33 從 LMT 檔名(2T2S_LMT_logc4awg4 to acescct)可看出輸入與輸出空間不同:輸入是 LogC4 AWG,輸出是 ACEScct。↳ 從檔名 2T2S_LMT_logc4awg4 to acescct 就能看出:這個 LMT 輸入的是 LogC4 AWG 的畫面,輸出的是 ACEScct,進出空間不同。
- 22:05 把 LMT output color space 設為 ACEScct。LMT input space 預設跟隨前面的 grade input space,不必另外設。↳ 所以要把 LMT 的輸出空間設成 ACEScct。輸入空間會沿用前面 grade 的設定,不用再寫一次。
- 22:05 OCIO 在多個軟體共用同一份 config 時效果最好,但常受限於各工具編譯時所用函式庫的最低版本。↳ 所有軟體共用同一份設定時,OCIO 最好用。但每套軟體內建的 OCIO 版本不同,設定只能遷就最舊的那個版本。
- 22:37 Blender 5.2 能處理 OpenColorIO 2.5 config,但 pipeline 中其他工具可能還停在舊版 OCIO。↳ Blender 5.2 讀得懂 OCIO 2.5 的設定,但流程中的其他軟體可能還停在舊版 OCIO。
- 22:37 ilm-ociogen 會自動退回使用較舊或較不精確的色彩空間定義,並以較舊的 workflow 支援舊版 OCIO。↳ 指定較舊的版本時,ilm-ociogen 會自動改用舊版支援的定義和做法。結果可能沒那麼精確,但舊軟體也讀得動。
- 22:37 本例選擇 OCIO 2.4 版,在想用的功能與其他工具的平台支援之間取得平衡。↳ 本例選 OCIO 2.4,在想用的新功能和其他軟體的相容性之間取個平衡。
- 23:07 指定輸出資料夾,否則預設寫到目前目錄。執行後得到 config.ocio 檔和一個 rsrc 目錄,裡面是 config 要用的資源。↳ 記得指定輸出資料夾,不然檔案會存到目前所在的位置。跑完會得到 config.ocio 和 rsrc 資料夾,後者放的是設定要用的資源。
- 23:38 rsrc 裡有多個 .cube 檔:客戶給的 LMT、ACES 2 output transforms 的副本(此 OCIO 版本不支援),以及部分 log 色彩空間需要、但此版 OCIO 內部不支援的 1D LUT。↳ rsrc 裡有幾個 .cube 檔(常見的 LUT 格式):客戶的 LMT、這版 OCIO 不支援的 ACES 2 顯示轉換,以及某些 log 空間需要、這版內部不支援的 1D LUT。
- 24:09 這份 config 是 show-level config 的基礎,可直接使用。若要用 neutral grade、CDL 等針對單一 shot 的功能,還需要 shot-level config。↳ 這份就是 show-level config(全片共用的設定),可以直接用。但每個鏡頭各自的 neutral grade 和 CDL,要另做一份 shot-level config(單一鏡頭用的設定)。
- 24:09 建立 shot-level config 用另一個工具 ilm-ocio-bake-shot,比前一個工具簡單很多。↳ 做單一鏡頭的設定要用另一個工具 ilm-ocio-bake-shot,它比 OCIO-Gen 簡單很多。
- 24:39 第一步:設定 shot 名稱,本例為 BRI 0010_10。↳ 第一步:填入鏡頭名稱,本例是 BRI 0010_10。
- 24:39 第二步:指定作為 template 的 config,也就是先前產生的那份。↳ 第二步:指定要當範本的設定檔,也就是剛才產生的全片設定。
- 24:39 第三步:列出 shot 中每個 element 及其 turnover color space。ILM 內部 pipeline 中 element 指 grounds 或 clean plates。依 tech spec,本例每個 element 都是 Lin AP0(ACES 2065-1)。↳ 第三步:列出鏡頭裡每個 element(ILM 的用語,指 grounds 或 clean plates)和它的交件色彩空間。本例全部都是 Lin AP0。
- 25:13 不是每個檔案都用相同色彩空間,所以可以逐一設定每個 turnover 的色彩空間。↳ 同一個鏡頭裡的素材不一定用同一種色彩空間,所以可以逐一設定。
- 25:13 多個 VFX plate 各有自己的 neutral grade。合成後套用客戶 CDL 時,只能挑其中一個來反轉抵銷,這個就叫 hero element。↳ 一個鏡頭可能有好幾個 plate,各有自己的 neutral grade。合成成一張、要套客戶 CDL 時,只能挑其中一個的 grade 反轉抵銷,被挑中的就叫 hero element。
- 25:13 hero element 通常是 shot 中最顯著的 element。常需要參考客戶的 reference,判斷哪個 element 承載最多 grade。↳ 通常會挑畫面裡最主要的素材。很多時候要對照客戶的參考畫面,判斷哪個素材的調色最重。
- 25:49 本例只有一個 element,所以 hero element 設為 MPO1。↳ 本例只有一個素材,所以 hero element 直接設為 MPO1。
- 25:49 shot config 輸出到 show-level config 的子目錄。baked config 會使用父目錄的資源資料夾,不必把 show-level 的 LUT 複製到 shot-level。↳ 鏡頭設定存在全片設定底下的子資料夾,會直接使用上層的資源資料夾。所以全片共用的 LUT 不必在每個鏡頭各複製一份。
- 25:49 產出只有 config.ocio,資源資料夾幾乎是空的,只有一個 CCC 檔。↳ 產出的只有 config.ocio,資源資料夾幾乎是空的,只有一個 CCC 檔。
- 26:24 這個 CCC 檔用來存放該 plate 的 neutral grade 資訊。↳ 這個 CCC 檔記錄的是這個 plate 的 neutral grade 數值。
- 26:24 設定 OCIO 環境變數後,就能啟動任何支援 OCIO 的軟體來測試。接下來要探討 OCIO 如何協助套用 neutral grade。↳ 設好 OCIO 環境變數(告訴軟體要讀哪份設定的系統設定),再打開任何支援 OCIO 的軟體就能測試。下一段會講 OCIO 怎麼幫忙套用 neutral grade。
📘 術語
OpenColorIO (OCIO)(OpenColorIO 色彩管理系統):管理色彩空間之間的轉換,會自動反轉你提供的任何 transform
color space(色彩空間):字幕中以 ACES 2065-1、ACEScg、ACESccT 為例,可定義轉到或從 scene reference 的 transform
scene reference space(場景參考空間):本例為 ACEScg,是 scene linear space,各色彩空間經由它互相轉換
matrix transform(矩陣轉換):從 ACES 2065-1 轉到 ACEScg 只需執行這個轉換
log space(對數空間):ACESccT 是 log space,用一個 log camera transform 定義
gamut(色域):色彩空間定義的一部分,ACESccT 與 reference space 的 gamut 相同
tone curve(色調曲線):色彩空間定義的一部分,依公開白皮書實作
plate(實拍素材片段):字幕未解釋,僅提到載入時要指定 color space
neutral / balancing grade(中性/平衡調色):轉入工作空間前套用,做完 VFX 後要移除,避免與客戶片場看到的 look 衝突
studio working color space(工作室工作色彩空間):做 VFX 與合成的空間,本例 working gamut 為 ACEScg
grading space(調色空間):客戶選定的空間,在此套用客戶的 CDL 與 LMT
CDL(CDL 調色資料):字幕未解釋全名,僅說用來套客戶的 look,以 --grade-input-colorspace 設定
LMT (Look Modification Transform)(Look 修改轉換):ACES workflow 下把 look 從特定 display 分離的做法
display LUT(顯示用 LUT):流程最後加上。客戶給的不一定對應目標顯示器,可能要再修正
LUT(查找表):過去客戶依 Rec. 709、DCI-P3 各給一個 LUT,創意與技術部分混在一起
config(設定檔):OCIO 用的設定檔(config.ocio),簡單範例約 1,500 行 YAML
YAML(YAML 格式):字幕未解釋,僅提到輸出的 config 是大量 YAML
first principles(第一原理):色彩空間定義都照公開白皮書實作,轉換可重複、易追蹤
ILM OCIO-Gen (ilm-ociogen)(ILM OCIO-Gen 工具):純 Python 命令列工具,依專案資訊產生 OCIO config
ilm-ocio-bake-shot(ilm-ocio-bake-shot 工具):用來建立 shot-level config 的工具,比 OCIO-Gen 簡單
turnover color space(交件色彩空間):客戶交來素材的色彩空間,本例為 lin AP0,是工具預設值
delivery color space(交付色彩空間):交回給客戶的色彩空間,明確設定可確保照客戶要求交付
show-level config(專案層級設定檔):由 OCIO-Gen 產生,作為整個專案的基礎 config
shot-level config(鏡頭層級設定檔):用於 neutral grade、CDL 等針對單一 shot 的功能
element(素材元件):ILM 內部 pipeline 用語,指 grounds 或 clean plates
hero element(主要素材元件):多個 plate 中選一個反轉其 neutral grade 的 element,通常是 shot 中最顯著者
.cube(.cube 檔):rsrc 中的資源檔,包含客戶 LMT、ACES 2 output transforms 副本與 1D LUT
1D LUT(一維 LUT):部分 log 色彩空間需要,此版 OCIO 內部不支援,所以另外 bake 出來
CCC file(CCC 檔):shot config 資源資料夾中的檔案,存放該 plate 的 neutral grade 資訊
OCIO environment variable(OCIO 環境變數):設定後即可啟動支援 OCIO 的軟體來測試 config
color space(色彩空間):字幕中以 ACES 2065-1、ACEScg、ACESccT 為例,可定義轉到或從 scene reference 的 transform
scene reference space(場景參考空間):本例為 ACEScg,是 scene linear space,各色彩空間經由它互相轉換
matrix transform(矩陣轉換):從 ACES 2065-1 轉到 ACEScg 只需執行這個轉換
log space(對數空間):ACESccT 是 log space,用一個 log camera transform 定義
gamut(色域):色彩空間定義的一部分,ACESccT 與 reference space 的 gamut 相同
tone curve(色調曲線):色彩空間定義的一部分,依公開白皮書實作
plate(實拍素材片段):字幕未解釋,僅提到載入時要指定 color space
neutral / balancing grade(中性/平衡調色):轉入工作空間前套用,做完 VFX 後要移除,避免與客戶片場看到的 look 衝突
studio working color space(工作室工作色彩空間):做 VFX 與合成的空間,本例 working gamut 為 ACEScg
grading space(調色空間):客戶選定的空間,在此套用客戶的 CDL 與 LMT
CDL(CDL 調色資料):字幕未解釋全名,僅說用來套客戶的 look,以 --grade-input-colorspace 設定
LMT (Look Modification Transform)(Look 修改轉換):ACES workflow 下把 look 從特定 display 分離的做法
display LUT(顯示用 LUT):流程最後加上。客戶給的不一定對應目標顯示器,可能要再修正
LUT(查找表):過去客戶依 Rec. 709、DCI-P3 各給一個 LUT,創意與技術部分混在一起
config(設定檔):OCIO 用的設定檔(config.ocio),簡單範例約 1,500 行 YAML
YAML(YAML 格式):字幕未解釋,僅提到輸出的 config 是大量 YAML
first principles(第一原理):色彩空間定義都照公開白皮書實作,轉換可重複、易追蹤
ILM OCIO-Gen (ilm-ociogen)(ILM OCIO-Gen 工具):純 Python 命令列工具,依專案資訊產生 OCIO config
ilm-ocio-bake-shot(ilm-ocio-bake-shot 工具):用來建立 shot-level config 的工具,比 OCIO-Gen 簡單
turnover color space(交件色彩空間):客戶交來素材的色彩空間,本例為 lin AP0,是工具預設值
delivery color space(交付色彩空間):交回給客戶的色彩空間,明確設定可確保照客戶要求交付
show-level config(專案層級設定檔):由 OCIO-Gen 產生,作為整個專案的基礎 config
shot-level config(鏡頭層級設定檔):用於 neutral grade、CDL 等針對單一 shot 的功能
element(素材元件):ILM 內部 pipeline 用語,指 grounds 或 clean plates
hero element(主要素材元件):多個 plate 中選一個反轉其 neutral grade 的 element,通常是 shot 中最顯著者
.cube(.cube 檔):rsrc 中的資源檔,包含客戶 LMT、ACES 2 output transforms 副本與 1D LUT
1D LUT(一維 LUT):部分 log 色彩空間需要,此版 OCIO 內部不支援,所以另外 bake 出來
CCC file(CCC 檔):shot config 資源資料夾中的檔案,存放該 plate 的 neutral grade 資訊
OCIO environment variable(OCIO 環境變數):設定後即可啟動支援 OCIO 的軟體來測試 config
✏️ 小考一題
講者在 Two Tears To Steel 範例中,讓 ilm-ociogen 產生的 config 以哪個 OCIO 版本為目標?
A. 2.0B. 2.5C. 1.0D. 2.4看答案
答案:D。字幕說 Blender 5.2 能處理 OCIO 2.5,但其他工具可能停在舊版,因此選 2.4 在功能與平台支援間取得平衡(22:37)
💛 覺得有幫助?支持一下


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