Unreal Engine 5 で、透過ありのmov形式動画を出力する方法をメモ代わりに残します。
やること
UE5のムービーレンダーキューは透過画像を出力することはできますが、そのままでは動画出力はできません。
そのため、ffmpeg というソフトを使うことで複数の連続する画像を繋ぎ合わせて動画に変換することになります。
UE5では、ムービーレンダーキュー実行時に ffmpeg を呼び出して自動的に動画へ変換するように設定することができるので、本記事ではその手順を記載します。
ffmpeg を使って動画出力する方法は Epic Games のチュートリアル記事に記載されていますので、そちらを参照するとより分かりやすいかと思います。
私の環境
- Windows 11
- Unreal Engine 5.4.3
- ffmpeg 7.10.0
環境構築
ffmpeg のインストール
ffmpeg のダウンロード
ffmpeg のダウンロードページにて、”Windows builds from gyan.dev” をクリックすると、
下記キャプチャのページに遷移します。
“release builds” の項目にある “ffmpeg-release-full.7z” をクリックすると、ソフトがダウンロードされます。(2024/08/03現在は version: 7.0.1)
ffmpeg を任意の場所に移動
ダウンロードされたファイルを解凍(展開)すると “ffmpeg-7.0.1-full_build” フォルダが展開されます。
このフォルダを、任意の場所に移動させておきます。
私は、ユーザーフォルダ直下に移動させました。
UE5で任意のプロジェクトを開く
どんなプロジェクトでもよいのですが、今回はフォトスタジオのテンプレートを使ってみようと思います。
UE5でムービーレンダーキュープラグインを有効にする
ヘッダーメニュー にて “編集>プラグイン” を選択します。
プラグインウィンドウの検索バーに “movie render queue” と入力して絞り込み表示されるので、 “Movie Render Queue” と “Movie Render Queue Additional Render Passes” にチェックをONにします。
チェックをONにしたら、Unreal Editor を再起動します。
UE5のプロジェクト設定
ffmpeg を設定
プロジェクト設定ウィンドウにて “プラグイン>Movie Pipeline CLI Encoder” を選択します。
空欄である下記の場所を、下記のように記入します。
項目 | 入力内容 |
---|---|
実行ファイルパス | ffmpeg.exe のパス |
映像コーデック | qtrle |
オーディオコーデック | aac |
出力ファイル拡張子 | mov |
実行ファイルパスには、事前にダウンロードしていた ffmpeg の絶対パスを入力します。
私の場合はユーザーフォルダに ffmpeg を移動しているので、下記のようなパスになります。
C:\Users\watashinonamae\ffmpeg-7.0.1-full_build\bin\ffmpeg.exe
ちなみに、binフォルダ直下の ffmpeg.exe を右クリックして “パスをコピー” すれば、絶対パスをクリップボードにコピーすることができます。
また、余談ですが、もし Windows の環境変数に ffmpeg を登録してある場合は、絶対パスじゃなく環境変数を使っても大丈夫です。
レンダリングのポストプロセス
プロジェクト設定ウィンドウにて “エンジン>レンダリング>ポストプロセス” の項目にある、”ポストプロセスでのアルファチャンネルのサポートを有効化します” を “Linear color space only” に設定する。
ポストプロセスを変更したら、Unreal Editor の再起動が必要です。
UE5でムービーレンダーキューの設定
レベルシーケンスを開く
今回はテンプレートにデフォルトで存在するレベルシーケンスを開きます。
ムービーレンダーキューを開く
ムービーレンダリングオプションが “ムービーレンダリングキュー” になっていることを確認します。
ムービーレンダリングボタンを押下して、ムービーレンダリングキューウィンドウを表示します。
ムービーレンダリングキューウィンドウにて、設定の項目にある “Unsaved Config” を押下します。
ムービーレンダーキューに設定を追加
初期状態のムービーレンダリングキュー設定が表示されるので、”+設定” ボタンを押下して、必要な設定を追加します。
下記の2つを追加します。
- exrシーケンス
- コマンドラインエンコーダ
jpgシーケンスの設定
jpgシーケンスは使用しないのでOFFにしておきます。
exrシーケンスの設定
exrシーケンスは初期状態のままで構いません。
コマンドラインエンコーダの設定
“Delete Source Files” のチェックをONにします。
これにより、連続する画像を動画として繋ぎ合わせた後、元の画像が削除されるようになります。
もしも画像を残しておきたい場合は、チェックをOFFにしてください。
出力の設定
出力の設定は任意の内容でよいです。
“Output Directory” で動画の出力場所を選んだり “Output Resolution” で動画の縦横のサイズを指定したり、好きなように設定してください。
ムービーレンダリング設定を保存
設定した内容を次回も使いまわすために、設定を保存します。
右上の “未保存のコンフィグ” を押下して “プリセットとして保存” を選択します。
適当に名前を付けて保存します。
保存すると、ムービーレンダリング設定の右上の名称が任意の名前の表示になりますので、承諾を押して設定を終えます。
一旦、レンダリングしてみて、動画が出力されるかを確認してみましょう。
処理中の画面が表示されます。
最終的に、出力先フォルダに movファイル(動画ファイル)が出力されることを確認しました。
また、 exr ファイル(画像ファイル)が残っていないことも確認できました。
mov ファイルを読み込んでみると、ちゃんと動画として再生できることも確認できました。
背景を削除して透過を確認
背景有りの状態で動画ファイルが出力されていることは確認できたので、背景を消して透過されているかを確認してみます。
背景のオブジェクトを削除
背景として映るオブジェクトを色々と削除しました。
これで、車だけを映して、背景は透明になります。
ちなみに、手っ取り早く背景のオブジェクトを削除しましたが、各オブジェクトをゲーム中に非表示にする設定に変更するのでもよいです。
改めて動画を書き出して確認
書き出した mov ファイルを動画編集ソフトに読み込んで、他の映像と重ねました。
車だけが表示されて、背景部分は別の動画が見えていることが確認できました。