Movie Render Queue レンダリング パス

ムービー レンダー キューによってサポートされるレンダリング パスのリファレンスです。

Windows
MacOS
Linux

レンダリング パス は、レンダリング ジョブの設定に含めて Movie Render Queue 出力に追加することができます。

スライダーをクリックしてドラッグすると、ムービー レンダー キューがサポートしている幾つかのレンダリング パスの例が切り替わります。

各レンダリング パス設定により、別々のレンダリング モードでムービーが出力されます。選択したすべてのレンダリング パスは、最終出力フォルダで隣り合わせで出力されます。選択した外部ポストプロダクションあるいはコンポジット プログラムにおいて、後でそれらを使用することができます。

追加されたレンダリング パスは、最終レンダリングで付加的に適用されません。パスはそれぞれ、選択された出力形式で別のシーケンスとして出力されます。

レンダリング パスは [Settings] ウィンドウでレンダリング ジョブに追加することができます。UI の [+Setting] ドロップダウン メニューをクリックし、出力するレンダリング モードを選択します。すべてのレンダリング パスは [Render] グループにリスト表示されます。

クリックして画像を拡大します。

これらのオプションをどれかクリックすると、[Rendering] グループの [Setting (設定)] リストに追加されます。

クリックして画像を拡大します。

レンダリング パスは、他の設定と同様に有効または無効にすることができます。可能な場合はプロパティの編集用に選択することもできます。

サポートされているレンダリング パス

Unreal Engine からの主な出力は、ビューポートで表示される最終イメージを作成する、デフォルトの [Deferred Rendering (ディファード レンダリング)] 設定で処理されます。Detail Lighting (詳細ライティング)、Lighting Only (ライティングのみ)、Path Tracer (パス トレーサー)、Reflections (リフレクション)、Unlit (ライティングなし) などのバリエーションがあります。これらのバリエーションは最終イメージの作成には使用されません。ここではレベル エディタ ヴューポートと同等です。レンダリング パスのリストすべてをこのセクションで詳細に説明します。

ディファード レンダリング

以下がディファード レンダリング オプションです。

レンダリング パス

サンプル イメージ (クリックして拡大)

説明

ディファード レンダリング

Final render

シーンの最終イメージを表示します。ビューポートに表示されるものと一致します。

詳細ライティング

Detail Lighting

法線マップと結合したライティングのみを表示する特別なシェーダ バリエーションです。シーンのジオメトリを目立たせるのに便利です。

ライティングのみ

Lightning Only

詳細ライティングと似ていますが、ライティングに影響を与える法線アップはありません。

パス トレーサー

Path Tracer

各フレームを蓄積するときにパス トレーサー データを表示します。このモードで高品質を維持する方法の詳細については、「パストレーサー レンダリングでのノイズの低減」を参照してください。現時点では、すべてのレンダリング機能がパストレーサーでサポートされているわけではありません。

リフレクションのみ

Reflections Only

ワールド内のすべてに 100% 反射をつける特別なシェーダー バリエーションです。

ライティングなし

Unlit Only

ライティング情報なしでアルベドのみを表示する特別なシェーダー バリエーションです。

すべてのレンダリング パスには同じプロパティが付いていますが、レンダリング パスごとに個々に設定することができます。

Deferred Rendering Options

ID

プロパティ

説明

1

Accumulator Includes Alpha

有効にすると、複数の temporal/spatial サンプルがアルファ チャンネルに蓄積します。この場合、r.PostProcessing.PropagateAlpha を 1 または 2 に設定する必要があります。手順は、[Project Settings] > [Rendering] から [Post Processing] 設定の [Enable Alpha Channel Support] を使うことで有効にできます。すべてのピクセルが不透明にならないように、スカイとフォグの両方をシーンから除去する必要があります。この設定を有効にすると、蓄積の負荷が約 30% 増加するため、必要な場合を除く使用は控えてください。複数のテンポラル サンプリングまたはスペース サンプリングを使用しないレンダリングに適用します。

2

Disable Multisample Effects

DOF、テンポラル アンチエイリアシング、モーションブラー、色収差など、複数のピクセルを一緒にブレンドするポストプロセス エフェクトを無効にします。Object ID レンダリング パスを使用する場合は好ましくありません。この設定により、シーン内でこれらのポストプロセスを無効にせずに、レンダリング ジョブに対するこれらのポストプロセスを除外することができます。

3

Additional Post Process Materials

レンダリングが完了した後に適用する一連の追加のポストプロセス マテリアルです。これにより、かなり時間が追加される場合があります。デフォルトで MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors が含まれます。

4

Add Default Layer

ステンシル レイヤー配列にまだ含まれていないすべてのオブジェクトを含むステンシル レイヤーを追加で作成します (以下を参照)。デフォルト レイヤーは個別にレンダリングされるので、後に再コンポジットするためにオブジェクトの小さなグループを除外するレンダリングを作成することができます。

5

Stencil Layers

シーンにオブジェクトのグループを含むステンシル レイヤーのリストです。シーンはすべてのオブジェクトで再度レンダリングされ、指定されたレイヤー上にオブジェクトを含まないピクセルはクリップされて黒くなります。その後、ポストプロセスが適用されて、DoF、モーションブラー、TAA を使用する機能が保持されます。新しいレイヤーは [Window] > [Layers] から作成します。ステンシル レイヤーは、ベースレイヤーの追加のポストプロセス マテリアルと一致し、カスタム深度/ステンシルをサポートするマテリアルとのみ互換性があるため、レイヤー別のポストプロセス マテリアルをサポートしません。

ステンシル レイヤー

スクリーンスペース リフレクション (SSR)スクリーンスペース アンビエント オクルージョン (SSAO) など、スクリーンでのコンテンツの描画が求められるリアルタイム レンダリングのエフェクトの多くは、後でスクリーンスペースのポストプロセスに使用することができます。一般的なレイヤー システムは、周囲の環境からの反射を反映しながら、キャラクターのみをレンダリングすることができます。リアルタイム レンダリングでは通常これができないので、代わりに ステンシル レイヤー を実行します。

ステンシル レイヤーを使うと、レイヤーごとにスクリーン全体を再度レンダリングしますが、レイヤーに属しているアクタもステンシル バッファにレンダリングされます。ステンシル バッファ を使用して、このレイヤーに入れようとしているアクタの外側にあるピクセルをクリップします。この機能の長所は、シャドウをキャストするオブジェクトが引き続きアクタ上にシャドウをキャストすることができ、そのアクタが他のレイヤーにシャドウをキャストできる点です。

ステンシル バッファにレンダリングされると、ポストプロセス エフェクトが適用され、各ピクセルを取得して半透明の黒がピクセルに書き込まれます。半透明の後、そしてポストプロセスの前にこの処理が行われ、その後ポストプロセスがこのレイヤーに適用されます。アルファ チャンネルを維持することができるので、ポストプロダクションにおいて実際に影響を受けたピクセルとその量を知ることができます。

以下は、デフォルトレイヤーの横にある 3 つのステンシル レイヤーの例です。DoF などのポストプロセス エフェクトが正しく適用されておらず、前景のオブジェクトも背景画像から切り取られていることがわかります。これらの画像を一緒に追加して、最終レンダリングと同様の結果を作成することができますが、データのアンプリマルチプライ処理が必要になる場合があります。

レンダリングを別々のステンシル レイヤーに分割

こちらは元の画像で指定したレイヤーの 1 つに単純な色相シフトを適用した Nuke からのサンプル画像です。元の画像はアルファ チャンネル累積を有効にし、カラー出力設定でトーン カーブを無効にしてレンダリングされています。

クリックして画像を拡大します。

クリックして画像を拡大します。

半透明オブジェクトはそれらの後ろにある別のレイヤーから不透明なオブジェクトを表示し、背景レイヤーは前景オブジェクトによって遮蔽されている部分を黒い穴で表示するので、ステンシル レイヤーは真のレイヤー システムではありません。

パストレーサー レンダリングでノイズを低減する

パストレーサー レンダリング モードは、レンダリングされる各フレームのパスを累積します。その結果、特に、カメラ フレームの内容に大幅な変更が生じると、画像のピクセルが入力されるときにノイズ画像が発生します。

クリックして画像を拡大します。

このノイズを削減するには、アンチエイリアシング設定でスペース サンプルの数を増やす必要があります。

Increased spatial sample count

これにより、画像が複数回レンダリングされ、追加サンプルによってパストレーサーがより効果的にギャップを埋めることができます。パストレーサー レンダリングのノイズを効果的に除去するには、大量のスペース サンプルが必要ですが、画像の出力に必要な時間も大幅に増えます。

パストレーサー レンダリングの例 (サンプル数:1、8、16、32、64、128)

現時点では、完全にノイズが発生しないレンダリング方法はありません。

パストレーサー レンダリング モードは Unreal Engine 4.26 では実験的機能となっています。今後改善を追加していく予定です。

オブジェクト ID

ディファード レンダリング

オブジェクト ID レンダリング

オブジェクト ID レンダリング モードは Unreal Engine 4.26 では実験的機能となっています。さらにこれは Unreal Editor でのみ使用可能です。シッピング ビルドでは使用できません。

オブジェクト ID レンダリング パスは、シーン内の各コンポーネントに一意の ID が割り当てられている画像を出力します。この画像をポスト プロダクション スイートで使用して、シーンで個々のオブジェクトを選択し、それらにマスクを作成することで、特定のオブジェクトを選んで調整を適用することができます。たとえば、画像全体の色相を変更するのではなく、1 つのオブジェクトのみ、またはオブジェクトのセットだけ色相を変更することができます。

オブジェクト ID パスには、使用可能な情報を提供するためにいくつかの特定の要件があります。次の手順に従って有効にして、Render Queue がサポートできるように設定をします。

  1. [Plugins] > [Built-In] > [Rendering] の順に開いて [Movie Render Queue Additional Render Passes] プラグインを有効にします。プラグインを有効にした後は、エディタを再起動する必要があります。これにより、オブジェクト ID が ムービー レンダー キュー設定メニューの中にオプションとして追加されます。

    Additional render passes

  2. Object Ids (Limited) レンダリング パスをジョブの設定に追加します。

    The Object IDs setting

  3. オブジェクト ID パスと一緒にコンポジットする予定の他のレンダリング パスは [Disable Multisample Effects (マルチサンプル エフェクトを無効)]true に設定します。これにより、モーションブラー、被写界深度、アンチエイリアシング、ピクセルの複数のレイヤーをブレンドするその他のポストプロセスが除去され、すべてのオブジェクトが鮮明なエッジを維持できるようになります。オブジェクト ID パスが最終イメージと正しく一致するために、これは必要です。

  4. [Deferred Rendering] 設定の [Deferred Renderer] データの [Additional Post Process Materials] を展開して、MovieRenderQueue_WorldDepthMovieRenderQueue_MotionVectors の両方を有効にします。

    クリックして画像を拡大します。

  5. レンダリングするすべてのカメラの [Screen Percentage (スクリーン パーセンテージ)]100 に設定されていることを確認します。オブジェクト ID パスが最終イメージと正しく一致するために、これは必要です。

    Screen Percentage 100 percent

  6. ジョブに [Anti-aliasing (アンチエイリアシング)] 設定を追加し、[Spatial Sample Count (スペースサンプル数)]8 に設定します。これにより、TAA がサポートされていない制限を超えるのに役立ちます。Temporal Sample Count (テンポラル サンプル数)] を使用すると、各サンプル間のギャップをカバーするモーションブラーが欠如するため、オブジェクトの複数のpコピーがわずかに重なり合ってしまうだけで望まない結果を生じやすくなります。

    Set spatial sample count to 8

  7. .exr Sequence 出力モードを設定に追加し、その他の出力はすべて非アクティブ化または除去します。Multilayer プロパティが有効になっていることを確認します。

    Set multilayer EXR

これらの設定をした上でムービー レンダー キューを開始すると、最終イメージ、オブジェクト ID、ワールド深度、モーションブラーを含むマルチレイヤー EXR が出力されます。

オブジェクト ID は Cryptomatte [ https://github.com/Psyop/Cryptomatte] 仕様の EXR ファイルに格納されます。このデータを読み取るプラグインはサードパーティ ソフトウェアから入手できます。

ワールド深度

ワールド深度 は赤チャンネルに格納されるワールド単位で書き込まれた深度です。これを使用して、ポストプロダクションで 被写界深度 (DoF) を再作成することができます。カメラ焦点距離とシャッター サイズを EXR メタデータから読み取って、インゲームの被写界深度に自動的に一致させることができます。

以下は、Nuke ZDefocus2 ノードの例です。EXR ファイルからメタデータを読み取り、リアルタイムで検出されるものと同様のブラーを生成します。

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_WorldDepth FinalImageMovieRenderQueue_WorldDepth.red FinalImageMovieRenderQueue_WorldDepth.green FinalImageMovieRenderQueue_WorldDepth.blue FinalImageMovieRenderQueue_WorldDepth.alpha}
ZDefocus2 {
 z_channel FinalImageMovieRenderQueue_WorldDepth.red
 math depth
 fill_foreground false
 center {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 focal_point {960 540}
 size {{"((input.height*(focalLength*focalLength / (fstop * (focalDistance - focalLength)))*.5 / sensorWidth)/10)" x1 26}}
 max_size 100
 filter_type bladed
 legacy_resize_mode false
 show_legacy_resize_mode false
 blades {{"[metadata exr/unreal/camera/FinalImage/dofDiaphragmBladeCount]"}}
 name ZDefocus1
 selected true
 xpos 959
 ypos 229
 addUserKnob {20 User}
 addUserKnob {7 focalLength l "Focal Length"}
 focalLength {{"[metadata exr/unreal/camera/FinalImage/focalLength]"}}
 addUserKnob {7 focalDistance l "Focal Distance"}
 focalDistance {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 addUserKnob {7 sensorWidth l "Sensor Width"}
 sensorWidth {{"[metadata exr/unreal/camera/FinalImage/sensorWidth]"}}
 addUserKnob {7 fstop l Fstop}
 fstop {{"[metadata exr/unreal/camera/FinalImage/fstop]"}}
}

モーション ベクター (ベロシティ)

モーション ベクターは X と Y の[0,1] 座標空間に格納されます。[0.5, 0.5] の場合は動きがありません。

以下に示す Nuke VectorBlur ノードは、画像にモーションベクターを適用するために使用します。Ureal Engine は、他のレンダリング パッケージとは異なり、画面全体にノーマライズされたモーション ベクターを格納します。その結果、Nuke VectorBlur ノードでは uv_offset が -0.5 に設定され ([0, 1] ではなく [-.5, .5] に再スケールするため)、モーション ブラー スケールは画像の幅によって決まります。

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_MotionVectors FinalImageMovieRenderQueue_MotionVectors.red FinalImageMovieRenderQueue_MotionVectors.green FinalImageMovieRenderQueue_MotionVectors.blue FinalImageMovieRenderQueue_MotionVectors.alpha}
VectorBlur2 {
 uv FinalImageMovieRenderQueue_MotionVectors
 uv_offset -0.5
 blur_type uniform
 scale {{input.width}}
 soft_lines true
 name Unreal_VectorBlur
 selected true
 xpos 1338
 ypos -93
}

選択したソフトウェアによっては、モーション ベクターの X チャンネルと Y チャンネルを個別の再スケーリングが必要な場合もあります。詳細については、次のセクションを参照してください。

オブジェクト ID、深度、ベロシティをポストプロセスで組み合わせる

複数のスペース サンプル、深度、ベロシティを組み合わせることで、Unreal Engine のポストプロセス パイプラインと同様の結果を出すことができます。深度マップによる被写界深度、ベロシティ テクスチャによるモーションブラーこれにより、オブジェクト ID マットを使用して、ポストプロセスを適用する前にオブジェクトと色補正アンチエイリアシングは最初にレンダリングするときに 8 以上のスペース サンプルを使って再作成することができます。

DoF とモーションブラーによって強調表示の明るさを正しく維持するために、シーンはトーンカーブを無効にしてレンダリングする必要があります ([Settings] -> [Color Options] -> [Disable Tone Curve (トーンカーブを無効)])。これにより、sRGB 色空間で HDR リニア値が出力されます。DoF およびモーションブラーを適用した後、それを (Linear sRGB から) 目的の色空間に変換することができます。トーンカーブを無効にしないと、ブラーの適用前に HDR 値が大幅に減少するため、DoF とモーションブラーの適用後、強調表示が非常にぼんやり見えてしまいます。

ColorOutput.png

以下は、上記で説明されている ZDefocus ノードと VectorBlur ノードを使用する Nuke グラフの例です。ベロシティ テクスチャを Nuke で使用するには、赤チャンネルと緑チャンネルを入れ替える必要があります (ShuffleCopy ノードを使用した下のグラフの RG_TO_GR)。

さらに、Unreal はモーションベクターを X と Y の両方で [0-1] にノーマライズして格納するので、赤チャンネルを ImageHeight/ImageWidth (この例の 1080/1920) または 0.5625 に再スケールする必要があります。この再スケールを行うには、ベロシティ チャンネルから -0.5 を減算し、それに 0.5625 を乗算して、VectorBlur ノードに接続する前にベロシティ チャンネルに 0.5 を加算します。赤チャンネルの再スケールに失敗すると、結果としてモーションブラーの角度が正しくなくなります。

この Nuke グラフは 8 つのスペース サンプル、オブジェクト ID パス、モーション ベクター、ワールド深度でレンダリングされた EXR を受け取ります。DoF 情報は EXR メタデータから自動的に取得されます。クリプトマット ノードは、ファンの羽根とカーペットのマスクを作成するために使用され、単純な色相シフトのマスクとして使用されます。色相シフトの適用後、前述の ZDefocus ノードが適用され、次に VectorBlur が適用されます。

これを使用するには、プロジェクトで [Output Velocities During Base Pass (基本パス時の出力速度)] を有効にする必要があります。このプロジェクト設定を変更したら、エディタを再起動する必要があります。

さらに、r.BasePassForceOutputsVelocity CVar を 1 に設定する必要があります。/Engine/Config/ConsoleVariables.ini を編集すればエンジン全体に適用できます。または、各ムービー レンダリングを開始するときにコンソール変数として適用することができます。

BasePassOutputsVel.png

ConsoleVariables.ini

[Startup] r.BasePassForceOutputsVelocity=1

UI レンダリング (ノンコンポジット)

UI レンダラは、ビューポートに追加されたスレートまたは UMG ウィジェットをアルファ付きの別の出力としてレンダリングします。これをコンポジット プログラムで最終イメージと組み合わせて、レンダリングする UI 要素を追加することができます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる