プロジェクトに MoviePipelineMasterConfig.h
を参照する既存の C++ コードが含まれる場合、これらの参照を MovePipelinePrimaryConfig.h
に置き換える必要があります。
Unreal Engine で ムービー レンダー キュー (MRQ) を使用して シーケンサー プロジェクトをレンダリングする場合、MRQ アセットの設定、合理的な コマンドライン レンダリング 引数、および Python エグゼキューターを組み合わせて使用することで、レンダリング ワークフローをカスタマイズすることができます。
多くの場合マシン上で単一のフレームを処理している従来のオフライン レンダリング ファームとは異なり、Unreal Engine では、作業の配布可能な最小単位は、1 カメラ カット、すなわち 1 レベル シーケンス ショットです。これは、Unreal Engine のリアルタイム機能が前のフレームの情報を活用しており、このデータを複数のマシン間で共有することができないためです。
ムービー レンダー キューのコンフィギュレーション ファイルは、従来のムービー レンダリング機能 と比較すると、複雑である可能性があります。MRQ は、従来のシステムで使用されていたコマンドライン引数から移行し、コマンドラインからレンダリングを実行する新しいシステムを採用しています。サポート対象のコマンドライン引数のリストは、いくつかの基本的な引数のみに縮小されているものの、Unreal Engine では Python を使用したレンダリング プロセスのカスタマイズをサポートしています。つまり、従来のムービー レンダリング システムと比較すると、コマンドラインによるレンダリングの実行方法をより細かく柔軟に制御することができます。
大まかには、次の 3 つのモードを実行できます。
-
単一のレベル シーケンスとコンフィグ アセットを指定する。
-
レンダリングするキュー全体を指定する。
-
カスタムの Python エグゼキューターを使用して、レンダリングを完全に制御する。
次のドキュメントでは、サポートされている 3 つの引数モードと、MRQ でレンダリングするプロジェクトで使用して、カスタマイズできるカスタムの Python エグゼキューターについて説明します。
Level Sequence 引数
-LevelSequence
引数を使用すると、MRQ でレンダリングする特定のレベル シーケンス アセットのパスを指定することができます。この方法を使用する場合は、UMoviePipelinePrimaryConfig プリセット アセットを指す -MoviePipelineConfig
引数も指定し、適切な設定がレンダリングするアセットに割り当てられるようにする必要があります。
この方法は、MRQ によるレンダリングを実行するためのコマンドラインの最も基本的な使用方法です。コマンドラインは次のようになります。ここで、subwaySequencer_P
はロードするマップ、SubwaySequencerMASTER
はレベル シーケンス アセット、SmallTestPreset
は UMoviePipelinePrimaryConfig プリセット アセットです。
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-LevelSequence="/Game/Sequencer/SubwaySequencerMASTER.SubwaySequencerMASTER"
-MoviePipelineConfig="/Game/Cinematics/MoviePipeline/Presets/SmallTestPreset.SmallTestPreset" -windowed -resx=1280 -resy=720 -log -notexturestreaming
この例の方法では、1 つのマップに対する 1 つのジョブのレンダリングのみをサポートしており、そのレベル シーケンスに含まれるすべてのショットをレンダリングします。
Movie Pipeline Config 引数
Level Sequence 引数に基づいているこの引数では、Primary Config およびレベル シーケンス アセットの代わりに、UMoviePipelineQueue アセットへのパス (MRQ UI を使用して保存) として動作する -MoviePipelineConfig
引数を指定することができます。これにより、キュー内の各ジョブは、キュー内のエントリで指定されたマップ上で、キューに格納された各ジョブの設定で、自動的に処理されます。この引数の場合、コマンドラインは次のようになります。
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-MoviePipelineConfig="/Game/Cinematics/MoviePipeline/Presets/BigTestQueue.BigTestQueue" -windowed -resx=1280 -resy=720 -log -notexturestreaming
Python を使用したカスタム パイプライン機能
Python でカスタムのエグゼキューターを使用して、独自のパイプライン機能を作成することもできます。このエクゼキューターは、コマンドラインの引数の読み取り、MRQ ジョブの設定や作成などに使用できます。これを実行するには、-MoviePipelineLocalExecutorClass=/Script/MovieRenderPipelineCore.MoviePipelinePythonHostExecutor
を使用し、次に - ExecutorPythonClass=...
で Python エクゼキューター クラスを指定する必要があります。
カスタムの Python エグゼキューターを実行する場合、コマンドラインは次のようになります。
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-MoviePipelineLocalExecutorClass=/Script/MovieRenderPipelineCore.MoviePipelinePythonHostExecutor
-ExecutorPythonClass=/Engine/PythonTypes.MoviePipelineExampleRuntimeExecutor -windowed -resx=1280 -resy=720 -log -notexturestreaming
このコマンドラインでは、エンジンが起動し、Python ベースのエグゼキューターのインスタンス (この場合は、MoviePipelineExampleRuntimeExecutor
) が作成されます。エグゼキューターが作成されると、コマンドライン引数の読み取り、MRQ ジョブの実行、ジョブ情報を決定するための外部サーバーとの通信などを実行できます。
独自の Python ベースのエグゼキューターを作成したい場合は、unreal.MoviePipelinePythonHostExecutor
を継承する Python ベースの UClass を作成してから、execute_delayed
をオーバーライドする必要があります。カスタム モジュールをインポートする「init_unreal.py」クラスを「/Content/Python
」フォルダに作成する必要があります。この「init_unreal.py
」ファイルは、Unreal が Python ファイルをパースし、エンジンがサポートしている UClass に書き換えて、コマンドラインで指定できるようにするために必要です。これを実行する方法の例については、サンプル スクリプトを参照してください。
「\Plugins\MovieScene\MovieRenderPipeline\Content\Python\MoviePipelineExampleRuntimeExecutor.py
」で Python エグゼキューターのサンプルを確認できます。このサンプルでは、コマンドラインからの読み取り方法、HTTP リクエストの作成方法、ローカル ソケット接続の試行方法が示されています。このサンプルの引数は、このページで説明した引数よりも若干多いため、テストを試行する際は、サンプル ファイルの一番上に記載されている情報を参照してください。