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