Zenfone ARを購入したときから試そうとは思っていたのですが、Daydream Viewが入手できていないこともあって後回しにしていました。
AR(というかマルチプレイ実装)が若干行き詰まりつつあるので、気分転換に試してみます。
Daydreamとは
Googleが提供しているVRの開発プラットフォームで、特定のデバイスを指す用語ではありません。
現状はスマートフォンを利用したVRになるので、体験の質で専用機にはやや劣ると思いますが、利用しやすさと開発しやすさから、より手軽にVRを楽しめるものと捉えています。
Smartphone VR
スマートフォンをDaydream Viewにセットして利用する形。必要スペックを満たしたDaydream Readyのスマートフォンが必要です。
当初はPixelのみが対応でしたが、現在(2017年8月時点)では海外の主要メーカーが対応機種をラインアップしています。国内シェア的には、Xperiaにも対応してほしいのですが。
- Pixel, Pixel XL(Google)※製造はHTC
- GaraxyS8, S8+(Sumsung)
- ZenFone AR(ASUS)
- Moto Z(Motorola)
- Mate 9 Pro(Huawei)
- Axon 7(ZTE)
Daydream Viewは未だに国内販売がされておらず、情報も全く入ってきません。
入手方法として、並行輸入品がAmazonで出品されています。
海外で購入すると、$70.35。為替レートが$1 = 109円くらいなので、送料+手数料が1,300円くらいですね。
そこまで割高でもないので、1つ購入しました。詳細は届いたら書きます。
Standalone VR
スマートフォンやPCを接続しないスタンドアロン型のDaydream対応VRヘッドセットがGoogle I/O 2017で発表されました。
メーカーはHTCとLenovoで、HTCはVIVEブランドで発売するようです。
発売は年内の予定。価格はOculusやVIVEと同程度との情報があり、10万円前後と見ています。(たぶん買う)
Daydreamの開発をするには
開発環境
Androidアプリ
Daydreamの開発を行うためのGoogle VR SDKは、Android、Unity、Unreal Engineに対応しています。
Google VRにはiOS SDKもありますが、Cardboard向けでDaydream関連の機能はないようです。
Choose Your Development Environment | Google VR | Google Developers
ざっと見た感じ、Unityが一番開発しやすいように見えたので、とりあえずUnityで環境を構築することにしました。(TangoもUnityなので)
- Controller APIがある
- Demos、Prefabsがいろいろある
- Unityエディタ上のエミュレータでも、ある程度開発ができそう
WebVR(A-Frame)
WebVRフレームワークのA-Frameにも、Daydreamのコントローラを扱うコンポーネントがあります。
A-FrameならHTMLベースで簡単にVRコンテンツが作れるので、いずれ試してみたいと思います。
Google VR SDK for Unityのセットアップ
Googleのドキュメントの通りに進めていけばOKです。
Quickstart for Google VR SDK for Unity with Android
英語が苦手な方やセットアップで躓いた方には、以下の記事がオススメです。
図が入っていて説明が丁寧なので、わかりやすい。
http://developer.wonderpla.net/entry/blog/engineer/start_daydream/developer.wonderpla.net
Zenfone ARで実行してみると、画面が分割表示され、デバイスの回転に合わせてカメラも回転します。
Controller Emulatorを使う
Daydream Viewにはコントローラが付いています。
Viewがなければ当然コントローラもありませんが、コントローラがなくても開発ができるようにController Emulatorなるアプリが提供されていました。
アプリのインストール
以下のサイトからAPKファイルをダウンロードして端末にインストールします。
このアプリはDaydream ReadyでないAndroid端末(Phab2 Proを使用)でも動作しました。
The Controller Emulator (Deprecated) | Google VR | Google Developers
Controller Emulatorアプリの画面はこんな感じ。
それっぽいけど、平面なので操作感とかはよくわからないですね。
Unityエディタで動かしてみる
Controller Emulatorをインストールした端末を開発PCにUSBで接続して、Unityエディタでデモシーンを実行します。
コントローラ(になっている端末)を動かすと、レーザポインタみたいな白い光を操作することができ、Cubeに当っていると青、当たっていないときは赤になりました。光が当っている状態でクリックすると、Cubeの位置が変わります。
WiFi接続に変更する
コントローラ(になっている端末)は同一のLAN上にいれば、WiFiでも接続できます。
USB接続だとケーブルで動きが制限されるので、WiFiの方が快適です。
設定するには、"GvrControllerMain.Prefab"の"Gvr Controller(Script)"で"Emmulator Connection"を"USB"から"WIFI"に変更します。
次に、コントローラのIPが記述されているスクリプトを修正します。
- GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs
// IP address of the phone, when connected to the PC via WiFi. //public static readonly string WIFI_SERVER_IP = "192.168.43.1"; ←元々の設定はコメントアウト public static readonly string WIFI_SERVER_IP = "192.168.0.2"; ←コントローラ(になっている端末)のIP
コントローラ(になっている端末)のIPを調べる方法は簡単で、Controller Emulatorアプリを起動すると画面の上の方にIPアドレスが書かれています。
この状態でUnityエディタを起動すると、WIFI経由で操作ができるようになります。
続く
デモシーンを参考にシーンの構成についてもざっくりと調べたのですが、長くなってきたので続きは別の記事にします。