VR道を往く!

VRとかUnityとかそういう話中心に。

UnityでDaydream(Google VR)を試してみる

f:id:kaninabe:20160530043728p:plain

つい先日Googleから発表のあったDaydreamですが、気が付けばもうSDKとUnity用のサンプルが出ていたのでとりあえず試してみました。

developers.google.com

Daydreamとは

VR界隈の人はもうご存知と思いますが一応。

Daydreamとは今月行われたGoogle I/O 2016で発表された、Android向けのVRプラットフォームのことです。

今までGoogleはモバイル向けのVRソリューションとしてGoogle Cardboardというプラットフォームを提供していました。 CardboardではAndroidスマホだけでなくiPhoneも含む広範囲な機種を、VR表示ディスプレイとして使うことができます。 またHMDのガワはオープンソースで提供され、段ボールでも組み立てられるお手軽さが売りでした。

GearVRが登場以降も低コストなVRコンテンツ向けとして一定の支持を得ていました。 しかし、OculusやSamsungAndroidの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です。

f:id:kaninabe:20160530034915p:plain

デモプログラムはUnity Edito上では以下のようにカメラが動きます。

  • Altボタンを押しながらマウスを動かすと、上下左右にカメラパン
  • Ctrlボタンを押しながらマウスを動かすと、カメラがロール回転

コントローラのエミュレート

さて、Daydreamの特徴でもあるコントローラ機能をUnityで使ってみましょう。
コントローラですが、今の所ハードウェアが出てるわけでもないのでどうすれば…

でも大丈夫。Google様はコントローラのエミュレータも用意してくれています。
エミュレータAndroid端末(4.4以降ならだいたいOK)で動くアプリになっており、 ここからapkがダウンロードできます。 このapkを手持ちのAndroidにコピーして実行するか、USBケーブル越しにadbでインストールしてください。

# adb install controller_emulator.apk

Android端末にインストールされた"Controller Emulator"を実行するとこんな感じ。

f:id:kaninabe:20160530040507p:plain:w300

上の大きい丸がタッチパッドエリア、
真ん中の"-"マークの丸がAppボタン、
下の"o"ボタンがHomeボタンです。

このアプリを立ち上げてUnityを実行しているPCにUSB接続すれば、 Android端末をコントローラとしてエミュレートできます。 (USBデバッグをオンにすること)
VRアプリと接続されたら上のメッセージが"Connected!"となります。

コントローラを使ったサンプルはAssets/GoogleVR/DemoScenes/ControllerDemo/ControllerDemo.unityです。 先ほどのアプリを立ち上げた状態でPlayしてみましょう。

f:id:kaninabe:20160530045634g:plain できました。コントローラ(Android端末)を傾ければカーソルが動き、キューブにカーソルを当ててコントローラをドラッグ(タッチパッドエリアを押しながらコントローラを傾ける)すればキューブが動かせます。

コントローラのAPIにはGvrControllerクラスを使うことでアクセスできます。非常に簡単・便利です。

Controller API Basics  |  Google VR  |  Google Developers

実機で完全に動かすにはNexus 6Pを買うか、ほかの対応端末の発売を待たなければいけませんが、楽しみですね!