Unreal Engine で Bink Video を使用する

Bink Video を使用して動画を見せる方法の概要。

Windows
MacOS
Linux

Bink Media プラグインは、Unreal Engine 4.27 以降に組み込まれています。これは、すべての Unreal プラットフォーム (NDA プラットフォームを含む) をサポートしています。

インストール

  1. エディタで [Edit (編集)] > [Plugins (プラグイン)] を選択し、Bink を検索して、プラグインを有効にします。必要に応じて Unreal Engine を再起動します。

The Bink Media plugin

  1. Bink Video ファイルを Unreal Engine プロジェクト ディレクトリ内の「Contents/Movies」ディレクトリにコピーします。

    Bink ファイルは、「Engine/Binaries/ThirdParty/Bink」ディレクトリにある Bink 2 Encoder for Unreal (Bink2ForUnreal.exe) を使用して作成します。 実行ファイルをダブルクリックし、変換するビデオ ファイルを選択して、[Bink it!] をクリックします。すると、変換が実行されます。ほとんどのユースケースで自動設定がうまく機能します。

    The Bink 2 Encoder for Unreal

  2. プロジェクトの「.uproject」ファイルをダブルクリックすると、警告ダイアログが表示され、プラグインがないためにプロジェクトを再ビルドするかどうかを尋ねられます。再ビルドの実行を確認すると、プロジェクトがロードされた状態で Unreal Engine が再起動します。

  3. これで、「Content/Movies」ディレクトリにある Bink ファイルを再生できるようになります。

Unreal Engine の動画タイプで Bink を使用する

Unreal Engine には、フルスクリーン スタートアップ動画、ゲーム内の非スタートアップ動画という 2 つの異なるタイプの動画があります。以下で説明するように、各タイプの使用方法は少し異なります。

フルスクリーン スタートアップ動画をセットアップする

まず、他のすべての動画プレイヤー プラグインを無効にする必要があります。無効にしなかった場合、有効な MPEG-4 プレイヤーで Bink 動画ファイルを再生しようすると、何もエラーが出ずに失敗してしまいます。

これを行うには、[Edit] > [Plugins] に移動します。

Disable other movie players

[Movie Player] にある Bink Media プラグイン以外のすべてのプラグインを無効にします。

次に、いくつかの動画を設定して、スタートアップ時に再生するようにします。

[Edit] > [Project Settings (プロジェクト設定)] に移動します。

Project settings for startup movies

[Startup Movies (スタートアップ動画)] の横にある [+] ボタンをクリックし、リストを展開して動画を表示します。ここでは、複数の動画を順番に再生できます。次に、[…] ボタンをクリックして、再生するファイルを選択します。

ここには、Bink 固有のオプションがいくつかあります。

  1. Bink Buffer Mode:これは、動画の一部をローカルディスクからストリーミングするか、再生する前に動画全体を事前ロードするか、または動画全体が常駐するまでストリーミングを開始しないかを制御します。

  2. Bink Sound Track: これにより、サウンドの再生方法が決まります。いくつかのオプションがあります。

    1. SndNone: この Bink で音を再生しません。

    2. Snd Simple: デフォルト。このオプションは、Bink ファイルのファイル名に基づいて必要なものを判断します。

      • ファイル名が _51 で終わる場合は、Snd 51 オプションを使用します。

      • ファイル名が _51L で終わる場合は、Snd 51 Language Override オプションを使用します。

      • ファイル名が _71 で終わる場合は、Snd 71 オプションを使用します。

      • ファイル名が _71L で終わる場合は、Snd 71 Language Override オプションを使用します。

      それ以外の場合は、[Sound Track Start (サウンドトラックの開始値)] で指定された Bink トラックを再生します (デフォルトではトラック 0)。

    3. Snd Language Override:このオプションは 2 つのトラックを再生します。

      • トラック 0 のオーディオ。通常はバックグラウンド ミュージック/エフェクトです。

      • [Sound Track Start] で指定されたトラック。通常は言語トラックです。

    4. Snd 51:このオプションは、[Sound Track Offset (サウンドトラック オフセット)] (デフォルトでは 0) で指定されたトラックから始まる 6 つのモノラル トラックをシステムで再生します。したがって、4 つの言語に完全にローカライズされた 5.1 チャンネルのトラックがある場合は、24 の Bink トラックをミックスし、[Sound Track Offset] 設定を使用して、再生するオーディオトラックの適切な範囲を指定することになります。

    5. Snd 51 Language Override:Snd 51 Language Override:このオプションは、オフセット 0 から始まる 6 つのモノラル バックグラウンド / エフェクト トラックを再生し、次に [Sound Track Start] の値で指定された 1 つのモノラル トラックを言語トラックとしてセンター チャンネルで再生します。したがって、このオプションで 4 つの言語を使用している場合、10 個のオーディオトラック、5.1 チャンネルのバックグラウンド ミュージック / エフェクト トラック、そして 4 つの異なるセンター言語トラックを持つことになります。

    6. Snd 71:このオプションは、[Sound Track Offset] (デフォルトでは 0) で指定されたトラックから始まる 8 つのモノラル トラックをシステムで再生します。したがって、4 つの言語に完全にローカライズされた 7.1 チャンネルのトラックがある場合は、28 の Bink トラックをミックスし、[Sound Track Offset] 設定を使用して、再生するオーディオトラックの適切な範囲を指定することになります。

    7. Snd 71 Language Override:このオプションは、オフセット 0 から始まる 8 つのモノラル バックグラウンド / エフェクト トラックを再生し、次に [Sound Track Start]** の値で指定された 1 つのモノラル トラックを言語トラックとしてセンター チャンネルで再生します。したがって、このオプションで 4 つの言語を使用している場合、12 個のオーディオトラック、7.1 チャンネルのバックグラウンド ミュージック / エフェクト トラック、そして 4 つの異なるセンター言語トラックを持つことになります。

  3. Bink Sound Track Start: Bink の動画には、複数の異なるサウンド トラックを使用できます。このオプションを使用すると、再生するサウンド トラックを指定できます。

  4. Bink Destination Upper Left / Lower Right これは、動画をレンダリングする四角形を指定します。これを使用すると、形をレターボックスに強制したりすることができます。

ゲーム内 (非スタートアップ) 動画をセットアップする

ゲームレベル自体で動画をレンダリングすることもできます。テクスチャに直接レンダリングしてからゲームでそのテクスチャを使用するか、画面に直接レンダリングすることができます。Bink は、すべてのグラフィックスの後かつ UI の前にレンダリングするため、動画の上に字幕を描画できます。

これを行うには、[Content Browser (コンテンツ ブラウザ)] を右クリックし、[Miscellaneous (その他)] セクションの下に新しい Bink Media Player を追加します。

Create a new Bink Media Player in the Content Browser

A Bink Media Player

Bink 固有の構成オプションは次のとおりです。

  1. Bink Buffer Mode これは、動画の一部をローカルディスクからストリーミングするか、再生する前に動画全体を事前ロードするか、または動画全体が常駐するまでストリーミングを開始しないかを制御します。

  2. Bink Sound Track これにより、サウンドの再生方法が決まります。シンプルなステレオから 7.1 サラウンド サウンドまで、さまざまなオプションがあります。

  3. Bink Sound Track Start Bink の動画には、複数の異なるサウンド トラックを使用できます。このオプションを使用すると、再生するサウンド トラックを指定できます。

  4. Bink Draw Style これを使用すると、テクスチャへのレンダリングのデフォルトの UE4 機能をオーバーライドします。それにより、UE4 レンダリングをバイパスして画面に直接レンダリングできます。

  5. Bink Destination Upper Left / Lower Right これは、動画をレンダリングする四角形を指定します。これを使用すると、形をレターボックスに強制したりすることができます。

  6. Bink Layer Depth 複数の動画を同時にレンダリングし、深さを設定することにより、動画が描画される順序を制御できます。

Bink 動画ファイル (*.bk2) は、「(ProjectName)/Content/Movies」フォルダに配置する必要があります。(ProjectName) はプロジェクトの名前です。これにより、すべての構成で最終ビルドに正しくコピーされるようになります。

コンテンツ ブラウザBinkMediaPlayer を右クリックし、[Create Media Texture (メディアテクスチャの作成)] を選択して、プレイヤーからテクスチャを生成します。次に、コンテンツ ブラウザBinkMediaPlayer_Tex テクスチャを右クリックし、[Create Material (マテリアルの作成)] を選択することで、このテクスチャを使用してデフォルトのマテリアルを作成できます。このマテリアルとテクスチャは、Unreal Engine の他のマテリアルやテクスチャと同じように使用できます。

Unreal 向け Bink のその他備考

GPU を使用した動画

Unreal Engine 向け Bink Media プラグインは、GPU 支援のデコードを使用できます。これには、はるかに高速であり (通常、2 倍高速になります)、CPU への負担が少なく CPU を他のタスクに使用できるという 2 つの利点があります。

Windows および Linux では、GPU 支援モードには最新のビデオ ドライバが必要です。このため、Linux および Windows ではデフォルトで無効にすることをお勧めします。いずれにせよ、Bink はこれらのプラットフォームで非常に高速に動作します。有効にする場合は、エンドユーザーに対して UI で無効にする設定を提供するようにしてください。

NDA プラットフォームでは、GPU に頼っても問題ありません。また、組み込みのものを使用している場合は、確実に動作するように GPU ハードウェアとドライバのバージョンを制御することも可能です。とはいえ、それ以外の場合でも Bink は高速に動作するので、問題ありません。

GPU 支援モードをオンにするには、(BinkPluginInit 呼び出し後に) 「BinkMediaPlayerModule.cpp」ファイル内で BinkPluginTurnOnGPUAssist を呼び出します。

マルチスレッド デコード

Unreal Engine 向け Bink Media プラグインは、マルチスレッド デコードをネイティブにサポートしています。実行時の CPU 数に応じて、解凍中に最大 4 つのスレッドを使用します。

デフォルトでは、Bink 2 Encoder for Unreal Engine は 4 つのビデオ スライスを使用してマルチスレッド時に最高のパフォーマンスを実現します。

シーク

Bink プラグイン関数 BinkPluginGoto を直接呼び出すことで、新しい再生位置を設定できます。通常、キーフレームにジャンプするか、途中ですべての間にあるフレームを解凍する必要があります (Bink プラグインはこれをバックグラウンドで実行します)。この際、CPU Bink が ms_per_process パラメータを使用した新しいフレームをシークするために費やす各フレームの量を制御できます。通常、フレームごとに 30 ミリ秒程度を使用すると、比較的高速にシークできます。

ビデオの深さ (描画中の並べ替え)

非スタートアップ動画オプションを使用して多数の動画のオーバーレイを描画している場合、[Depth (深度)] オプションでそれらが描画される順序を制御できます。これにより、Unreal Engine が動画を処理する順序に関わらず、動画を正しくスタックできるようになります。

レンダー ターゲットの場合、[Depth] は動画がレンダー ターゲットに描画される順序を制御しますが、レンダー ターゲットは通常 Unreal Engine によってシーンに描画されます。

字幕

Unreal Engine で、再生している動画上に字幕を追加できます。

これを行うには、まず字幕を含むテキスト ファイルをロードします。Bink のフレーム番号を取得して字幕文字列を検索するかどうかは自由なので、任意の形式を使用できます。通常は、ファイルを std::map またはその他のフレームから文字列へのジェネリックにロードするだけです。

フレーム番号を指定して文字列を返す関数を作成したら、Bink.GetInfo を使用して表示するフレームを取得し、文字列を検索します。

その時、Bink フレームが表示された後に文字列を描画する必要があります。文字列の描画には Unreal Engine UI テキスト フィールドを使用し、この描画は Bink フレームが表示された後に行います。

ステレオ動画

Bink は、3D 動画向けにも十分な速度で動作します。これを行うには、レンダー ターゲット パスを使用してから、画面に揃えられたクワッドに描画します。それぞれの目に対して、クワッドを調整して、クワッドの上半分またはビデオの下半分のいずれかで画面を埋めます。

Bink プラグイン API

Bink プラグイン API には他にも多くのコントロールがあります。シーク、一時停止などのカスタム コントロールが必要な場合は、binkplugin.h で任意の関数を呼び出すことができます。

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