Screenshot_2016-05-20-18-18-56

Google I/O 2016 で発表されたDaydreamのデモアプリを触ってみた。

まだGoogle I/O 2016のカンファレンス期間中ですが、VR関連で発表があったDaydream周りを触ってみました。

以下はDaydream Development Kitのセットアップページに紹介されているお絵かきデモとコントローラークライアントデモのプレイ動画です。

お絵かきデモ(Controller Paint demo)のプレイ動画

コントローラークライアントデモ(Google VR Controller client)のプレイ動画

上記サンプルを実行するための環境構築はSet up a Daydream Development Kitを参考にしています。

環境準備

今回、このサンプルを試した端末、サンプルアプリ、開発環境は以下です。

  • Nexus 6P(N Preview3) サンプルアプリを動かす環境用
  • Nexus 6(N Preview3) Daydreamコントローラーのエミュレーターアプリを動かす環境
  • Nexus 5X(6.0.1) サンプルアプリがインストールできるか確認するために用意
  • Daydreamコントローラーを使ったお絵かきデモ(Set up a Daydream Development Kitからダウンロードできます)
  • Google VR Controller client(Google VR SDKの中にあるDaydreamコントローラーの値を受け取り表示するサンプルです。)
  • Controller Emulator(Daydreamコントローラーのエミュレーターアプリ)Set up a Daydream Development Kitからダウンロードできます。
  • Android Studio 2.1.1(Google VR Controller clientプロジェクトのビルド環境)

環境準備時の注意点

  • ヘッドセットフォンとして試せる環境は現状Nexus6Pのみのようです。

    本家に書かれている英文>The Nexus 6P is the only phone supported as a headset phone for a Daydream development kit at this time.

    試しにNexus6P以外のNexus端末にお絵かきデモをインストールしてみましたが、
    ちゃんとインストールできた端末は5Xと6Pのみでした。
    Nexus6にインストールしようとすると下記エラーが出ます。
    Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, re
    s=-113]

  • Google VR Controller clientを試せる環境はsdk23(Android6.0)以上です
  • Controller Emulatorを試せる環境はsdk19(4.4)以上です
    Min SDKは19ですが実際にはARM 64bit端末限定になっているようです。「Google VR – Daydreamまとめ – ReDo」参照。

Nexus 6Pのセットアップ(お役立ち情報のみ)

セットアップは結構面倒で、
Google VR サービスなどのシステムサービスが利用する権限の許可を手動で行ったり、特別な権限を手動で付与する必要があります。
詳細はSet up a Daydream Development Kitに書かれているため、お役立ち情報のみをスクリーンキャプチャ付きで書こうと思います。

Google VR サービスのVR設定を起動する方法

まず最初にNexus 6Pにお絵かきアプリをインストール
※PCにダウンロードしたAPKファイルをadb installコマンドを使ってNexus6Pにインストール。

次にお絵かきアプリを起動し、セットアップアイコンをタップ。
Screenshot_20160520-144510

確認ダイアログが表示されるためセットアップをタップ。
Screenshot_20160520-144517

Google VR サービスのVR設定画面が表示されます。
セットアップページに書いてありますがデモを試すには必要な項目をONにするかつ、一番下のIPアドレス欄に仮想コントローラー用スマホ(Controller Emulatorアプリをインストールする予定の端末)が持っているIPアドレスを入力する必要があります。
Screenshot_20160520-144550
今まで(Cardboard SDK V0.7.0まで)はCardboardアプリのビューワーセットアップに飛んでいましたが、GoogleVR(Google VR SDK V0.8.0)からはGoogle VR サービス(VR設定)に飛ぶようになりました。もちろんビューワーセットアップはVR設定の中にあります。
ログを見る限りこの画面は標準の設定とは別の場所に用意されているようです。
Displayed com.google.vr.vrcore/.settings.VrSettingsActivity

Cardboard SDKとGoogle VR SDKの違いと気になったところ

Cardboard SDKから実装内容は大きく変わってませんが。パッケージのリネームがメインの修正点です。
詳細は下記リリースノートをご参照ください。
https://developers.google.com/vr/android/release-notes#new

NDKパッケージの追加も気になりましたが、個人的に気になったのはAPI19 (KitKat)より下のサポートが完全に終わったことです。 Tao360も最新のSDKに対応予定ですが、API19より下のユーザーも対象にしていたためAPKの管理方法をアドバンスモードにしようかと思ってます。

SDKのバージョンで変わるセットアップアイコンタップ後の挙動

Google VR SDK V0.8.0でビルドしたアプリでセットアップアイコンをタップするとGoogle VR サービス(VR設定)に直接飛びます。
※もちろんNより下のOSの場合はCardboardアプリのビューワーセットアップに飛びます。

Cardboard SDK V0.7.0でビルドしたアプリでセットアップアイコンをタップするとGoogle VR サービス(VR設定)と設定(Cardboardアプリのビューワーセットアップ)の2つの選択肢が表示されます。
Screenshot_20160520-154000

お絵かきデモの挙動と感想

Nexus 6Pでも処理のカクつきをたまに感じましたが、コントローラーの精度は高く滑らかに描けました。
アプリ起動時の位置が正面となる為コントローラーの正面を初期化したい場合は再起動が必要です。
また、WiFi環境がないとコネクトできません。

Daydream Ready端末上ではハイエンドVRのコントローラーと変わらない滑らかさになるのではないかと予想しています。

Daydream コントローラークライアントデモの挙動と感想

Daydream コントローラークライアントデモアプリ自体は何も権限を持ってません。
ControllerManagerのEventListenerを受け取るだけです。
実装がとても楽なのでCardboard SDKに準拠しているアプリは比較的簡単に対応できそうです。

お絵かきデモと違って単純にEventListenerからもらう値を確認できるようになってました。
参考までにタッチしたときにどのような値が来るかわかるキャプチャを貼っておきます。

タッチパッドに触れていない時
Screenshot_20160520-143657Screenshot_20160520-143700

タッチパッドに触れている時
Screenshot_20160520-143710Screenshot_20160520-143714

まとめ

Daydreamコントローラー エミュレーターを使ったデモを試す限り、Nexus 6Pでもカクつく。
処理がカクつかない時の精度は高く滑らかに動くのでマシンスペックが上がればかなり良い体験ができそうです。
Gear VRなどのハイエンドMobile VRはDaydreamプラットフォームに集約されていくのではないでしょうか。

ブログの内容に誤りがあればご連絡いただければ幸いです。