DayDreamコントローラをJavaで扱う

JavaのGoogle VR SDKを使って,ARMモデルに準拠したDayDreamのコントローラの使用をした話

Mirage Soloを購入しましたので,色々試しています.

今まで使っていたCardboardとは違って,
Mirage SoloなどのDayDream機ではコントローラーを使えるのですが,
方針としてARMモデルとやらを使わなければならないという基準があります.

Daydream App Quality Requirements

そういうことなら当然,このARMモデルはGoogle VRのSDKでサポートされているのかと思っていたのですが,
どうもNDKとUnityではサポートされているのですが,困ったことにJava版のSDKではサポートされていないようです.

Guidance on Controller Arm Model Issue 341

Java版は色々と,機能が貧弱なようです.

ないものは仕方ないので,NDKのSDKを使ってコントローラーにアクセスする仕組みをJNIでJavaにラップしたものを作って,
アプリとしては全てをJavaで行うが,裏ではJavaとNDKの両方のSDKを使うというハイブリッド方式で実装してみました.

サンプルソースとして,
GVR SDKに付属しているJava版のサンプル(sdk-treasurehunt)に対して,この方式を使ったコントローラーへのアクセス機能を追加したものを,
GitHubにアップしました.

kamoland/gvr-treasurehunt2

treasurehuntサンプルでは角体が宙に浮きますが,この位置をコントローラーで操作できるようになっています.
そしてこの操作に,ARMモデルが適用されているはずです.

「はずです」というのは,ARMモデルを適用しているかどうかによる動きの違いが,自分には正直なところよくわからないのです...