Amazon Web Services ブログ

AWS Thinkbox Deadline を使って Epic Games の Unreal Engine パイプラインをスケジューリング

このブログ記事は、Epic Games の Senior Product Specialist である Michael Muir 氏と共同執筆したものです。

Figure 01: Epic’s Unreal Engine main interface panel, showing a meerkat balancing on an eggshell in the main viewport. Also shown is a DeadlineDataAsset property panel, and a timeline view.

図 01: Epic Games の Unreal Engine は、リアルタイムのコンテンツ生成、操作、レンダリングを提供します。

はじめに

Epic Games の Unreal Engine は、リアルタイム 3D コンテンツの作成と操作に革命をもたらしました。Unreal Engine 5 の Lumen や Nanite などの技術的進歩により、没入感の高い忠実度とリアルなインタラクティブエクスペリエンスが飛躍的に向上し、テレビや映画からゲーム、建築、エンジニアリング、建設 (AEC) に至るまで、さまざまな業界で活用されています。

Unreal Engine の主な利点の 1 つは、アーティストがリアルタイムで最終クオリティ、またはそれに近いクオリティで作業できることです。しかしながら、このリアルタイムワークフローの利点は、アーティストがショットのレンダリングやその他のパイプラインプロセスが完了するのを待たなければならないとなると、途端にに失われてしまいます。Windows、Linux、macOS ベースのレンダーファーム向けのハイブリッド型の業務管理およびコンピュートマネジメントソフトウェアである AWS Thinkbox Deadline は、この問題の解決に役立ちます。レンダリングなどのプロセスをコンピュートファームにオフロード可能になるため、クリエイティブチームはその分、アーティスティックな課題に集中できるようになります。

この度、AWS Thinkbox は Epic Games と共同で、新しいさまざまな機能を網羅したプラグインのセットを発表しました。この新しいプラグインを使うと、レンダリングなどの一般的なタスクを Unreal Engine 内から直接 Deadline にサブミットすることができます。サブミット内容に関する固有の情報は、新しい Deadline Job Preset Asset タイプによりプロジェクト内に保持されます。Unreal Engine の Movie Render Queue のリモートレンダーを Deadline がサポートしたことによって、ユーザーはキューをすぐにサブミットし、ローカル、リモート、またはクラウドベースの Workers 上でレンダリングできます。また、新しい API セットにより、制作やワークフローのニーズに合わせて、より幅広いカスタムパイプライン処理機能がサポートされるようになりました。

“新しい Deadline プラグインで、 Unreal Engine 内からアーティストフレンドリーな方法で GPU レンダーファームにサブミットできるようになったことをうれしく思います” – Peter Nofz, VFX Supervisor, Rodeo FX

Figure 02: The Unreal Engine interface, with the movie Render Queue shown. At the bottom of the Movie Render Queue panel, two blue buttons can be selected; one reads ‘Render (Local)’ and the other ‘Render (Remote)’. A new Deadline pane is shown to the right of the Movie Render Queue, with various render parameters visible.

図 02: Deadline へのサブミットは Unreal Engine 内から直接行うことができます。

Deadline for UE5 プラグインは、エキサイティングな(そして必要とされていた)レンダーパイプラインを効率化するための次のステップです!” –
Aythan Maconachie, Tech Lead, Glitch Productions

Deadline のセットアップ

プラグインを使用して Deadline を Unreal Engine 環境に統合するには、以下の要件が必要です。

  • Deadline Repository の 10.3.0 またはそれ以降のバージョンのインストール。Deadline のインストール手順については、こちらをご覧ください。
  • コンテンツを生成し、サブミットするための Unreal Engine のアーティストワークステーション(Unrealのバージョン 5.2.0 以降であること)。Unreal の新しいバージョンでプラグインをリビルドする必要がある場合は、Visual Studio Code 2022 などの開発環境も必要になります。Unreal Engine を開発用にセットアップする方法については、こちらをご覧ください。
  • Unreal Engine のアーティストワークステーションに Deadline Client ソフトウェアがインストールおよび設定済みであること。本ガイドでは、Deadline Client によるサブミット方法を使用しています。

ステップ 1: プラグインのインストール

Unreal Engine のプラグインは Deadline Repository 内で提供されます。これらは Unreal Engine のプロジェクトにコピーする必要があり、今後作成する新規のプロジェクトごとにこの手順を繰り返す必要があります。

  1. Unreal Project のフォルダー内に「Plugins」のサブフォルダーを作成します。
  2. Deadline Repository のインストール画面に移動し、<Deadline Repository>\plugins\UnrealEngine5\UnrealEnginePlugins にある Unreal Engine のプラグインフォルダーに移動します。
  1.  UnrealDeadlineServiceMoviePipelineDeadline プラグインフォルダーを各プロジェクトの「Plugins」フォルダーにコピーします。
Figure 03: A Windows folder is open, demonstrating both the MoviePipelineDeadline and UnrealDeadlineService folders copied from the Deadline Repository location into a DeadlineUE5Project project folder.

図 03: Unreal Engine プロジェクトに両方のプラグインを提供します

ステップ 2: プラグインの有効化

プロジェクトのファイル構造内にあるファイルの保存先にプラグインがコピーされた状態で- Unreal Engine を起動し、対象のプロジェクトをロードします。Unreal Deadline Service プラグインと Movie Pipeline Deadline プラグインの両方が Unreal Engine Editor にロードされていることを確認してください。

Figure 04: Unreal Engine’s plugins window is loaded, showing that the user has filtered results with ‘Deadline’ so that Unreal Deadline Service and Movie Pipeline Deadline are the only plugins showing.

図 04: Unreal Engine 内の Deadline プラグインの設定

  1. メインメニューからプラグインブラウザを開きます。[Edit] > [Plugins]
  2. 検索ダイアログで「Deadline」を検索します。
  3. Unreal Deadline Service プラグインと Movie Pipeline Deadline プラグインの両方を有効にして、Editor を再起動します。

プラグインのビルドに使用されたバージョンよりも新しいバージョンの Unreal Engine を使用する場合は、その特定のバージョンと一致するようプラグインをリビルドする必要があります。確認を求められた場合は「Yes」と返してください。

Figure 05: A typical Windows dialogue is open, showing what might happen if you need to rebuild the DeadlineService plugins to match the UnrealEngine version. The dialogue reads ‘The following modules are missing or built with a different engine version: DeadlineService. Would you like to rebuild them now?’ Yes is highlighted. No is also an option, but not the one we recommend.

図 05: Unreal Engine のバージョンと一致するプラグインのビルドを要求する確認画面

注:このプロセスが失敗した場合、よくある原因としては、開発環境の不備、つまり Visual Studio 2022 が整備されていない可能性があります。このリンクの詳細が示す Unreal Engine の要件に従って開発環境をアップデートする必要があります。このような問題の原因分析に役立つ詳細ログは、「<Unreal_Project >/Saved/Logs」フォルダーより確認できます。

ステップ 3: Unreal 内の Deadline Service プラグインの設定

Deadline Service プラグインは、Unreal Engine と Deadline 間の通信環境を設定するために使用されます。

Deadline Serviceを設定するには:

  1. [Edit] > [Project Settings] に移動します。
  2. ブラウザで「Deadline」を検索し、「Plugins – Deadline Service」を表示させます。
Figure 06: The Plugins – Deadline Service window, showing the 3 main options under a header of ‘Deadline’: Deadline Command (checked), Deadline Host (blank), and Script Category Mappings (which reads 0 Map Elements. A plus sign and trash can are next to the Script Category Mappings value column.

図 06: Deadline Service のオプション

Deadline Command の有効化オプションは、Deadline とへサブミットする際にプラグインが使う通信のデフォルトの(推奨された)方法です。もう1つの方法は、ホストアドレスを利用して Deadline Web Service 経由で通信する方法ですが、このブログでは取り上げていません。

Deadline Service プラグインの基本設定が完了したら、さらに Unreal Engine 内のスクリプトに対して指定ディレクトリパスを設定することもできます。

  1.  [Script Category Mappings] を追加します。
  2. 実行時に Deadline Data Asset によって解決されるディレクトリを示す key-value ペアを入力します。

ステップ 4: Data Asset ノードを使った Deadline ジョブの Preset

Preset は Deadline のジョブサブミットの基礎となるもので、ジョブやタスクをサブミットする前に必ず Preset を作成する必要があります。Deadline ジョブの設定は、新しい「DeadlineJobPresetLibrary」クラスを使用して、Data Asset として Unreal Engine プロジェクト内に保存されます。Data Asset ノードを使うと、Deadline ジョブのサブミット用として、このプロジェクト内で再利用できる Preset を定義することができます。これらの詳細には、ジョブ名、コメント、ジョブの処理が可能な Workers の Group および Pool、フレームレンジ、およびその他の追加情報が含まれます。

Deadline の Data Asset を作成するには:

  1. Content Browser を右クリックして、[Miscellaneous] > [Data Asset] を作成します。
  2. DeadlineJobPresetLibrary」クラスを検索します。
  3. 新しい Data Asset には、「BasicDeadlineExport」など、目的を表す名前を付けます。
  4. Job Options を展開し、Deadline ジョブの詳細を入力します。
  5. 新しい Preset 要素に、「Sequence export from Movie Render Queue」などの説明を付けます。
Figure 07: A property panel showing a sample Job Preset. Various configuration parameters are listed, such as the plugin used, the batch name, the name, comment, department, etc.

図 07: Deadline Data Asset は、Deadline ジョブ設定の Preset を指定するために使用されます

  1. Job Info]を展開して、Deadline ジョブの詳細を入力します。
    • Batch Name]はサブミットされるジョブの総称です。
    • Group]とは、ジョブにアサインされる UE リソースのグループのことです。
    • Pool]とは、ジョブにアサインされる UE リソースのプールのことです。
    • Plugin Info Preset を使って、後にプログラムで使用できるように追加の key-value ペアの入力が可能になります。以下は必須エントリ 2 つと推奨エントリ 1 つです。
      • Executable: タスクを処理させたいアプリケーションへのパス。<Unreal_Install_Folder>\Engine\Binaries\Win64\UnrealEditor-Cmd.exe など
      • ProjectFile: 処理するプロジェクトファイルへのパス。<Unreal_Project>\ProjectFile.uproject など
      • CommandLineArguments は任意ですが、非常に便利です。Unreal Engineの全コマンドライン引数については、こちらをご覧ください。
  1. Data Asset を保存します。

さらに、ジョブ Preset 内の各 Deadline オプションについては表示/非表示フラグを設定できます。これによりチームリーダーは、特定のオプションを、ジョブサブミット時にユーザーに対して表示または非表示にすることができます。表示/公開されているオプションは、ユーザーがジョブをサブミットする際に、Submitter 内で編集可能です。詳細については、「ステップ 5a: Movie Render Queueによるリモート実行」のセクションを参照してください。

注: 値データをクオートで囲む記述はサポートされていません。

ステップ5: Movie Render Queue によるレンダリング

Movie Pipeline Deadline プラグインをインストールすると、Unreal Engine からショットやシーケンスの Movie Render Queue パイプラインを外部にサブミットして、Deadline 経由でレンダリングできます。Movie Render Queue内でのレンダリングには Warm Up Frames のような機能があるため、Unreal Engine はキューアイテムに合わせて同等に Deadline タスクを作成します。他の 3D・2D アプリケーションでは通常、フレーム単位でタスクを扱いますが、ここでは大抵ショット全体を 1 つのタスクとして扱います。

Deadline を Movie Render Queue の処理に対応できるように設定するには:

  1. Project Settings画面を開きます。[Edit] > [Project Settings]
  2. Movie Render Pipeline」で検索し、[Plugins]> [Movie Render Pipeline]を表示させます。
  3.   [Default Remote Executor] の項目で「MoviePipelineDeadlineRemoteExecutor」を選択し、リモートレンダリングを実行するデフォルトの方法として Deadline を有効にします。
  4.   [Default Executor Job] の項目で「MoviePipelineDeadlineExecutorJob」を選択し、Deadline プラグインが Movie Render Queue UI 内で設定を表示できるようにします。
Figure 08: Plugins – Movie Render Pipeline is shown, highlighting the key changes made to Default Remote Executor, and Default Executor Job, both which will use Deadline.

図 08: Deadline よりリモート実行できるように設定された Movie Render Queue

シーケンスまたはショットを Deadline にサブミットするには、次の 2 つの方法があります。

ステップ 5a. Movie Render Queue によるリモート実行

Movie Render Queue を使用して、Deadline レンダリング向けにショットやシーケンスをサブミットすることができます。

Figure 09: The Movie Render Queue, with the Preset Library selected to use a deadline_job_alpha preset. Checkboxes next to the Comment and Department field have been checked, indicating and override of the preset

図 09: Deadline でリモートレンダリングを実行するように設定された Movie Render Queue

Movie Render Queue を使用してレンダリングするよう設定するには

  1. Movie Render Queue を開きます。 [Windows] > [Cinematics] > [Movie Render Queue]
  2. [+Render] ボタンをクリックしてシーケンスまたはショットをジョブキューに追加する、あるいは既存のショットの MoviePipelineQueue をロードします。
  3. 右側の Deadline ウィンドウからジョブの Batch Name を設定します。
  4. 同じく右側の Deadline ウィンドウ内で、レンダリング設定の制御に使用する Preset Library を選択します。
  5. 任意で、新しいアウトプットディレクトリとファイル名を指定します。

Preset Overrides のセクションでは、Deadline Data Asset のプリセットを変更することなく、現行レンダリングの Deadline Job Preset で表示されているパラメータを変更することができます。

Preset Overrides セクションでオーバーライドを作成するには:

  1. オーバーライドするパラメータの横にあるチェックボックスを選択します。
  2. 編集可能なフィールドに必要な変更を加えます。

上の例では、ユーザーは Submitter 内の 2 つのオプション(ジョブの[Comment]および[Department]の情報)を上書きしています。

レンダリングを Deadline にサブミットするには、[Render (Remote)] を選択して Unreal Engine に Deadline ジョブの作成を指示します。ここでは、ジョブが Deadline にサブミットされる間、コマンドラインコンソールが数秒間表示されます。

ステップ 5b. Queue Asset Submitter によるリモート実行

レンダリングジョブを Deadline にサブミットするもう 1 つの方法は Queue Asset Submitter を使用する方法です。Deadline プラグインを有効にした後に Unreal Engine メニューバーの Deadline メニューの下に表示されます。

Figure 10: The Queue Asset Submitter property panel is shown here configured similarly to how the Movie Render Queue was configured in Figure 09.

図 10: Deadline でレンダリングをリモートで実行するように設定された Queue Asset Submitter

Queue Asset Submitter を使用してレンダリングをリモートで実行するには:

  1. Queue Asset Submitter を開きます。[Deadline] > [Submit Movie Render Queue Asset]
  2. ジョブの[Batch Name]を設定します。
  3. 上記ステップ 4 にて Data Asset ノードを使ってジョブ情報を定義した Deadline ジョブの Preset に、[Submission Preset Name]と[Remote Preset Name]を設定します。
  4. [Queues]セクションで 「+」を選択し、Movie Render Queue のショット/シーケンスと関連情報をカプセル化した MoviePipelineQueue アセットを追加します。
  5. [Submit] を選択して、ジョブを Deadlineに サブミットします

Deadline のジョブと Workers

Deadline Monitor アプリケーションを開くと、レンダリング待ちキューに自身のジョブと、他のユーザーがサブミットしたファーム内の他のジョブが確認できます。

Figure 11: The Deadline Monitor showing the Batch, Job and Tasks. You can see the Job “Main_SEQ” nested underneath the “Meerkat” Batch Name, and resultant tasks created for each Movie Render Queue entity.

図 11 : バッチ、ジョブ、タスクを表示した Deadline のモニター。Batch Name の「Meerkat」の下にネストされたジョブの「Main_SEQ」と、Movie Render Queue のエンティティごとに作成されたタスクが表示されています。

Deadlineに接続しているすべての Worker に Unreal Engine のタスクを割り当てることは可能ですが、Unreal Engine のタスクを扱う能力のある Worker にだけその作業が割り当てられるように、Worker の Pool と Group を正しく設定する必要があります。 Worker には以下の要件が必要です。

  • GPU など、目的とするタスクに適したハードウェア。
  • Deadline Data Asset が定義した場所に Unreal Engine  (および関連要件) がインストールされていること。
  • Deadline Data Asset が定義した Unreal Engine のプロジェクトへのアクセス。
  • ジョブに関連する適切な Deadline の GroupPoolに 所属していること。

クラウドレンダリング

Deadline では、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを追加の Worker としてプロビジョニングすることで、レンダリングをクラウドに自動的かつ柔軟に拡張することができます。これらのクラウド Worker は必要に応じて立ち上げてタスクを実行させ、アイドル状態になると自動的にシャットダウンさせることができます。このコンピューティングには従量課金モデルが採用されます。

AWS の伸縮性のあるレンダリングを利用することには多くの利点があります。

  • 変動コスト型の「オンデマンド」モデルでは、レンダーファームの固定費に対する多額な先行投資や、電力、冷却、スペース、セキュリティ面での継続的な所有コストが不要になり、ファームのコストを簡素化できます。
  •  新しい GPU インスタンスを含む最新の AWS インスタンスを使用するよう、即時にレンダーファームを切り替えることができます。これにより、Unreal Engine などの製品にとって肝要な GPU や CPU 技術の進歩のペースより通常はるかに長い、ハードウェアの更新サイクルが不要になります。
  • レンダーファームのインフラストラクチャは、デザインチームの規模や絶えず変化する制作のニーズに応じて瞬時に動的スケーリングすることができます。これにより、制作のピークに備えてマシーンを事前に予測・管理・購入する必要がなくなります。

AWS は、32 のグローバルリージョンにわたって、レンダリング用のコンピューティングを含む 200 を超えるフル機能のサービスを提供しており(執筆時点現在)、それぞれがデータとサービスの冗長性と可用性を確保するために複数のアベイラビリティゾーンを提供しています。AWS Site-to-Site VPN、または AWS Direct Connect(AWS への専用ネットワーク接続)を利用することで、Unreal Engine のプロジェクトデータを処理前にレンダリングの Workers に同期し、完了時に結果の画像やアーティファクトを元に戻すことができます。

Figure 12: An example architecture of a burst render scenario utilizing Perforce as a version control solution. An on-premises network is shown on the left, consisting of an artist workstation, AWS Thinkbox Deadline, and a Perforce server. On the right, the AWS cloud contains EC2 spot instances spread across multiple availability zones with Unreal Engine installed from a shown Amazon Machine Image (AMI), as well as storage on Elastic Block Storage (EBS) volumes which are being synced to match the Perforce server.

図 12: ストレージソリューションとして Perforce を利用したバーストレンダリングシナリオのアーキテクチャ例

今後のブログ記事で Unreal Engine のクラウド Worker へのデータ展開方法を説明する予定ですのでご期待ください。

まとめ

本記事では、チームが Unreal Engine を使用して、レンダリングなどの処理をアーティスト端末から Deadline ベースのレンダーファームにオフロードする方法について詳しく説明しました。Unreal Engine のタスクを、他の 3D や 2D のパイプラインのプロセス全体とともに 1 つのジョブの流れに統合し、その Group 内の優先順位に従ってスケジューリングできるようになりました。アーティスト端末などのオンプレミスリソースをより大きなコンピューティングリソースプールに統合することで、Unreal Engine やその他のアプリケーションが利用可能なコンピューティング能力を最大化することができます。Deadline との新たなインテグレーションにより、Unreal Engine は AWS クラウドを活用することで、プロジェクトの必要に応じて即座にスケーリングが可能になりました。

AWS Thinkbox Deadline の Unreal Engine Plugin に関して、潜在的な問題を報告、または、機能追加の提案をしたい場合は、Thinkbox Support 宛てに E メールで連絡してください : support@awsthinkbox.zendesk.com.

参考資料

Unreal Engineに関する情報は、以下からご覧いただけます。

https://www.unrealengine.com/

Deadlineに関する詳細なドキュメントは、以下からご覧いただけます。

https://www.awsthinkbox.com/deadline

ワークステーションとレンダリングマシンの両方の GPU 稼働率を把握することで、効率が評価しやすくなります。以下のブログでは、AWS での分析に役立つ GPU データのログをセットアップしてキャプチャする方法について詳しく説明しています。

https://aws.amazon.com/blogs/machine-learning/monitoring-gpu-utilization-with-amazon-cloudwatch/

Unreal Engine について

Epic Games の Unreal Engine は、世界で最もオープンで先進的なリアルタイム 3D ツールです。ゲーム、映画、テレビから放送やライブイベント、そして建築、自動車、シミュレーション、その他業界に至るまで、クリエイターたちは、最先端のコンテンツ、インタラクティブなエクスペリエンス、没入感のある仮想世界を提供するために Unreal を選んでいます。 @UnrealEngine をフォローし、unrealengine.com から Unreal を無料でダウンロードしてください。

Unreal Engine Logo

Rodeo FX について

Rodeo FX は、Montreal’s Top Employers に何度も選ばれ、2022 年の Mercuriades Awards では Employer of the Year に選ばれた、視覚効果・広告・アニメーション・体験型のサービスを提供するハイエンドのクリエイティブ企業です。昨年、「ストレンジャー・シングス 未知の世界」シーズン 4、「ウィッチャー」シーズン 2、および「ファウンデーション」シーズン1のシリーズ作品で 3 つのエミー賞にノミネートされ、最近では「ロード・オブ・ザ・リング:力の指輪」の第 1 シーズンでもノミネートされました。アカデミー賞を受賞した独立系企業である同社では、モントリオール、ケベックシティ、トロント、ロサンゼルスやパリのスタジオで 800 人近くのアーティストが制作にあたっています。Rodeo FX は、Netflix、HBO、Disney、Marvel、Amazon Studios、Warner Bros. やソニーなどの世界最高のストーリーテラーのクリエイティブパートナーであり、また YouTube、NBC、Apple の広告でもコラボレーションしてきました。現在取り組んでいる作品には、「ブルービートル」や「ファウンデーション」シーズン 2などがあります。最近リリースされた作品としては、「ウィッチャー」シーズン 3、「ジョン・ウィック:コンセクエンス」、「リトル・マーメイド」、「ガーディアンズ・オブ・ギャラクシー:VOLUME3」、そして同社が 2023 年の VES 賞を受賞した「ラブ、デス & ロボット」Vol. 3 があります。

Rodeo FX logo

Glitch Productions について

Glitch Productions は、シドニーを拠点とする独立系アニメーションスタジオで、世界中の何百万人ものファンに視聴されているオンラインコンテンツを制作しています。わずかな予算と時間で素晴らしいビジュアルの作成を可能にする Unreal Engine とリアルタイムレンダリングは、同社の成功に大きく貢献しています。Glitch Productions の現在の人気シリーズ「Murder Drones」は、同社のYouTube チャンネルで無料公開されています。

Glitch Productions logo


参考リンク

AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)

AWS のメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

翻訳は BD 山口、SA 森が担当しました。原文はこちらをご覧ください。