Unityでアルファ付き動画を作る(URPも対応)

はじめに

Unityで背景が透明になる動画を作成し、VideoPlayerで再生できるようになるところまで記述します。

DefaultRenderPipelineとURPとで設定が少し違うので、設定が違う箇所も記述します。

用意するもの

  • Unity 2018.1以降(Package Managerがあるバージョン以降)

アセットのインストール

今回インストールするのは、Unity Recorderです。
AssetStoreからは既に消えているので、
Package ManagerからインストールするUnity Recorderを使用しましょう。

Package Managerウィンドウを開く

Unityを立ち上げ、Window→Package Managerを選択してください。

パッケージマネージャウィンドウが現れるので、Unity Registryを選択します

検索窓で「Recorder」と検索しましょう。

Unity Recorderを見つけ、インストールします。今回は3.0.3をインストールしました

「Install」を選択するとインストールされます。

アセットのインストールは以上です。

カメラの設定を行う

ゲームビューをそのまま動画化してもアルファ情報はありません。
今回はアルファ有りムービーのため、ムービーを撮影するメインカメラの設定を行いましょう。

行う作業は二点です。
・Clear Flags を 「Solid Color」にする
・「Solid Color」の「Background」色のアルファ値を0にする
URPの場合も一緒です。

カメラの設定は以上です。

Unity Recorderの設定をする

Unity Recorderの設定をするために、Unity Recorderウィンドウを表示します。
Window→General→Recorder→Recorder Window を選択します。

以下のようなウィンドウがでます。

Record Modeがどのような撮影をするか(Time Interval は何秒目〜何秒目まで)
Playbackはフレームレート指定です。
Constant : Recorderを特定のフレームレートに制限
Variable : アプリケーションのフレームレートを使用
  (Movie Recorderは可変フレームレート非対応だそうです)

詳細のマニュアルはこちら。

ムービー設定追加

+ Add New Recorders から Movie を選択

以下のような設定に変更します。

DefaultRenderPipeline、UniversalRenderPipelineどちらでもアルファ動画を撮影できる指定

なぜかURPの場合はSource : Targeted Camera指定ではアルファは抜けません。
そのため、以下のようにDefaultRenderPipeline、UniversalRenderPipelineどちらでもアルファ動画を撮影できる設定にします。

Source : Texture Sampling
Camera : MainCamera
Media File Format : VP8 WebM
Include Alpha : チェックを入れる

その他、任意

注意点:
Media File Formatを「VP8 Web M」にしないと「Capture Alpha」を選択できません
しかし、デフォルトのCaptureのターゲットはGameViewになっており、
GameViewでは「Capture Alpha」のチェックボックスをTrueにすることができません。

Unity Recorderで撮影する

撮影自体は、Recorderウィンドウの「Start Recording」ボタンを押下すれば始まりますので、
難しいことはないですが、設定の見直しをし、1秒程度の動画を一度出力してみましょう。

注意点として、アルファムービーは対応したプレイヤーでないとアルファムービーであることを判別できません。こちらは、Unityのプロジェクトへ入れ込み、インスペクタ上で再生することで対応できたかの確認をしましょう。

Explorerなどで見ても、アルファムービーかは判別できない
UnityEditorのInspectorで確認するとアルファが抜けていることを確認できる

以上で撮影は出来ます。
撮影後のデータは、Recorderウィンドウの「Path」ディレクトリに格納されています。

これで、Unityでアルファ付きムービーの撮影が出来ました!

動画の再生

動画の再生をするために、VideoPlayerを使用します。MovieTextureは過去の遺産です。

今回はuGUIで動画を表示します。そのため、レンダリング先としてRawImageを新規コンポーネントとして追加します。

ビデオをRenderingするための、RenderTextureをプロジェクトに作成します。

RenderTextureのサイズは生成した動画のサイズにしましょう。
カラーフォーマットなどはアルファが入ったカラーフォーマットになっていることを確認してください。

更にVideoPlayerをアタッチします。VideoPlayerコンポーネントの設定は以下の通りです。

Video Clip : 制作した動画を参照させる
RenderMode : RenderTexture を選択
Target Texture : 上記で制作したRenderTextureを指定

最後に、RawImageにRenderTextureを指定し、動画を描画してもらうようにします。

VideoClipには作成した動画を、RendererモードをRender Textureに、テクスチャは先ほど作成したものをアタッチします。

最後にPlayして確認しましょう。

以上で動画が再生されました。おめでとうございます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください