Unityでパノラマ動画を再生して空を動かす

今回はUnityでパノラマの動画をスカイボックスで再生し、ゲームの舞台の遠景に表示するという事をしていきたいと思います。

空を動かすには

Unityでスカイボックスを回転させて雲が動いているように見せたり、ゲームオブジェクトとして空を作成し、雲が独自で動いて見えるような機能を作成していきます。

の記事でやりましたが空全体を動かしている為、個々の雲の動きを作るのは面倒です。

スカイボックスは常にゲームの舞台の背景に表示されますので、空のパノラマ動画をスカイボックスに再生すれば雲の動きを別に作らなくても済みます。

スポンサーリンク

パノラマ動画をスカイボックスで再生

パノラマ動画をスカイボックスで再生する為にはLighting Settingsで設定するスカイボックスマテリアルにレンダーテクスチャーを設定したマテリアルを設定するだけです。

レンダーテクスチャーはリアルタイムな映像を流したい時等に使用します。

Unityでカメラにレンダーテクスチャを設定しランタイムでテクスチャを更新し表示します。

パノラマ動画はVideoPlayerコンポーネントを使って再生しますが、このVideoPlayerの出力先をレンダーテクスチャーにしてそれをマテリアルに設定し、スカイボックスのマテリアルとするという感じです。

VideoPlayerに関しては

Unity5.6以降で導入されたVideoPlayerを使って動画を再生・停止させてみます。

を参照してください。

取り込んだ動画の設定を行う

まずは最初にパノラマ動画を用意する必要があります。

パノラマ動画に使用出来るのは正距円筒図法のレイアウトとキューブマップのレイアウトのようで、

正距円筒図法の場合の動画のアスペクト比は360度見渡せるようにする場合は2:1、180度の場合は1:1とする必要があるようです。

そこでわたくしの場合は1024×516の動画にしました。

動画を用意したらUnityのAssetsエリア内にドラッグ&ドロップで取り込み、名前をPanoramaVideoとします。

わたくしの場合はパノラマ動画を用意出来なかったので普通の動画を使用していますが、パノラマ動画を用意してください。

次にAssetsエリア内で右クリック→Create→Render Textureを選択し、名前をPanoramaRenderTextureとします。

先ほど取り込んだPanoramaVideoを選択し、インスペクタで動画のサイズを調べます。

取り込んだ動画サイズを調べる

上のDimensionで動画のサイズを調べます。

PanoramaRenderTextureを選択し、インスペクタのDimensionに動画と同じサイズを設定し、Depth bufferをNo depth buffer、Wrap ModeはをClampにします。

レンダーテクスチャサイズを動画のサイズに合わせる

このレンダーテクスチャーにVideoPlayerから動画を流し込みます。

次にヒエラルキー上で右クリック→Video→Video Playerを選択しVideo Playerコンポーネントを持つVideo Playerゲームオブジェクトを作成します。

Video PlayerのVideo Clipに先ほど取り込んだPanoramaVideoを設定し、ループして再生する為にLoopにチェックをし、Render ModeをRender Textureにし、出力先を先ほど作成したPanoramaRenderTextureにします。

VideoPlayerコンポーネントでパノラマ動画用の設定をする

これでゲームを開始するとVideoPlayerコンポーネントを介してレンダーテクスチャーに動画が出力されます。

次にAssetsエリア内で右クリック→Create→Materialを選択し、名前をPanoramaMaterialとします。

PanoramaMaterialのShaderをSkybox/Panoramicにし、SphericalにPanoramaRenderTextureをテクスチャとして設定し、MappingをLatitude Longitude Layout(正距円筒図法)にします。

キューブマップの場合は6 Frames Layoutを選択します。

Image Typeで360 Degreesを選択し360度にします。

パノラマ動画用マテリアルの設定

これでマテリアルも出来ましたので、後はスカイボックスにこのマテリアルを設定するだけです。

UnityメニューのWindow→Rendering→Lighting SettingsのEnvironmentのSkybox MaterialにPanoramaMaterialを設定します。

パノラマ動画マテリアルをスカイボックスに設定

これでスカイボックスにパノラマ動画を設定する事が出来ました。

パノラマ動画の確認

機能が出来たので、パノラマ動画が再生されるかどうかを確認してみましょう。

上のようになりました。

普通の動画をパノラマ動画として無理やり再生しているので、変な感じになっていますが、無料のパノラマ動画を使って再生したところうまく再生されました。(^^)/

ただその映像を勝手に流すわけにはいかないので、今回は自前の普通の動画を再生させています。

再生している動画は普通の動画なので天井部分が黒くなっていたり(これはRenderTextureのサイズを1024×1024といつの間にか書き換えてしまってなった現象でした・・・)、横の繋がりは動画の端と端をくっつけただけになっています。

空が素早く回転しているのは、元の動画でそういう風にしているだけで今回の事とは何ら関係ありません。(^_^;)

終わりに

以前の記事

Unityでスカイボックスを回転させて雲が動いているように見せたり、ゲームオブジェクトとして空を作成し、雲が独自で動いて見えるような機能を作成していきます。

で、空を動かしてリアル感を出すようにしましたが、空のパノラマ動画を再生するようにすれば面倒なことをせずにリアルな空を作成する事が出来ますね。(^^)/

ただ、パノラマ動画はかなりの演算処理を必要とするのでそこら辺は考慮しておく必要があるかもしれません。

また動画をループして再生させているので、動画の初めと終わりをうまく繋がるように作っていないといきなり空が切り替わってしまいます。

参考サイト

Unityマニュアルーパノラマ動画ー

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます