CRI Sofdec2(Unreal Engine4)
入門編02 複数のSofdec2ムービを連続再生する方法
この章では複数のSofdec2ムービーを連続再生する方法を学びます。複数のムービーを連続再生するには「プレイリスト」と「シームレス再生」機能を使用します。
プレイリストについて
複数のSofdec2ムービーを連続再生する機能を「プレイリスト」機能と呼びます。以下、プレイリスト機能について説明します。
プレイリストの使用方法
本章では、あるレベルのStaticMeshに接続されたプレイリストを再生する方法について説明します。具体的な手順は以下のとおりです。
(1) プレイリストと関連アセットを作成する
エクスプローラからコンテンツブラウザにSofdec2ファイルをドラッグアンドドロップします。
この操作により、Sofdec2ファイルが ManaMovie アセットとしてインポートされます。
必要なすべてのムービーをこの操作でプレイリストにインポートします。
コンテンツブラウザで、すべてのムービーアセットを選択し、選択したアセットの1つを右クリックし、コンテキストメニューから [Create ManaPlaylist] を選択します。
これにより、ManaPlaylist アセットが作成されます。
必要に応じて、プレイリストをダブルクリックして動画の順番を編集します。
生成されたプレイリストの右クリックメニューから [Create ManaTexture] をクリック
プレイリスト用の ManaTextureアセットが作成されます。
生成されたテクスチャの右クリックメニューから 「マテリアルを作成」 をクリック
下図のように、マテリアルの種類を選択するように求められます。
"component textures" を使用するマテリアルは、ムービーの各色成分(YUV(A))をマテリアルのソースとして使用します。
YUVからRGBの変換は、このマテリアル内で行われます。パフォーマンスの面で、こちらの使用を推奨します。
"Render to Texture" を使用するマテリアルは、オフスクリーンでYUVからRGBにプリレンダリングされたテクスチャ(RGB)を使用します。
このオプションを指定すると、自動的に ManaTexture の "Render to Texture" を有効にします。RGBAテクスチャが必要な場合にこのオプションの使用を推奨します。
プレイリスト 用のマテリアルアセットが作成されます。
注意
プレイリスト内でそれぞれ異なるコーデックのSofdec2ムービーを混在させたい場合は、「Render to Textureを使用して新規マテリアルを作成する」を選択してください。
次はManaTextureアセットの貼り付け先であるStaticMeshを用意しましょう。この例では平面 (Plane) を使います。
16:9の比率で目に見える位置に設定します。
- 位置:(100.0, 0.0, 110.0)
- 回転:(90.0, 0.0, 90.0)
- 拡大・縮小:(1.777, 1.0, 1.0)
アクター「Plane」の詳細パネルで「ブループリント/スクリプトを追加」をクリック
作成されたブループリントを開く
「StaticMeshComponent」の詳細パネルで 「Materials > エレメント0」に、動画のマテリアルを選択
「コンポーネントを追加」ドロップダウンリストから、[Mana Component]を選ぶ
Manaコンポーネントの詳細パネルで 「Rendering > Movie」に動画のテクスチャを設定
下図のように、ゲーム開始時に再生開始するブループリントグラフを作成
こちらからブループリントコードをコピーできます:https://blueprintue.com/blueprint/hs736f1k/
補足:プレイリストのループ再生について
Mana Componentの「Loop」プロパティを有効にした場合、通常はSofdec2ムービーをループ再生します。ですがプレイリストをループする場合の挙動には注意が必要です。この場合、プレイリスト中の全ムービーを連続再生して最後のムービーを終端まで再生し終えた後、プレイリストの先頭のムービーから再生が再開されます。
以上の操作で、平面上でムービーが再生されます。
シームレス再生
シームレス再生について
プレイリスト内のムービーが切り替わる際、途切れることなく次のムービーを再生する機能を「シームレス再生」機能と呼びます。プレイリスト内のすべてのムービーが同一のオーディオ仕様およびビデオ仕様を使用する場合、それらはアタッチされた ManaComponent によって自動的にシームレス再生されます。
シームレス再生を行う際は、以下の設定がプレイリスト内のムービー間で同一である必要があります。
- ムービーの解像度
- アルファチャンネルの有無
- ビデオコーデック
- オーディオトラック数
- オーディオサンプリング周波数
- オーディオコーデック
- 字幕チャンネル数
プレイリストがシームレスに再生されるかどうかは、プレイリストの詳細パネル上の「Is Seamless」プロパティで確認できます。