じゅころぐAR

ARのブログ

Daydreamの開発について調べる

Zenfone ARを購入したときから試そうとは思っていたのですが、Daydream Viewが入手できていないこともあって後回しにしていました。
AR(というかマルチプレイ実装)が若干行き詰まりつつあるので、気分転換に試してみます。

Daydreamとは

Googleが提供しているVRの開発プラットフォームで、特定のデバイスを指す用語ではありません。
現状はスマートフォンを利用したVRになるので、体験の質で専用機にはやや劣ると思いますが、利用しやすさと開発しやすさから、より手軽にVRを楽しめるものと捉えています。

vr.google.com

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)

vr.google.com

Daydream Viewは未だに国内販売がされておらず、情報も全く入ってきません。
入手方法として、並行輸入品がAmazonで出品されています。

www.amazon.co.jp

海外で購入すると、$70.35。為替レートが$1 = 109円くらいなので、送料+手数料が1,300円くらいですね。
そこまで割高でもないので、1つ購入しました。詳細は届いたら書きます。

www.amazon.com

Standalone VR

スマートフォンやPCを接続しないスタンドアロン型のDaydream対応VRヘッドセットがGoogle I/O 2017で発表されました。

vr.google.com

メーカーは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コンテンツが作れるので、いずれ試してみたいと思います。

daydream-controls – A-Frame

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アプリの画面はこんな感じ。
それっぽいけど、平面なので操作感とかはよくわからないですね。 f:id:jyuko49:20170819122455j:plain

Unityエディタで動かしてみる

Controller Emulatorをインストールした端末を開発PCにUSBで接続して、Unityエディタでデモシーンを実行します。
コントローラ(になっている端末)を動かすと、レーザポインタみたいな白い光を操作することができ、Cubeに当っていると青、当たっていないときは赤になりました。光が当っている状態でクリックすると、Cubeの位置が変わります。

f:id:jyuko49:20170819124701p:plain

f:id:jyuko49:20170819124707p:plain

WiFi接続に変更する

コントローラ(になっている端末)は同一のLAN上にいれば、WiFiでも接続できます。
USB接続だとケーブルで動きが制限されるので、WiFiの方が快適です。

設定するには、"GvrControllerMain.Prefab"の"Gvr Controller(Script)"で"Emmulator Connection"を"USB"から"WIFI"に変更します。

f:id:jyuko49:20170819130652p:plain

次に、コントローラの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経由で操作ができるようになります。

続く

デモシーンを参考にシーンの構成についてもざっくりと調べたのですが、長くなってきたので続きは別の記事にします。