Unreal Engine (UE) で画像を合成するプロセスは、リアルタイム コンポジット プラグインである Composure を使用して処理されます。コンピュータによる生成 (CG) や実世界のソースなど、さまざまなソースからのビジュアル要素を合成して、エディタやゲームの中で操作しながら単一のシームレスなブレンドされた画像に重ね合わせることができます。ビジュアル エフェクト (VFX) 産業である映画やテレビにおいて、これまで単一フレームの合成は主にオフライン処理であり、このため各フレームのレンダリングに時間がかかりました。
プリビジュアライゼーションを念頭に置いて合成を始めると、最終的なレンダリングの見栄えを把握したり、パフォーマンスやショットの設定方法を変更したりすることもでき、ディレクターやスタッフが現場で作業を行う上で特に役立ちます。コンポジタについては、プリビジュアライゼーションをガイドとして使用することで、Nuke や Fusion など業界標準のサードパーティ ソフトウェアで作業を完了することができます。
Composure プラグインを有効にする
Composure コンポジット ツールを使用するには、[Edit (編集)] メニューに移動して [Plugins (プラグイン)] ブラウザを開きます。Compositing カテゴリで [Composure] を有効にし、エディタを再起動してこの変更を反映します。
コンポジット ツリー パネル
Composure プラグインを有効にしたら、[Window (ウィンドウ)] > [Virtual Production(バーチャル プロダクション)] メニューから [Composure Compositing]** パネルにアクセスします。
このパネルを使用して、コンポジット 要素 の階層をビルドします。こうした要素は、コンポジット シーンの一部をレンダリングするために必要なオブジェクトです。例えば、上記の階層は「My_Composite」という名前のコンポジションで構成されており、この下には「FG_Element」、「BG_Element」、「Media_Plate」という 3 つの要素があります。それぞれの要素には、合成されるシーンの各部分が含まれています。FG_Element と BG_Element は、シーンの前景オブジェクトと背景オブジェクトの両方を含む CG レイヤー 要素です。Media_Plate は、コンポジット パイプラインへのビデオ入力に使用する Media Plate (メディア プレート) レイヤーです。
[Composure Compositing] パネルで右クリックして [New Comp Shot] を選択し、独自のコンポジットを追加します。
新しい要素を追加するには、コンポジション ショットを右クリックして [Add Layer Element (レイヤー要素を追加)] を選択し、[Pick an Element Type (要素タイプを選択)] 選択ウィンドウで追加する要素のタイプを選択します。
要素を階層構造で互いにネストすることで、階層ツリーの上位にある要素の全体で使用可能な要素を判断できます。要素はレベル内の単なるアクタであり、他のアクタと同様に追加できることに注意が必要です。このパネルはこれらの要素をネストして体系化する方法を提供するもので、要素を使いやすくするコントロールもいくつか提供されています。
移植とシーンでの使用を容易にするために、要素が独自のサブレベルに追加されていることを確認してください。要素はレベル アクタなので、開く可能性のある他のレベルにコンポジット ツリーをロードできます。
Composure Compositing パネルの解説
拡大表示するには画像をクリック。
要素列 には、シーン内で合成される要素で構成されたコンポジション ショットが含まれます。ここには、現在ロードされているマップの各レイヤーを示す行も表示されます。
要素名 は追加した各レイヤー要素に与えられる一意の名前で、コンポジット マテリアル グラフ内にある特定の要素の参照に使用されます。
コンポジション ショットまたはレイヤー要素は、それぞれの 目 のボタンを使用してオン/オフの切り替えができます。
アルファ ボックスでは、選択したコンポジション ショットまたはレイヤー要素の不透明性を制御します。このテキスト ボックスに値を入力するか、ドロップダウンをクリックしてスライダーを使用することで、可視性を制御します。
鍵 のアイコンでは、要素のフリーズ フレーミングを切り替えます。アニメーションまたはビデオ ストリーミングの場合、要素のレンダリングを一時停止して位置をフリーズできます。
メディア出力 の切り替えでは、選択したコンポジション ショットまたはレイヤー要素に対するレンダリング結果のオン/オフを切り替えることができます。これを初めてオンにした際は、Media Output Definition アセットの選択 (または作成) が求められます。カードやポートなど、ターゲット出力のアセットの詳細を入力します。
コンポジション ショットまたはレイヤー要素を選択すると、その要素のプロパティと属性がレベルの [Details (詳細)] パネルで利用できるようになります。コンポジットに特有の設定は Composure カテゴリにあります。
コンポジション ショットまたはレイヤー要素を選択すると、カメラ アクタのプレビュー ペインと同様に [Element Preview (要素のプレビュー)] ペインがレベルのビューポートに表示されます。ここには選択した要素のレンダリングが表示され、要素が不適切な状態にある場合はエラー メッセージが表示されます。例えば、表示する情報がない場合は「Empty」(空) と表示されます。
要素は線形色空間で処理されます。プレビューはデフォルトで sRGB 変換に対して線形で表示され、トーンマッピングすることなく画像が表示されます。その結果、白飛びが発生しますが、カスタム マテリアルを介して独自のトーンマッピングを追加するなど、要素のプレビュー方法を変更するオプションがあります。
コンポジット要素
要素 は、コンポジション ショットまたは個々のレイヤー要素であるコンポジット画像の構築に使用する個々の構成要素です。これらの各要素は、それぞれがコンポジット シーンの一部のレンダリングを担うレイヤーまたはレベル アクタから成るコンポジット画像を構成します。レイヤー アクタは、合成したシーンの一部のレンダリングを個別に担います。エレメントはコンポジットの作成に使用される個別の構成要素です。
内部パス
それぞれの要素には、実行する一連の内部パスがあります。これらは、その要素のタイプに固有の一連のステップです。それぞれのパスは、コンポジットの要素のレンダリングにおける個別のステップです。パスを持たない要素では何も行われません。さまざまな種類のパスを利用することが可能で、事前定義された独自のパスが付属する特定の要素アーキタイプもあります。例えば、メディア プレート要素にはクロマキーとスピル除去のパスが組み込まれています。
要素の解説
[Composure Compositing Tree] ウィンドウで要素を選択すると、選択した要素の情報とプロパティがレベルの [Details (詳細)] パネルに表示されます。
拡大表示するには画像をクリック。
[Inputs (入力)] 属性では、ビデオ入力にメディア テクスチャを使用するなど、一部の要素をコンポジット システム外のリソースにアクセスできるようにします。これらによって要素に依存関係をルーティングする方法が提供され、他の後続のパスや事前定義された入力を含む要素のタイプで参照可能な特殊なパスとして機能します。
[Target Camera Actor (ターゲット カメラ アクタ)] では、レベルでカメラ アクタを使用するために、参照用に視点を必要とする要素のタイプを有効にします。これが定義されていない場合、要素はレベルを検索して最初に見つかったカメラ アクタを割り当てます。個々の要素に対してこれをオーバーライドしたり、ルート要素から継承させたりすることができます。
Transforms は、何らかの入力を受け取ってそれを変更したり、それを使って新規に何かを生成したりするパスです。例えば、カラー トランスフォームは色空間からイメージを取得して、別の色空間に配置します。要素の最終レンダリング結果は、このリストの最後のトランスフォームで生成されます。
クロマキー、スピル除去、さらには追加可能なカスタム タイプなど、多くのタイプの パス が存在します。これらには共通するプロパティがいくつかありますが、それぞれのパスに特有なものも含まれます。
[Enabled (有効)] フラグではパスのオン/オフを切り替えます。これを無効にすると、そのパスが存在しないものとして動作します。
[Pass Name (パス名)] には、後続のパスで参照可能な名前を入力します。
パスをマテリアルで参照する場合は、パスに一意の名前を付ける必要があります。
[Intermediate (中間)] フラグは、後続のパスでそれを使用するかどうかを制御します。デフォルトでは、次のパスでのみ必要と想定されます。その後は、別のパスで使用できるようにレンダー ターゲットを解放します。パスの結果により長時間アクセスできるようにする場合は、このフラグを無効にします。
要素とパスのレンダリングには、共有レンダー ターゲット プールが使用されます。すべてのターゲットの各フレームはプールに返されて再配布されます。プール内の未使用のターゲットはフラッシュされます。
[Outputs (出力)] はパスの別の形式です。これは要素のレンダリング結果に影響しません。代わりに、ビデオ キャプチャ カードやプレイヤー ビューポートなど、パスの結果を別の場所にルーティングします。
[Render Resolution (レンダリング解像度)] では要素の解像度出力を定義します。この設定は親から継承したりオーバーライドしたりすることが可能です。一部のパスにはこの設定をオーバーライドまたはスケーリングするオプションがあります。
[Preview Transforms (トランスフォームのプレビュー)] では、要素を線形色空間で処理します。デフォルトでは、画像はトーンマッピング処理されずにプレビュー表示されるため、色が白飛びしたように表示されることがあります。要素に対してオプションのトランスフォームを指定すると、エディタで画像がどのようにプレビュー表示されるかを調整できます。
[Auto Run (自動実行)] フラグを切り替えることで、要素が実行 (またはレンダリング) されないようにします。このフラグの状態は、[Composure Compositing (Composure コンポジット)] パネルのツリー ビューにある目のアイコンにも反映されます。
コンポジット マテリアル
次のセクションでは、コンポジット パイプラインの各部分がどのように機能し、UE4 でどのように連携するかについて詳しく説明します。
Composure で基本的なコンポジションを作成する手順については、「Composure のクイック スタート」 を参照してください。
要素をネストする
要素は互いにネストすることが可能で、あらゆる種類の要素を階層に配置できますが、最終的なコンポジションを最上部に配置して、そのレイヤー要素をその下に含める必要があります。ネストする新しい要素を追加するには、対象の親要素を右クリックして、コンテキスト メニューから [Add Layer Element (レイヤー要素を追加)] を選択します。次に、追加する要素のタイプをウィンドウで選択します。
要素をネストすることで、コンポジションで使用する要素のレンダリングの順序が決まります。最初に親要素下にあるすべての子がレンダリングされ、最後に親要素がレンダリングされます。親要素は、その子要素のレンダリング結果を自身のレンダリング パスで使用できます。
コンポジット エレメント マテリアル パス
[Compositing Element Material Pass (コンポジット エレメント マテリアル パス)] は、ユーザー作成のマテリアルをコンポジット パイプラインに追加できるようにするトランスフォーム パスです。そのマテリアルでは、名前でサブ要素を参照できます。
拡大表示するには画像をクリック。
マテリアル内の要素を参照する
マテリアルで テクスチャ パラメータ を作成し、子要素のレンダリング結果に自動入力します。パラメータの名前をコンポジット ツリー内のサブ要素の名前と同じにします。
拡大表示するには画像をクリック。
出力に必要なのは単色だけなので、これらのマテリアルのコンポジットにはポスト プロセス マテリアルを使用します。必要に応じて、ポスト プロセス マテリアルに対して [Output Alpha (出力アルファ)] を有効にします。
[Details (詳細)] パネルで、このマテリアルを [Material (マテリアル)] スロットに接続します。すべて正しく設定すると、ビューポートのプレビューで適切に動作するようになります。
プレビューに子要素が表示されない場合は、名前が完全に一致していることを再確認してください。入力ミスや余分なスペースがあると失敗の原因になります。
サブ要素が無効でレンダリングされない場合は、テクスチャ パラメータに半透明な黒色のテクスチャが表示されます。名前を指定した要素が見つからない場合、テクスチャにはそのマテリアルのデフォルトのテクスチャが使用されます。
マテリアルの移植性を高める
マテリアルで要素を名前で参照するのは簡単ですが、これによりマテリアルが非常に特殊化されるため、特定の名前を持つ要素でのみ機能することになります。別の方法として、マテリアル テクスチャ パラメータに一般的な名前を付けて、パスのプロパティでサブ要素を参照するように設定することもできます。
拡大表示するには画像をクリック。
パスにマテリアルを設定すると、[Input Elements (入力要素)] というプロパティ セクションが追加されます。ここにはマテリアルのテクスチャ パラメータがすべて一覧表示され、特定の子要素を参照するようこれらを設定できます。
マテリアル内の他の要素を参照する
要素と同様に、マテリアルでは実行済みの他のパスを参照することができます。これが単一の要素で順次トランスフォームを行う方法です。例えば、メディア プレートを使用して、クロマキーのパスを行い、クロマキー処理の結果を使用するスピル除去のパスを行います。
現在のパスの直前のパス以外を参照する必要がある場合は、その他のパスの [Intermediate (中間)] フラグをオフにする必要があります。
特殊なパラメータ名「PrePass」
PrePass は、は特殊なパラメータ名で、「この直前に実行されたパスへの参照」を意味してます。これをマテリアルで使用すると、マテリアルの [Details (詳細)] パネルでパラメータ マッピングを設定する必要がなくなるため、移植性が高くなります。
2 つの要素を合成する
デフォルトでは、プロジェクトはポスト プロセス パイプラインを通じてアルファ データを送信するように設定されています。CG レイヤーを正しく機能させるには、[Project Setting (プロジェクト設定)] の [Enable alpha channel support in post processing (ポストプロセスでアルファ チャンネル サポートを有効にする)] を [Linear color space only (線形色空間のみ有効)] に設定する必要があります。この設定は [Rendering (レンダリング)] > [PostProcessing (ポスト処理)] カテゴリにあります。
マテリアルで要素をよりシンプルに合成するために、次の機能を使用できます。
Over ノードは [A] 入力を取得し、[A] のオパシティを使用して [B] 入力をオーバーレイし、この 2 つをブレンドします。float4 RGBA ベクターを取得するこのノードでは、RGB チャンネルがアルファ値で事前に乗算されていることを想定しています。
拡大表示するには画像をクリック。
以下の例では、Over マテリアル式によって FG_Element
と BG_Element
がブレンドされます。FG_Element
のアルファは、前景オブジェクトと背景プレートのブレンドに使用されます。
マテリアル パラメータを公開する
スカラーとベクターのマテリアル パラメータは、パスの [Details (詳細)] パネルにある [Material Parameters (マテリアル パラメータ)] カテゴリに自動的に公開されます。これによりコンポジションの調整、微調整、試行をより簡単に行えるようになります。
拡大表示するには画像をクリック。
このサンプル マテリアルでは、[Blend (ブレンド)] スカラー パラメータが要素の [Details (詳細)] パネルに自動的に公開されています。ここで値を調整することで、エディタでの作業中にすばやく編集を行ったり、さまざまな設定を試したりすることができます。
コンポジットを出力する
Output (出力) パスは、異なる要素の最終結果を一部の外部コンシューマーにルーティングする役割を担っています。それぞれの要素にはユーザーが出力パスを追加できる場所が用意されています。
[Outputs (出力)] の横にある [add (追加)] (+) ボタンをクリックすると、以下の選択可能なオプションが表示されます。
Compsiting Media Capture Output
EXRFile Compositing Output
Player Viewport Compositing Output
Render Target Compositing Output
最も一般的、または基本的な出力先は Media Capture (メディア キャプチャ) パスを使用したキャプチャ カードです。すばやく簡単にメディア キャプチャ パスを要素に追加するには、ツリー パネルのボタンを使用します。
シーケンサーを使用してコンポジションをエクスポートする
代替のワークフローとして、コンポジットと他のレイヤーをレンダリングする方法と、シーケンサ をパススルーする方法があります。
拡大表示するには画像をクリック。
詳細については、「シーケンサによるリアルタイム コンポジット」 を参照してください。