UnityでDaydream(Google VR)を試してみる
つい先日Googleから発表のあったDaydreamですが、気が付けばもうSDKとUnity用のサンプルが出ていたのでとりあえず試してみました。
Daydreamとは
VR界隈の人はもうご存知と思いますが一応。
Daydreamとは今月行われたGoogle I/O 2016で発表された、Android向けのVRプラットフォームのことです。
今までGoogleはモバイル向けのVRソリューションとしてGoogle Cardboardというプラットフォームを提供していました。 CardboardではAndroidスマホだけでなくiPhoneも含む広範囲な機種を、VR表示ディスプレイとして使うことができます。 またHMDのガワはオープンソースで提供され、段ボールでも組み立てられるお手軽さが売りでした。
GearVRが登場以降も低コストなVRコンテンツ向けとして一定の支持を得ていました。 しかし、OculusやSamsungがAndroidのVR市場を席捲しているのに危機感を抱いたからでしょうか。 Cardboardの機能をAndroidOSに組み込みつつ、 さらに高品質なVRプラットフォームであるDaydreamを提供することとなったのです。 DaydreamではCardboardでも提供されていたオープンソースなグラスだけでなく コントローラもセットになった設計となっています。
Daydreamを動かすには (実機)
Daydreamを動かすことのできる端末は現時点ではNexus 6Pのみとなっています。 Nexus 6PにAndroid N Developer Preview version 3(以降)をインストールすれば、 実機でDaydreamアプリを試すことができるようです。
今回は、Nexus 6Pを持っていないので実機については割愛です…。
Daydreamを動かすには (Unity)
とりあえず実機は置いておいて、Unity上で開発することだけ考えます。
Cardboard + DaydreamなGoogle VR SDKが既にリリースされており、 Unity向けSDKも提供されています。 とりあえずダウンロードしてサンプルを試してみましょう。
ここからダウンロードするか、 以下のようにgit cloneしてください。
# git clone https://github.com/googlevr/gvr-unity-sdk.git
展開した(git cloneした)ディレクトリ直下にGoogleVRForUnity.unitypackageというパッケージファイルがあるので、 これをUnityプロジェクトにインポートしましょう。
インポート後、 Assets/GoogleVR/DemoScenes以下にデモシーンがあるので適当なのを選んでPlayすればOKです。
デモプログラムはUnity Edito上では以下のようにカメラが動きます。
- Altボタンを押しながらマウスを動かすと、上下左右にカメラパン
- Ctrlボタンを押しながらマウスを動かすと、カメラがロール回転
コントローラのエミュレート
さて、Daydreamの特徴でもあるコントローラ機能をUnityで使ってみましょう。
コントローラですが、今の所ハードウェアが出てるわけでもないのでどうすれば…
でも大丈夫。Google様はコントローラのエミュレータも用意してくれています。
エミュレータはAndroid端末(4.4以降ならだいたいOK)で動くアプリになっており、
ここからapkがダウンロードできます。
このapkを手持ちのAndroidにコピーして実行するか、USBケーブル越しにadbでインストールしてください。
# adb install controller_emulator.apk
Android端末にインストールされた"Controller Emulator"を実行するとこんな感じ。
上の大きい丸がタッチパッドエリア、
真ん中の"-"マークの丸がAppボタン、
下の"o"ボタンがHomeボタンです。
このアプリを立ち上げてUnityを実行しているPCにUSB接続すれば、
Android端末をコントローラとしてエミュレートできます。
(USBデバッグをオンにすること)
VRアプリと接続されたら上のメッセージが"Connected!"となります。
コントローラを使ったサンプルはAssets/GoogleVR/DemoScenes/ControllerDemo/ControllerDemo.unityです。 先ほどのアプリを立ち上げた状態でPlayしてみましょう。
できました。コントローラ(Android端末)を傾ければカーソルが動き、キューブにカーソルを当ててコントローラをドラッグ(タッチパッドエリアを押しながらコントローラを傾ける)すればキューブが動かせます。
コントローラのAPIにはGvrControllerクラスを使うことでアクセスできます。非常に簡単・便利です。
Controller API Basics | Google VR | Google Developers
実機で完全に動かすにはNexus 6Pを買うか、ほかの対応端末の発売を待たなければいけませんが、楽しみですね!