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にアップしました.
treasurehuntサンプルでは角体が宙に浮きますが,この位置をコントローラーで操作できるようになっています.
そしてこの操作に,ARMモデルが適用されているはずです.
「はずです」というのは,ARMモデルを適用しているかどうかによる動きの違いが,自分には正直なところよくわからないのです...