本記事は、2023年12月24日時点のものです。UE5.3(unrealengine5.3.2)の映像をOpenColorIO (OCIO)の設定を利用して、ST2084-P3-D65の設定にてHigh Dynamic Range (HDR)の中間データとしてMovie Render Queueで書き出してDaVinci Resolve STUDIOにて、UE5.3(unrealengine5.3.2)の画面と同じsRGBの色に戻るか検証しました。もっと正しい設定があるのかもですが満足です。

Unreal Engine 5(UE5)を使用して映像素材を制作し、そのデータを他の映像制作プロジェクトで利用できるように、幅広いダイナミックレンジを持つ中間データとしてHDR映像を書き出しすことで、後の制作プロセスで多くの柔軟性を提供します。映像制作者は、より広いダイナミックレンジを活用して、異なる視聴環境やフォーマットに最適化した最終出力を生成できるかもしれません。

ST2084-P3-D65の選択が正しかったのか、UE5から素材としての書き出しは単純にアントーンマップで、使いやすい色で出せば十分なのかもしれません。まあOpenColorIO (OCIO)とRender Queueの勉強ということでよく分からない検証をしましたとさ。

 

Unreal Engineを起動

UE5.3(unrealengine5.3.2)を使います。

アセットにはGladiator Arena Environment Kitを使います。
https://www.unrealengine.com/marketplace/ja/product/ca891e17730b47a2945fb69adb7ef741/questions

 

UE5のカメラとシーケンス初期設定

下準備として、CineCameraActorを追加します。カメラ設定は、フルサイズのセンサーに12mmレンズの設定にしました。逆光環境を作成し、カメラのハイライトからシャドーまでのダイナミックレンジをテストします。逆光環境は、カメラとレンダリングシステムのダイナミックレンジの能力を試すのに最適な環境です。

動画を書き出すためにシーケンサーを設定します。シーケンサーの設定に関しては、ここでは説明しません、適宜調べて適応してください。書き出しのテストのために1フレームだけにしています。

 

UE5の必要なプラグイン設定

プラグインの設定を確認します。プラグインは設定から入れます。

Movie Render QueueとMovie Render Queue Additional Render Passesのチェックを入れます。高品質な映像やアニメーションをレンダリングするためのプラグインです。

OpenColorIOのチェックも入れます。必要に応じて再起動して適用してください。OpenColorIO (OCIO) は、映像制作やゲーム開発において色の管理と変換を行うために使用されるオープンソースソフトウェアです。主に、異なるデバイスやソフトウェア間での色の一貫性を保つために使われます。これにより、色空間の違いによる色の歪みを防ぎ、特に映画やゲームのポストプロダクションで重要な役割を果たします。OCIOは、複数の色空間を管理し、異なるソフトウェアやデバイスで同じ色見えを実現することを可能にします。

 

OpenColorIO コンフィギュレーション アセットを作成

OCIO を使用する前に、OpenColorIO コンフィギュレーション アセットを作成する必要があります。 OpenColorIO コンフィギュレーション アセットを作成するには、以下の手順を実行します。 「コンテンツ ブラウザ」でコンテキスト メニューを右クリックし、[Miscellaneous (その他)] > [OpenColorIO Configuration (OpenColorIO コンフィギュレーション)] の順に選択して OpenColorIO コンフィギュレーション アセット を作成します。

より詳しい説明はドキュメントを参照です。
https://docs.unrealengine.com/5.3/ja/opencolorio-quick-start-for-unreal-engine/

コンフィグは初期設定(デフォルト)を使います。
・Destination Color Space (変換先色空間):変換先となる出力色空間。
・Destination Display View (ターゲット表示ビュー):色を変換する表示ビュー。
ですが、他の入力ソースからの映像ではなく、プロジェクト内からの映像なのでワーキングカラースペースを変換元色空間として選択しました。この辺は専門分野によってさまざまな設定があることでしょう。

映像業界では普通の色は709ですが、Windowsやゲーム画面はsRGBです。Rec. 709 は主に放送やビデオ用の色空間として設計されており、sRGB はウェブとコンピュータディスプレイ用に設計されています。

709=sRGBみたいなものです。Rec. 709 と sRGB の主な違いはガンマ曲線にあります。Rec. 709 はビデオ用の色空間で、約2.4のガンマ値を使用します。一方、sRGB はウェブとコンピュータディスプレイ用で、約2.2のガンマ値と線形区間を持っています。色域自体は非常に似ているため、多くの場合、これらの違いは目立たない場合もあります。

一つ目の設定として、sRGB-DisPlay -Un-tone-mappedを選択しました。画面の色をそのまま出力します。かつハイライトの情報もすべて残すためにUn-tone-mappedにしました。「sRGB-Display -Un-tone-mapped」での「アントーンマップ(Untone Mapped)」は、High Dynamic Range (HDR) のイメージを Standard Dynamic Range (SDR) のイメージに変換するプロセスを指していないことを意味します。通常、HDRイメージはより広い輝度範囲を持ちますが、SDRディスプレイで適切に表示するためには、トーンマッピングと呼ばれる処理が必要です。アントーンマップという用語は、このトーンマッピングの処理を施していない状態を指します。つまり、HDRのデータ範囲がそのまま保持されている状態です。sRGBのカラーでハイライトの情報を持つデータということです。

sRGBでもよいのですが、中間データとして別のソフトウェアにデータを渡したときに、ハイライトを戻す作業をしなくても情報を渡せる方が良いと考えて、HDRの形式が何かないかなとDaVinci Resolve 18にて色味を再現確認するため、同一の項目を探しました。

同じ項目で見つかったのがST2084-P3-D65は、HDR(High Dynamic Range)ビデオのための色空間と輝度の規格です。ST2084はHDRに関連する輝度レベルの規格を示し、P3は広い色域をカバーする色空間を指します。D65は白色点の標準で、6500Kの色温度を示します。この規格は、HDR映像で豊かな色彩と高いコントラストを表現するために使用され、映画や高品質なビデオ制作において重要です。

BT.2020 と P3-D65 の主な違いは色域の広さにあります。BT.2020はUltra HDテレビや4K/8K放送で使用される色空間で、非常に広い色域を持っています。一方、P3-D65はデジタル映画制作用の色空間で、BT.2020よりは狭いものの、従来のsRGBやRec.709よりは広い色域をカバーしています。D65は両方の色空間で用いられる白色点の標準を指します。

映像規格のHDR系はとても難しいです。記事を書いておきながら、わからないことばかりです。私はカメラ側の業界知識なのでカラーはRec.2020にしたかったのですが、UE5の初期設定のOpenColorIO (OCIO) には、Rec.2020がありません。より上位的なRec.2100はあるのですが、リゾルブのカラーマネージメントにACESのなかにRec.2100がありません。困ったものです。

OpenColorIO コンフィギュレーションの設定はこんな感じです。

など、いろいろ試してみたらよくわからなくなったので、P3-D65 ST2084の設定が一番しっくりきました。以上からST2084-P3-D65のACES1.1選択しました(RAWを選ぶべきだったかなと一瞬かんがえましたが)。

 

 

シーケンサーMovie Render Queueの書き出し設定

シーケンサーの書き出しを行います。

書き出し設定の変更は設定コンフィグをクリックします。

まず先ほど設定したカラー変換をするためにカラー出力を設定か追加選択します。

カラーにて、先ほど設定したコンフィギレーションソースを選択します。変換元と変換先の選択を忘れずに。sRGBでは上手く動作することを確認しましたので、ST2084を検証します。

もしST2084が怖い人は、sRGBにしてください。そのままの色で出てきます。

適用のチェックを忘れずに。

JPEGは、圧縮時にデータの一部を失うため、情報量が限られます。一方、EXR(OpenEXR)フォーマットは高い色深度(通常16ビットまたはそれ以上)をサポートし、より多くの色情報とダイナミックレンジを保持できます。これにより、RAWデータに近い柔軟性と詳細を提供し、特にポストプロダクションや映像制作で有効です。EXRは、特に高度なカラーグレーディングや合成作業において、JPEGよりも優れた選択肢となります。設定からEXRを追加して、JPEGをOFFにします。

テキスト書き出しなので、その他の設定をせずに書き出します。

 

DaVinci Resolve STUDIOで色の再現を確認

DaVinci Resolve STUDIOを起動します。バージョンは18.6です。

先ほどのEXRを取り込みます。静止画連番で書き出せば動画になります。

映像の取り込みができました。まずカラー設定を変更します。

 

DaVinci Resolve STUDIO Color Management設定

プロジェクトセッティングからColor Management タブを選択します。ここで、異なるカラースペースやカラーマネージメントのオプションにアクセスできます。 ACES Color Scienceを選択します。ACES (Academy Color Encoding System) は、映像業界で広く使われている高度なカラーマネージメントシステムです。 ACES 1.1を選択します。 Output Color SpaceとしてP3-D65 ST2084を選択します。P3-D65は広色域のカラースペースであり、ST2084はHDRコンテンツのための標準ダイナミックレンジを定義します。この組み合わせにより、より豊かな色とコントラストの映像が得られます。

SDRのモニターですが、ハイライトからシャドーまで情報を持っているようなLogやRAWのような映像になりました。いいかんじです。スコープを見ても良い感じです。

UE5の画面では、このようにSDRモニターに合わせて適宜トーンマップで表示されています。つまり書き出した情報はRAWのようなハイライトまで含む情報となっていることが確認できました。

では、ST2084をsRGBで表示する設定にしてみます。

左側のDaVinci Resolvと右側のUnreal Engine 5でほぼ同じ色味を再現できたということは、両方のソフトウェアで効果的なカラーマネージメントが行われていることを示しています。

こんな流れができるということです。

  1. ST2084でのUE5からの書き出し: ST2084はHDR(High Dynamic Range)コンテンツのための標準です。この設定でUE5から映像を書き出すことにより、高いコントラストと豊かな色彩を保ったまま、中間データ(つまり、次のステップでさらに加工するための映像ファイル)を生成します。
  2. 中間データの渡し: この中間データは、リゾルブなどの他のカラーグレーディングソフトウェアに渡すことができます。ここで重要なのは、UE5とリゾルブ間で一貫したカラーマネージメントを行うことです。これにより、色の再現性が保たれ、異なるソフトウェア間での色のブレが最小限に抑えられます。
  3. 色空間の変換: リゾルブでは、ST2084の中間データを受け取り、それを別のカラースペース(例えばRec. 709やsRGB)に変換できます。Rec. 709は放送用の標準カラースペースで、sRGBはウェブや一般的なディスプレイ用です。この変換プロセスを通じて、異なる配信プラットフォームや表示デバイスの要件に応じて、映像の色調を調整することが可能です。
  4. 柔軟性の確保: この方法では、UE5で作成した映像を、さまざまなカラースペースやダイナミックレンジの要件に合わせて柔軟に調整することができます。これにより、映像制作者は、特定のプラットフォームや視聴環境に最適化された映像を作成することが可能になります。

 

UE5で高品質な映像を書き出すための追加設定

Unreal Engine 5(UE5)で高品質な映像を書き出すための設定には、アンチエイリアス、ゲームオーバーライド、および高解像度の設定がオススメです。アンチエイリアス (Anti-Aliasing): アンチエイリアスは、映像のエッジやテクスチャに発生するジャギーやステアリングを減らします。ゲームオーバーライド (Game Overrides): ゲームオーバーライド設定を使用すると、映像の書き出し時にゲームの設定を上書きして、より高品質な映像を生成できます。 これには、影の品質、テクスチャ解像度、ビュー距離、ポストプロセス効果などが含まれますゲームオーバーライドを活用することで、リアルタイムレンダリング時とは異なる、より詳細で洗練されたビジュアルを作成することが可能です。

高解像度 (High Resolution): 高解像度設定を使用すると、標準の1080pや4Kを超える解像度で映像を書き出すことができます。 ただし、高解像度の映像を生成すると、ファイルサイズが大きくなり、レンダリング時間も長くなる可能性があるため、プロジェクトの要件とリソースを考慮する必要があります。

アンチエイリアスは、テンポラルサンプリングを使います。32ぐらい。あとはオーバーライド設定をします。このあたりの設定シーンによってさまざまですので、適宜調べて調整してください。

ゲームオーバーライドは、初期設定で最高品質になっているそうです。よくわからないのでそのままの設定で使います。

高解像度設定は、標準の1080pや4Kよりも高い解像度の映像を出力したい場合に特に有用です。ただし、既に目的の解像度が決まっている場合、この設定は必ずしも必要ではありません。たとえば、4Kで出力する予定であれば、標準の4K設定で十分です。

タイリングカウントは、画像を何分割してレンダリングするかを決定する設定です。例えば、タイリングカウントを2に設定すると、画像は縦横それぞれ2分割され、合計4つのセクションでレンダリングされます(四分割)。

オーバーラップは、タイリングされた各セクションがどの程度重なるかを決定する設定です。この値は0から0.5の範囲で設定でき、0は全く重ならないことを意味し、0.5はセクションが半分重なることを意味します。オーバーラップは、タイリングされたセクションの境界部分で発生する可能性のある視覚的な不一致を最小限に抑えるために使用されます。適切なオーバーラップ値を設定することで、セクション間のシームレスな結合を確保できます。

出力から解像度を指定できます。8Kにしたら処理が終わらないので、実際には4Kにしました。3840×2160ですね。

 

設定による画質の違いをチェック

出力の違いを見てみましょう。まずは最初の設定を入れずに書き出した映像です。シャギーやブツブツが目立ちます。

設定を入れた画像では、なめらかになっています。

設定なしの全景。

設定ありの全景。レンズフレアが左右に分かれています。アンチエイリアスか高解像度設定の影響と思われます。こういった部分も検証してから書き出しが必要です。

設定なしでは、像のミミのあたりの色味が不自然です。

設定ありでは自然な感じです。

連番で書き出すことで、中間データとして使える動画ができました。めでたしめでたし。

以下の公式の情報も参考ください。

OpenColorIO クイック スタート
https://docs.unrealengine.com/5.3/ja/opencolorio-quick-start-for-unreal-engine/

UE5 シーケンサーと Movie Render Queue の使い方
https://www.docswell.com/s/EpicGamesJapan/Z7V32W-cinematicdive-epic#p38