3月31日に行われたUnityアップデートにより、Unity5.6が実装されました。その中でVRと動画に関係する部分を解説していきます。
Cardboard, Daydreamのサポートが追加
Unity5.6より、Googleのスマートフォン向けVRプラットフォームであるCardboard、Daydreamがネイティブ対応となりました。CardboardはiOS、Android問わず多くのスマートフォンで動作するVRのプラットフォームである一方でDaydreamは、現状では数種のAndtoidスマートフォンのみ対応している「高品質な」スマートフォン向けVRプラットフォームです。
従前の対応方法について
Unityを用いてVRをサポートする場合、方法が2つ存在します。
1. UnityのVirtual Reality SDKで対象HMDのサポートを有効にする
2. 各VRプラットフォームが配布しているSDKを入れる
Unity5.6以前ではCardboard, Daydream共にUnity側の1のサポートが追いついていなかったため2の方法で対処する方法しかありませんでしたGoogleが配布しているGoogle VR SDKを入れ、CameraやManager類のPrefabを配置する必要がありました。
今回のアップデートでの対応について
Unity5.6のリリースにDaydream及びCardboardのサポートが導入されました。
これにより同プラットフォームの対応をするために前述のPrefab類を配置する必要がなくなりました。
手順としては
- Edit > Project Settings > Player > AndroidタブからVirtual Reality Supportedを有効にする
- cardboardをonにする場合
- daydreamをonにする場合
・実機確認
なお、cardboardminimum API Levelを19以上、daydreamの場合はいずれも24以上に設定する必要があります。またunity5.6.0f2でCardboard for Androidの書き出しを行ったところエラーが出ている状況です。
現状の制限について
カメラ及び書き出し以外の機能について、2016年3月31日現在のUnityではVRをネイティブサポートするということは以下を意味します。
- カメラのステレオ化
- APK、ipa書き出しに伴う各種依存ライブラリ及び設定の隠蔽
そのため、各HMDのコントローラ等から入力を受け取る設定は組み込まれておらず、プラットフォームの提供するSDKを入れる必要があります。
また、Cardboard書き出しについて実際に動作させてみた所Cardboard for Android、Daydreamは問題なく動作しました。
2017年3月17日リリースのunity.5.6.0f1以前ではCardboard for iOSの書き出しのサポートされていませんでした。
2017年3月27日リリースのunity5.6.0f2でCardboard for iOSの書き出しが正式にサポートされました。
Video Playerの追加
Unity5.6からは、動画を再生するVideo Playerが実装されています。VRで動画を見せるための実用的な機能がUnityに組み込まれたことになります。
従前の対応方法について
従前は3点ほど対応方法がありました。
1点目はMovietexuftreというUnityが標準で提供していたコンポーネントを使用する方法。iOS/Androidでの再生、再生可能なコンテナの対応が限定的、フレーム落ちが発生しがちなど実用的な水準ではありませんでした。
2つ目は、Androidを例に取るとMediaPlayerを利用したネイティブプラグインを書き動画を再生しテクスチャにバインドするといった方法でも再生することができました。
そして3つ目は、3rd Partyの動画プレイヤーを使う方法です。EasyMovieTextureとAVProが最もポピュラーな動画プレイヤーです。
Unityで動画再生を実装する場合、現実的な選択肢としてはこの3つめの動画プレイヤーのいずれかを選ぶのが主流でした。いずれも有料ですが、Android、 iOSにも対応しており再生可能なコンテナも豊富HLS配信にも対応しています。
VideoPlayerについて
Unity5.6で導入される動画再生用のコンポーネント。
以下のようなフィールドをinspectorから設定することができます。
- 再生対象動画ファイルの選択 (URLかVideoClipの指定)
- 再生先の選択 (カメラ、レンダラなどから指定)
- 音声の出力先の選択
- アスペクト比
また、以下のような基本的なAPIも整備されています。
- イベントハンドリング (再生開始、再生準備完了、シークポジションの変更など)
- 動画のハンドリング (再生、停止、一時停止、シークなど)
使用してみる
シーンを以下のように変更します。
現状の制限について
HLSやdashを始めとしたストリーミング再生には対応していません。
現状サポートされているプラットフォームはWindows, OSX, iOSとWebGLで、今後Android、Taizenと対応する予定。
おわりに
今回はUnity5.6でリリースされる機能の一部をご紹介させて頂きました。
VRのサポートにおいては、Daydream, Cardboardが追加されよりUnity x モバイルVR開発の裾野がより広がりました。
動画においては、MovieTextureの後継としてVideoPlayerがリリースされ、実用性の高い動画プレイヤーが公式にサポートされました。
どちらもまだ制約が多く、動作も不安定ですが、今後のアップデートが楽しみです。
※今回の記事は、株式会社VRize CTOの露木氏に寄稿していただきました。VRizeは、VRの動画アプリ制作CMS「VRize Video」とVRの広告ネットワーク「VRize Ad」を提供し、VRビジネスの立ち上げからマネタイズまでトータルで支援するテクノロジーカンパニーです。