このクイック スタート ガイドでは、AJA Video Systems. 社のプロ向けビデオ カードと連携する Unreal Engine プロジェクトのセットアップ手順を説明します。このガイドの最後には、以下が実行できるようになります。
- AJA カードからのビデオ入力を Unreal Engine プロジェクト内部で再生する。
- エディタおよび実行アプリケーションのカメラの視点でキャプチャし、それら両方を AJA カードの SDI ポートに送出する。
- レンズの歪みの補正やクロマキー エフェクトの適用など、ビデオ入力を詳細に調整するためのセットアップ手順を把握する。
以下で説明する多くの要素の実例を実行するには、Epic Games Launcher の [Learn (ラーニング)] タブにあるショーケース Virtual Studio を参照してください。
前提条件:
- AJA Video Systems 社のサポート対象のカードであること、必要なドライバとソフトウェアがインストールされていることを確認します。詳細については、「AJA Media リファレンス」を参照してください。
- カードが正常に動作していること、カードの SDI ポートの少なくとも 1 つからビデオ入力を取り込めることを確認します。
- ビデオ フィードと統合する Unreal Engine プロジェクトを開きます。このページでは Third Person ブループリント テンプレートでのステップを示します。ただしどのプロジェクトでも同様のステップを実行できます。
このガイドで使用する AJA メディアの各コンポーネントは Media Framework の最上位に構築され、実行時のビデオ キャプチャ プロセスのスクリプトを作成するために、ブループリント を使用します。これらのトピックに関する知識があると便利ですが、必須ではありません。
1 - プロジェクトをセットアップする
AJA カードから映像入力を Unreal Engine のレベルに取り込む、Unreal Engine から AJA カードの SDI ポートの 1 つに出力を送る前に、Aja Media Player Plugin を入手し、プロジェクトで有効にするための基本セットアップを実行する必要があります。
Film, Television, and Live Events カテゴリのテンプレートのいずれかを使って Unreal Engine プロジェクトを開始した場合、必要なプラグインは有効になっています。そうでない場合は以下の方法で有効にします。
手順
-
Unreal Editor で AJA video I/O を利用するプロジェクトを開きます。
-
メインメニューから [Edit (編集)] > [Plugins] を選択します。
-
[Plugins] ウィンドウの [Media Players] カテゴリで AJA Media Player Plugin を確認し、[Enabled (有効にする)] チェックボックスをオンにします。
拡大表示するには、画像をクリック。
-
[Media Framework Utilities (メディア フレームワーク ユーティリティ)] プラグインを [Media Players] カテゴリで見つけます。[Enabled (有効)] のチェックボックスがオンになっていない場合はオンにします。
拡大表示するには、画像をクリック。
-
[Restart Now (すぐに再起動)] をクリックして Unreal Editor を再起動し、プロジェクトを再度開きます。
拡大表示するには、画像をクリック。
最終結果
プロジェクトでは AJA カードからビデオを取り込む、およびカードにレンダリングした出力を送る準備ができました。次のセクションでは、カードを接続してビデオの再生と出力を開始します。
2 - Unreal Engine でビデオ入力をレンダリングする
このプロセスで、Unreal Editor の現在のレベルに、AJA カードからの映像入力が表示されるようにします。このプロセスはメディア バンドルを使用します。これは Media Framework に関連する多様なアセットをパッケージにまとめた一種のアセットで、レンズ歪みの除去、クロマキー、色補正などの高度な機能を制御できるようにするものです。
手順
-
[Content Browser(コンテンツ ブラウザ)] で、[Sources (ソース)] パネルを展開します。右クリックして、コンテキスト メニューから [New Folder (新規フォルダ)] を選択します。
新規フォルダを「AJA」に名前を変更します。 -
新規フォルダを開き、[Content Browser (コンテンツ ブラウザ)] を右クリックして、[Media (メディア)] > [Media Bundle (メディア バンドル)] を選択します。
-
新しいアセット名がコンテンツ ブラウザで自動的に選択されるので、内容がわかる名前を付けます。
「AjaMediaBundle」のように新しい名前を入力し、Enter を押します。メディア バンドルの隣に、サフィックス「_InnerAssets」が付いた、Media Framework アセットの新規フォルダが自動的に作成されます。
-
[Content Browser (コンテンツブラウザ)] の [Save All (すべて保存)] ボタンをクリックして、新しいアセットを保存します。
-
新しいメディア バンドルをダブルクリックしてそのプロパティを編集します。メディア バンドルはエンジンがサポートする多様なメディア ソースのビデオを再生できます。したがって AJA カードからビデオを取り込むことを指示する必要があります。
[Media Source (メディア ソース)] プロパティのドロップダウン リストから [Aja Media Source (AJA メディア ソース)] を選択します。
拡大表示するには、画像をクリック。
-
メディア バンドルで処理するメディア ソースのタイプを特定したら、そのソースのタイプで利用できるコンフィギュレーション プロパティをセットアップできます。
Unreal Engine を、受信するビデオ信号のフォーマットとフレームレートに自動的に一致させることができます。フォーマットの自動検出を有効にするには、[Configuration (コンフィギュレーション)] ドロップダウンをクリックし、[Auto] を有効にしてから、[Apply] をクリックします。これにより、エンジンはシームレスに変更を処理し、信号が一時的に失われた場合は自動的に再起動します。
拡大表示するには、画像をクリック。
ここに表示されているオプションは、取り付けたデバイスにより変わることがあります。AJA メディア ソースに設定できるすべてのプロパティの詳細は、「AJA メディア リファレンス」を参照してください。
-
入力ビデオからレンズの歪みの原因を補正する場合は、[Lens Parameters (レンズ パラメータ)] セクションのレンズの物理プロパティをセットアップできます。
拡大表示するには、画像をクリック。
これらの [Lens Parameters (レンズ パラメータ)] はレンズの物理プロパティをセットアップするだけです。メディア バンドルで使用されるマテリアル インスタンスを編集する際、後からレンズの補正を実際に有効にします。
プロパティのセットアップが完了したら、メディア バンドルを保存し、コンテンツ ブラウザの「AJA」フォルダに戻ります。 -
AjaMediaBundle アセットをコンテンツ ブラウザからレベルのビューポートにドラッグします。
拡大表示するには、画像をクリック。
新しいプレーンに、メディア バンドルで設定されたポートで現在再生されている映像が表示されます。ビューポート ツールバーのトランスフォーム ツールを使用して移動、回転、サイズ変更します。
メディア バンドルが自動的に再生を開始しない場合は、選択して、[Details (詳細)] パネルで、[Media Bundle (メディア バンドル)] > [Request Play Media (メディア再生のリクエスト)] ボタンをクリックします。 -
次に、動画ストリームにキーイングと合成効果を適用する方法を見ていきます。
メディア バンドル エディタに戻り、ツールバーの [Open Material Editor (マテリアル エディタを開く)] ボタンをクリックし、マテリアル インスタンスを編集します。これはこのメディア バンドルが入力ビデオ フィードをレベルのオブジェクトに描画するために使用するものです。
このマテリアル インスタンスは、メディア バンドルとともに自動的に作成された「AjaMediaBundle_InnerAssets」フォルダに保存されます。
拡大表示するには、画像をクリック。
-
マテリアル インスタンス エディタで、キーイング、トリミング、色補正を設定するために、さらにメディア バンドルでセットアップするレンズの歪みの補正を有効にするために公開されている多くのプロパティがあります。
拡大表示するには、画像をクリック。
マテリアル インスタンス エディタの設定を調整する際、再生するビデオ フィードの変更のエフェクトをメイン レベルのビューポートで確認できます。
代わりに便利なマテリアル インスタンス エディタのプレビュー パネルで、変更のエフェクトを確認することもできます。実行するには、[IsValid] 設定を一時的に有効にして、値を「1.0」に設定します。
ビューポート ツールバーの左上にある矢印をクリックして、メニューの [Realtime (リアルタイム)] オプションを有効にします。
プレビュー メッシュをプレーンまたはキューブに変更して、変更のエフェクトを簡単に判断することができます。ビューポートの一番下にあるコントロールを使用します。
完了したら、[IsValid] 設定を元の値に戻します。
-
マテリアル インスタンスのプロパティの変更が完了したら、ツールバーの [Save (保存)] ボタンをクリックします。
最終結果
ここまでで、Unreal Engine のレベル内で、SDI ポート経由で再生されるビデオを表示し、レンズ歪みやクロマーキーなどに対する高度な機能をセットアップする手順について説明しました。
メディア フレームワークの知識がある場合は、別の方法で、レベルに映像を取り込むことができます。プロジェクトで新しい「AjaMediaSource」アセットを作成し、前の手順でメディア バンドル内でセットアップした同じソース プロパティを設定します。次に、レベルで対象ソースの再生を処理する、独自の MediaPlayer と MediaTexture アセットを作成します。詳細については、「Media Framework」を参照してください。ただし、使いやすさとプロ品質のビデオ機能の最適なバランスを考慮すると、前に示したメディア バンドルを使用することをお勧めします。
3 - Unreal Editor からキャプチャを出力する
このプロセスでは、AJA メディア出力オブジェクトをセットアップし、Unreal Editor の [Media Captures (メディア キャプチャ)] パネルを使用して、レベルの選択したカメラのビューを AJA カードに出力します。
手順
-
コンテンツ ブラウザを右クリックし、[Media (メディア)] > [Aja Media Output (Aja メディア出力)] を選択します。
拡大表示するには、画像をクリック。
新しいアセットに「AjaMediaOutput」と名前を付けます。
-
新しいアセットを編集するためにダブルクリックして開きますAJA メディア ソースを作成したときと同様に、Configuration (コンフィギュレーション) プロパティをセットアップして、Unreal Engine が AJA カードに送るビデオ フィードのプロパティをコントロールする必要があります。矢印をクリックしてサブメニューを開き、ビデオ セットアップに合うオプションを選択してから、サブメニューの [Apply (適用)] をクリックします。
拡大表示するには、画像をクリック。
AJA メディア出力で設定できるすべてのプロパティの詳細は、「AJA メディア リファレンス」を参照してください。完了したら、メディア出力を保存して閉じます。
-
ここでは AJA カードに送信する出力の視点になる 2 台のカメラをレベルに配置します。[Place Actors (アクタを配置)] パネルで、[Cinematic (シネマティック)] タブを開き、[Cine Camera Actor (シネカメラ アクタ)] をビューポートにドラッグして 2 つのインスタンスを作成します。
シーンで異なる視点が得られるように、レベルに 2 台のカメラを配置します。カメラの パイロット は、正確に希望どおりに視点を設定する、素早く簡単な方法です。「ビューポートでアクタをパイロットする」を参照してください。
-
メイン メニューから [Window (ウィンドウ)] > [Virtual Production] > [Media Capture] を選択します。[Media Capture (メディア キャプチャ)] ウィンドウを使用して、エディタが出力を AJA ポートに送信するタイミングと、レベルで使用するカメラの種類をコントロールします。
-
[Media Viewport Capture (メディア ビューポート キャプチャ)] セクションで、[Viewport Captures (ビューポート キャプチャ)] コントロールを見つけます。[Add (+)] ボタンをクリックして、新しいキャプチャをこのリストに追加します。
-
新しいエントリを展開します。まず、キャプチャ元のカメラを追加します。[Locked Camera Actors (ロックされたカメラ アクタ)] コントロールで、[Add (+)] ボタンをクリックし、新しいエントリを追加します。
次に、ドロップダウン リストから、レベルに配置するカメラを 1 台選択します。
同じステップを繰り返して、もう 1 台カメラをリストに追加します。 -
次に、これらのカメラをキャプチャする出力を設定します。[Media Output (メディア出力)] コントロールを、前に作成した新しい AJA メディア出力アセットを指すように設定します。ドロップダウン リストから選択するか、コンテンツ ブラウザから AJA メディア出力アセットをドラッグして、このスロットにドロップします。
-
ウィンドウの一番上で、[Capture (キャプチャ)] ボタンをクリックします。
AJA カードに送信されている出力のプレビューを表示する、ウィンドウの一番下に新しいフレームが表示されます。このポートを別のダウンストリーム デバイスに接続している場合は、到着する出力を確認を開始する必要があります。 -
このビューポート キャプチャの [Locked Camera Actors (ロックされたカメラ アクタ)] リストに追加したカメラは、映像 プレビューの上にあるそれぞれの対応ボタンで示されます。ボタンをクリックして、2 つのビューの間でキャプチャを交互に切り替えます。
拡大表示するには、画像をクリック。
最終結果
Unreal Editor をセットアップして、レベルのカメラからの出力を AJA カードのポートにストリーミングできるようになりました。次に、動作している Unreal Engine プロジェクトで同じことを実行するため、ブループリント スクリプトを使用する方法を説明します。
4 - 実行時にキャプチャを出力する
前のセクションで使用した [Media Capture (メディア キャプチャ)] ウィンドウは、AJA カードにキャプチャを送信する実用的で簡単な方法です。ただし、これを使用できるのは Unreal Editor の内部だけです。プロジェクトをスタンドアロン アプリケーションとして実行しているときに同じことを実行するには、メディア出力で提供されるブループリント API を使用する必要があります。この手順では、プレイヤーがキーボードのキーを押したときに、キャプチャを開始および停止する、シンプルなトグル スイッチをレベルのブループリントでセットアップします。
Epic Games Launcher の [Learn (ラーニング)] タブで利用できる Virtual Studio ショーケースにはオンスクリーン ユーザーインターフェースからキャプチャをコントロールする方法を示す UMG インターフェース ウィジェットが含まれます。
手順
-
Unreal Editor のメイン ツールバーから、[Blueprints (ブループリント)] > [Open Level Blueprint (レベル ブループリントを開く)] を選択します。
-
出力先のポートを特定するように作成した AJA メディア出力アセットから開始する必要があります。[My Blueprint (マイ ブループリント)] の [Variables (変数)] リストで、[Add (+)] ボタンをクリックして新しい変数を追加します。
-
[Details (詳細)] パネルで、[Variable Name (変数名)] を「AjaMediaOutput」に設定し、[Variable Type (変数タイプ)] ドロップダウン リストで、「Aja Media Output Object Reference」に設定します。
-
[Instance Editable (編集可能インスタンス)] 設定 (1) をオンにして、ブループリントをコンパイルします。次に、[Default Value (デフォルト値)] セクションで、コンテンツ ブラウザで作成した AJA メディア出力アセットを指す変数を設定します。 (2)
-
Ctrl キーを押したままにして、[My Blueprint (マイ ブループリント)] パネルの変数リストから AjaMediaOutput をドラッグして、[Event Graph (イベント グラフ)] にドロップします。
-
AjaMediaOutput 変数ノードの出力ポートからクリックしてドラッグして、[Media (メディア)] > [Output (出力)] > [Create Media Capture (メディア キャプチャの作成)] を選択します。
以下に示すとおり、作成したノードを Event BeginPlay ノードに接続します。
これにより新しいメディア キャプチャ オブジェクトが AJA メディア出力から作成されます。メディア キャプチャでは、キャプチャをコントロールするために使用する 2 つのメイン ブループリント関数 Capture Active Scene Viewport および Stop Capture が用意されています。
-
まずは、新しいメディア キャプチャ オブジェクトを専用変数に保存し、他のどこからでも再びアクセスできるようにします。Create Media Capture ノードの出力ポートをクリックしてドラッグして、[Promote to Variable (変数へ昇格)] を選択します。
[My Blueprint (マイ ブループリント)] パネルの変数リストで、新しい変数を MediaCapture に名前を変更します。
メディア キャプチャをここの変数に保存することが重要です。保存しない場合、処理を完了する前に、Unreal Engine のガーベージ コレクタで自動的に破棄されることがあります。
-
Ctrl を押したままにして、MediaCapture 変数を Event Graph (イベント グラフ) にドラッグします。
-
MediaCapture 変数ノードの出力ポートをクリックしてドラッグして、Media > Output > Capture Active Scene Viewport を選択します。同じことを繰り返して、Media > Output > Stop Capture を選択します。
-
イベントグラフ を右クリックして、Input > Keyboard Events > [P] を選択します。P ノードの Pressed 出力をクリックしてドラッグして、Flow Control > FlipFlop を選択します。
-
以下に示すように、FlipFlop ノードの A 出力を Capture Active Scene Viewport ノードの入力イベントに接続し、FlipFlop ノードの B 出力を Stop Capture ノードの入力イベントに接続します。
-
ブループリントをコンパイルしてから保存し、プロジェクトの再生を試します。メイン ツールバーの [Play (プレイ)] ボタンの隣にある矢印をクリックし、[New Editor Window (PIE) (新規エディタ ウィンドウ (PIE))] または [Standalone Game (スタンドアロン ゲーム)] オプションを選択します。
New Editor Window (PIE) または Standalone Game でプロジェクトをプレイするときのみ、エディタからビデオ キャプチャが動作します。デフォルトの Selected Viewport モード、または Simulate モードでは機能しません。
さらに、プロジェクトのビューポート解像度 (つまり、Unreal Engine が各フレームを生成するレンダリング画像のサイズ) は、これが出力ビデオ フィードの適切なサイズになるように、アクティブなメディア プロファイルの出力解像度に一致する必要があります。
プロジェクトをスタートアップした後、キーボードの P キーを押して、エンジンからの出力を AJA カードに送信することを切り替えることができます。
最終結果
ここまでで、AJA メディア ソース、メディア バンドル、メディア キャプチャ システムの作業方法の基本アイデアを把握し、Unreal Engine との間でプロレベルのビデオの入出力を実行するためこれらの要素すべてが連携する方法について説明しました。
次の作業
AJA カードとの間で、ビデオ入力と出力を新しいプロジェクトで実行し切り替える方法の基本について説明しました。ここからは、次のとおり、引き続き独自に学習できます。
- メディア バンドルで作成されたマテリアル インスタンスのエンジン内キーイング ソリューションを調査します。緑画面のビデオをカードの入力ポートに渡してみて、マテリアル インスタンスのキーイング コントロールを使用して、背景を取り除きます。
- Virtual Studio ショーケースを調べて、実行時にカメラを切り替え、ビデオ キャプチャをコントロールする、オンスクリーン UI など、基本セットアップに追加する項目を確認します。