🌈

UE5.0と5.1のOCIOの挙動の違いを見てみる

2022/12/19に公開

UEアドカレ2022がその4まで増えていてしかも4はまだまだいけそうだったので書いてみます。主にノンゲームな内容になると思います。

https://opencolorio.org/
▲OpenColorIO 公式サイト

UEの OCIO 対応は意外に古く4.22からのようですが、主に Composure あたりが主戦場だったように見受けられます。
5.1 ではバーチャルプロダクションやInCameraVFXまわりの強化が謳われており、OCIO周りも手が入っているようでした。

以下、5.1との比較として、UE5.0.3 も確認しつつ、気づいた点を挙げていきます。

準備

バーチャルプロダクションテンプレートで新規プロジェクトを作成し、プラグインのOCIOがONになっているのを確認します。

OCIOコンフィグはプラグインコンテンツの中に置かれているものを使います。


ドラッグアンドドロップで .ocio が読めればいいんですが、そういうことにはなっていません。


OCIOコンフィギュレーションアセットを作成して開き、Configuration File欄で当該OCIOコンフィグを指定します。


そして「+」してプルダウンから選択、を繰り返します。

そのあたりのことはこちらに書かれています。
https://docs.unrealengine.com/5.1/ja/opencolorio-quick-start-for-unreal-engine/

OCIO Config

OCIOプラグインのプラグインコンテンツとして .ocio が置かれていますが、
それ以外にgithubで配布されているものを紹介します。

OpenColorIO-Config-ACES
https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/releases/tag/v1.0.0
上記クイックスタート記事の中で「OCIO コンフィグ ファイルの例」としてリンクされているものです。

カメラ用の設定などを含んだ規模の大きな「Studio Config」、設定を絞った「CG Config」、ACESの実装を分析するために用意されているらしい「Reference Config」の三種があり、

ここではCG Configを使います。

nuke default
もうひとつ、UE公式ドキュメントのスクリーンショット内に登場しているのが nuke default です。
こちらからダウンロードできます。
https://github.com/colour-science/OpenColorIO-Configs/tree/master/nuke-default

いずれもクイックスタートの手順に沿ってアセットとして読み込んでおきます。

UE5.0.3

ビューでの確認

ビューポートの「OCIO表示」を有効にするとポスプロのカラーグレーディングLUTが通らなくなる、という挙動を確認します。

画面がひとまず分かりやすくガラっと変わってほしいので、ドキュメントで配布されている「LUT_Sepia」を使用しました。
https://docs.unrealengine.com/5.1/ja/using-look-up-tables-for-color-grading-in-unreal-engine/
(.webpで貼られているようなので.pngに変換して使っています)

▲セピア調になっています。「OCIO表示」>「表示を有効化」はまだ無効です。


▲OCIO表示を有効にしたところ、セピア調ではなくなりました。
ポスプロのカラーグレーディングLUTは有効なままなのに注目してください。

理由の考察

なんでそんなひどいことすんの!? って感じなんですが、
おそらく少なくとも当初はComposure使用前提で、この後に別のコンポジットツール(Nukeなど)でポスト作業が行われるフローを想定して開発が進んできたからかなと想像しました。
UEは素材出し、画作りはそのあと、という思想で「UE内のLUTに相当する作業はこのあとUE外であるはず」ということなんでしょう。

または…
OCIO側で頑張ればいろいろな工夫ができるので、そちらでよろしくということなのかもしれません。

そういえばUEは cube LUTが読めませんが、OCIOコンフィグに書き込む形でなら使えますしね。
プラグインコンテンツの中の .ocio もcube LUT読んでいたりします。

脱線。

MovieRenderQueueでの確認

次にレンダリング(※プリレン的な意味での。以下同)について確認します。
ビューポートでの「OCIO表示」とレンダリング設定とは独立していて、必要であればそれぞれ有効にして使います。

まずは、つい先ほどまでの設定 = 「ビューでOCIO 有効」「カラーグレーディングLUT 有効」のまま、MRQ設定のOCIO関連は何もせずにレンダリングしてみます。


すると、セピア調の状態でレンダリングが実行されました。
(なぜか、ついでにビューのOCIO有効も切れました。。。)

逆もしかりで、

ビューポートでOCIO無効、MRQ設定でOCIO有効にしてレンダリングすると、

ビューはカラーグレーディングLUTが効いたまま、レンダリングはOCIO通った状態になりました。

Working Color Space

プロジェクト設定の「作業する色空間」を確認。
デフォルトでは「sRGB/Rec709」で、これを「ACES AP1/ACEScg」に切り替えます。
切り替えて 再起動。

非常にわかりづらくて恐縮ですが、左が切り替え前のスクリーンショット、右が切り替え後のビューポートで、変化は確認できません。


一応差の絶対値で重ねてみましたが真っ黒でした。
これもComposureじゃないと確認できないどこかが変わったのかもしれません。

UE5.1

ここから5.1です。
目立った変化として、OCIOコンフィグがColor SpaceとDisplay-Viewsに分けて認識されるようになりました。


▲MRQの設定ではこのように。

ビューでの確認


LUT ON 状態でも、OCIO表示にするとパスされます。503と同じ挙動です。

MRQでの確認

ここも同じで、ビューとレンダリングとで独立して動きます。


▲ビューでOCIO有効、MRQで無効、カラーグレーディングLUT有効、なとき、

▲カラーグレーディングLUTが効いた画がレンダリングされます。
(レンダリング時にビューのOCIOがふと外れるのは起きなくなったようです?)

同様に、

▲ビューでOCIO無効、MRQで有効、カラーグレーディングLUT有効、なときは

▲OCIOが効いた画がレンダリングされます。

おまけ


5.1からシェーダーコンパイルがオンデマンドになったので、レンダリングする段になって思わ
ぬ待ちが発生することもありそうです。ギリギリなときには注意したいところです。

Working Color Space

プロジェクト設定の「作業する色空間」を確認。

▲sRGB


▲ACEScg

プルダウンを切り替えた時点で差が現れます。
なんと再起動不要になりました!
一応「再起動してください」は出るので再起動しますが、設定を検討する際には再起動不要なのは非常にありがたいです。

まとめ

設定を切り替えて挙動を確認しただけなのでたいしたことは言えませんが、503では「作業する色空間」を切り替えて再起動してもどこが切り替わったか確認できなかったのと比べると、5.1はぐっと正常化しているように見えます。
今後もバーチャルプロダクション/InCameraVFXの強化に合わせて整備が進んでいくといいですね。

読み直したらWorking Color Spaceのとこが一番の変化だったのでOCIOの記事じゃなくなってました。タイトルに偽りありです。変化がない箇所については「変化がないということを確認した」というのも大事だと思うことにします。
それはそうと、OCIO通した上でカラーグレーディングLUT効いてほしいなという気持ちがあります笑

二本め

その後もうひとつアドカレ記事を投稿しました。
https://zenn.dev/it_ks/articles/02d92a3ceb91e3

参考

Color Pipeline Basics (2021/12/09)
https://forums.unrealengine.com/t/color-pipeline-basics/264935

Color Pipeline & OpenColorIO (2022/07/27)
https://dev.epicgames.com/community/learning/courses/r1M/unreal-engine-technical-guide-to-linear-content-creation-pre-production/KJZk/unreal-engine-color-pipeline-opencolorio

Discussion