toruのブログ

月1くらいで記事書きたい。

After Effects Beta版で OpenColorIO v2 を使った HDR表示を試す

1. 背景

  • 筆者は映像制作ツールを使った HDR表示に異様に関心があり、これまで複数のツールで HDR表示を試してきた
    • ここで HDR表示とは SMPTE ST 2084 (PQカーブ) をサポートしたデバイスを使った表示を意味する
  • 2022年10月に Adobe は OpenColorIO (以後 OCIO と略す) をサポートした Beta版の After Effects を公開した[1]
    • 筆者が確認したところ OCIO v2 もサポートしていることが分かった
  • 筆者は OCIO v2 の config.ocio を自作 した経験があり、After Effects で OCIO v2 を利用した HDR表示を試したいと考えた
  • そこで実際に試すことにした (※1)

※1 After Effects は現時点では Windows OS 上の HDR表示はサポートしていない。そのため今回は Video I/O の DeckLink Mini Monitor 4K を使い Video Monitor 上で HDR表示を試す

2. おことわり

本記事は OCIO v2 を利用した HDR表示が 技術的に可能かどうか 検証することを目的としています。そのため実際の制作現場での利便性などは一切考慮しておりません。従って本記事を読むと「そんな設定(やり方)は実際はやらないでしょ」と感じるかもしれません。が、その点については何卒ご容赦ください。

また、本記事の検証は After EffectsBeta版 を利用して行いました。あくまでも Beta版を使った動作確認ですので、正式版では仕様が変わっている可能生があります。その点もご了承ください。使用したバージョンは v23.3.0 (Build 18) です。

3. 目的

After Effects 上で OCIO v2 を使った色変換を行い、変換後の映像を HDR対応のデバイスで表示する。合わせて複数の色空間へのファイル出力も試す。具体的には以下の図1 の処理が可能であるかを確認する。

図1. 筆者が期待していた色変換の様子

図1 は以下の処理を想定したものである。

  • 色空間が異なる複数のソースを Input Transform で Working Color Space (ACEScg) に変換する
  • Working Color Space 上でコンポジット(図では Merge と表現)を行う
  • ファイル出力のために Output Transform を行う。以下の 2つの色空間に出力する
    • ACES 2065-1
    • P3D65 - SMPTE ST 2084
  • 画面表示のために Display View Transform を行う。画面表示は以下の2デバイスに対して行う
    • PC Monitor (SDR) (※2)
    • Video Monitor (HDR) (※3)

※2 PC Monitor (SDR) と Video Monitor (HDR) に同じ映像信号を送ることになるため、PC Monitor (SDR) はミスマッチが発生して表示がおかしくなる。今回はこのミスマッチは許容することにする
※3 本記事では SDI や HDMI の入力 I/F を備えた映像確認用のモニターを Video Monitor と呼ぶ。残念ながら筆者の自宅には存在しないので今回は SONY BRAVIA で代用する

また、各機材は図2 の通りに接続するものとする。

図2. 各種機材の接続図

4. 結論

4.1. 結論(3行)

  • 図1 に示した色変換は実現できなかった
  • Video Monitor への出力は Display View Transform が適用されておらず ACEScg のまま出力だった
  • しかし、手動で OCIO Color Space Transformエフェクトを適用することで目的の HDR表示を実現できた

4.2. 結論(詳細)

図1 に示した処理は概ね可能であることは分かった。しかし、Display View Transform に関しては想定と異なることが分かった。結果を図3 に示す。

残念ながら画面表示用の Display View Transform (※4) は PC Monitor にしか適用されなかった。 そのため Video Monitor への出力は ACEScg のままであり表示のミスマッチが生じる結果となった。

図3. 実際の色変換の様子

その一方で追加調査の結果、手動でエフェクトを適用することで表示のミスマッチを解決できることが分かった。図4 に示すように Display View Transform の代わりに OCIO Color Space Transform エフェクト(※5) を使用することで解決できた。これにより、筆者の当初の目的であった HDR表示は無事に達成できた。

図4. Video Monitor での HDR表示のために筆者が処理を追加した様子

※4 Display View Transform は After Effects では Display Color Space として設定する (5.2.5 を参照)。Display View Transform の詳細に関しては OCIO v2 の過去記事 を参照

※5 After Effects の OCIO Color Space Transform は In/Out の Color Space に Display Color Space を指定することができない。そのため Video Monitor に伝送する映像を Display Color Space に変換するには、事前に Display Color Space と同様の変換が行われる Color Space を config.ocio のcolorspacesブロックに事前に記述しておく必要がある

4.3. その他

  • 前回の記事でも実感したが、入出力のファイル形式は OpenEXR にしておくのが無難である
    • 例えば PNG の静止画に対して P3D65 - PQ の Input Transform を適用すると、なぜか 1.0 以上の値はクリップされてしまった
  • DNxHR の動画ファイルは今のところ After Effects では使わない方が良いと考える
    • DNxHR のテストパターン動画を読み込んだところ 64-940 CV の Limited Range のまま Working Color Space に変換されてしまった
    • ProRes や H.265 を使った場合は問題がなかった

5. 詳細

以下で筆者が結論に至るまでに行った作業内容を記す。

5.1. 事前準備

5.1.1. config.ocio

今回は検証用に自作した OCIO v2 の config.ocio を使用した。参考までにファイルのリンクを以下に示す。

drive.google.com

上記ファイルのdisplaysブロックに定義してある色変換の多くは、色域変換の 3x3 Matrix と単純な OETF で構成されている(別の言い方をすると RRT を意図的に消している)。そのため様々な解析が行いやすく筆者は愛用している。

なお、一般的な用途の場合は After Effects に標準で組み込まれている config.ocio の利用を強く推奨する(筆者の作成した config.ocio は検証用なので)。 カスタマイズを行う場合でも Academy Software Foundation からリリースされている config.ocio をベースに改良することを強く推奨する。

github.com

5.1.2. 画像ファイル

今回の検証で筆者は合計7つの動画・静止画ファイルを合成し、ACEScg 空間で図5 に示す画像を作成した。

図5. After Effects で合成した絵(BT.2020 - SMPTE ST 2084 で出力)

合成に使用したファイルは以下に置いてある。

images_for_Ae_rev2.zip - Google ドライブ

上記リンクの中身は以下の通り。

  • 背景として使用したテストパターン動画 (ファイル名: P3D65_ST2084_1920x1080_HEVC.mov)
  • Working Color Space での合成確認のための矩形パッチ6種類。矩形パッチの ACEScg 空間での値は以下の通り
    • (R, G, B) = (0.10, 0.10, 0.10)
    • (R, G, B) = (0.08, 0.08, 0.08)
    • (R, G, B) = (1.00, 1.00, 1.00)
    • (R, G, B) = (9.00, 9.00, 9.00)
    • (R, G, B) = (100, 100, 100)
    • (R, G, B) = (-99, -99, -99)

5.2. After Effects 上で行った作業

5.2.1. OCIO v2 のカラーマネジメント有効化

File --> Project Settings を開き、Colorタブの Color Management と Color Settings の項目を図6 のように変更した。 この設定をすることで OCIO v2 を使ったカラーマネジメントが有効になる。また、Working Color Space が ACEScg となる。

5.2.2. Video Monitor への出力有効化

Edit --> Preferences を開き、図7 に示すように Video Previewタブの Transmit Device Playback にて Blackmagic Playback にチェックを入れ、その後に設定画面を開き DeckLink Mini Monitor 4K を選択した。この設定をすることで DeckLink から Video Monitor へ信号が出力されるようになる。

図6. Project Settings の Colorタブの設定内容 図7. Preferences の Video Previewタブの設定内容

5.2.3. 準備した画像ファイルの色空間の設定

準備した画像ファイルを画面左上の Project パネルにドラッグ&ドロップして読み込ませた。次に各画像ファイル上で右クリックを行い、Interpret Footage --> Main を選択した。 出てくるダイアログで Colorタブを選択し、Override Media Color Space の項目で画像に適した Color Space を選択した。

Color Space は 図8、図9 に示すようにP3D65_ST2084_1920x1080_HEVC.movではInput/P3D65-PQ_ColorSpaceを、それ以外の画像ではACES/ACEScgを選択した。

図8. P3D65_ST2084_1920x1080_HEVC.mov の設定 図9. その他の画像の設定

5.2.4. ACEScg 空間上で準備した画像ファイルを合成

新規 Composition を作成し、先ほど読み込んだ画像ファイルの合成を行った。この作業は OCIO v2 とは関係が薄い箇所なので詳細は省略する。 筆者はごくごく一般的と思われる方法で各種画像を合成した(結果は図5 を参照)

なお、Composition Settings の内容は図10 の通りである。フレームレートは諸事情により 29.97 fps とした(解析用にHDMIキャプチャデバイスと接続したため)

図10. Composition Settings の様子

5.2.5. 外部ファイル出力

今回は図1 に示したように 2種類の色空間へのファイル出力を試した (ACES 2065-1P3D65 - SMPTE ST 2084)。手順を以下に示す。

まず、メニューバーから Composition --> Add to Render Queue を選択し、Render Queue への追加を行った(2回行って2個追加した)。

1つ目に追加したアイテムの Output Module を選択し Output Module Settings ダイアログを表示した。 Output Module Settings の Color タブで Displays/HDR/P3D65-PQ を選択した (図11)。

2つ目に追加したアイテムの Output Module を選択し Output Module Settings ダイアログを表示した。 Output Module Settings の Color タブで ACES/ACES2065-1 を選択した (図12)。

ファイル形式はそれぞれ QuickTime (ProRes 422HQ)、OpenEXR Sequence とした (図13)。

その後に Render ボタンを押下してファイル出力を行った。ファイル出力に関しては期待通りの結果であった。

図11. 出力の色空間としてDisplays/HDR/P3D65-PQを選択した様子 図12. 出力の色空間としてACES/ACES2065-1を選択した様子 図13. Render Queue の様子

5.2.6. PC Monitor と Video Monitor への表示

ここではモニター出力用の色変換処理について述べる。

OCIO を有効にした After Effects では Composition パネルの下部にある Display Color Space メニューからモニターの表示に適用したい Color Space を選択する。 今回は BT.2020 - SMPTE ST 2084 の出力を行うため、図14 に示すように BT.2100-PQ/Simple を選択した。

図14. Composition パネル下部のメニューから表示用の Color Space を選択している様子

さて、ここで1つ問題が発生した。PC Monitor に対しては意図通りの変換が働いたのだが、Video Monitor に対しては意図通りの変換が働かなった。 表示の様子を図15、図16 に示す。

図15. PC Monitor の表示 図16. Video Monitor の表示

以降で、この問題の対応策について述べる。

5.2.7. Video Monitor に表示されている信号の解析

Video Monitor への出力信号について調べたところ以下の3点が分かった。

  • OETF が適用されていない Linear となっている
  • Composition パネルの Display Color Space メニューで Color Space を BT2100-PQ/Simple ⇔ BT709-BT1886/Simple と切り替えても Video Monitor 側の映像には変化がない
  • 現在の破綻している映像に対して ACEScg to BT2100-PQ 変換を行うと、PC Monitor の映像に近くなる (図17、図18)
図17. 破綻している映像に ACEScg to BT2100-PQ 変換を行った結果 図18. PC Monitor の表示 (比較用に図13 を再掲)

以上のことから、筆者は Video Monitor には Working Color Space (ACEScg) のデータがそのまま伝送されていると判断した。 冒頭の図3 はそれを示した物である。

状況整理のために 図1 と 図3 の内容を切り取って再掲する(図19、図20)。筆者は図19 の動作を期待していたが、実際は図20 に書いた通りであり Display View Transform は PC Monitor出力にしか適用されなかった。

図19. 期待していた動作 図20. 実際の動作

5.2.8. Video Monitor の表示の改善

このままでは当初の目的であった HDR表示が試せなくなってしまうため、筆者は問題を解決すべく調査を行った。

After Effects の公式ドキュメントを読んでいたところ以下の記述が目に入った[2]。

Note:

To manage colors in a dynamically linked composition or for video previews, create a new composition and nest your composition within it; then apply the Color Profile Converter effect to the nested composition, with Input Profile set to Project Working Space. For video previews, then set the Output Profile to match the color space of the video preview device.

筆者は上記の内容を参考にOCIO Color Space Transformエフェクトを使って Working Color Space から Display Color Space への変換を強制的に行えば良いと考えた。ということで以下の作業を行った。

  • 新規に Compositionを作成 (名前を to_video_monitor とする)
  • これまでの作成した Composition を to_video_monitor にネストする形で入れる
  • Display View Transform を無効化するために Display Color Space メニューで None を指定 (図21)
  • ネストしれ入れた Composition に OCIO Color Space Transformエフェクトを適用 (図22)
    • Input Color Space: ACES/ACEScg
    • Output Color Space: Displays/HDR/BT2100-PQ (※6)

※6 本当は Display Color Space のリストに存在する BT2100-PQ/Simple を選択したかったが、残念ながら Output Color Space として選択することは不可能だった。そのため今回は同様の変換が行われる Color Space を事前に config.ocio のcolorspacesブロックに記述して参照した。

図21. Display Color Space で'None'を指定した様子 図22. OCIO Color Space Transform の設定

この設定を行うことで以下の図23 の通り、意図通りの変換を Video Monitor 出力に適用することができた。

図23. OCIO Color Space Transformエフェクト適用後の Video Monitor の表示 図24. PC Monitor の表示 (比較用に図13 を再掲)

6. 感想

今回の調査を通じて OCIO v2 は本当に便利だと改めて実感した。After Effects は色変換部分を完全に OCIO v2 に任せることができたので、 前回の記事のようにツール内部の自動変換に苦しめられることが無かった。OCIO v2 バンザイ!

OCIO v2 が楽しすぎたので次の記事は OCIO v2 の config.ocio の改良について書くかもしれない。その一方でそろそろ論文を読んで何かを実装する系の記事も書きたいと考えている。 いずれにせよ定期的に記事を書いていきたい。

7. 参考資料

[1] Adobe Help Center, "OpenColorIO and ACES color management (Beta)", https://helpx.adobe.com/after-effects/using/opencolorio-aces-color-management.html

[2] Adobe Help Center, "Managing color in After Effects", https://helpx.adobe.com/after-effects/using/color-management.html