JavaのGoogle VR SDKを使って,Mirage Soloの6DOFを扱った話. Daydreamの6DOFをJavaで扱うMirage Soloで色々試していますが,6DOFに対応できれば没入感がかなり違うので,対応しました.GvrApiをどうするか6DOFをJavaのGoogle VR SDKから扱う場合,GvrApi.getHeadSpaceFromStartSpaceTransform() このGvrApiはJavaの場合, GvrLayout から取得する必要があり,アプリの作りによっては対応できませんでした. 例えばSDK付属のサンプル「sdk-treasurehunt」では,無理だと思います. これで頓挫していました... それが,最近リリースされた GVRのバージョン1.170.0 では,GvrViewからGvrApiを取得できるようになりました! これで希望が見えました. ※9/8時点で,GvrViewのAPIドキュメント GvrViewには未反映ですが, 実装にはgetGvrApi()メソッドが追加されています. 6DOFの実装マニフェストに, <uses-feature android:name="android.hardware.vr.headtracking" 〜 の追加が必要です.Javaの実装としては,GvrApi.getHeadSpaceFromStartSpaceTransform()を呼びだすだけです. 単純化した例ですと,こんな感じです.
自分の場合は単純にX,Yの移動量が欲しかったので,GvrView.StereoRenderer#onNewFrame()内で上記呼び出しをして,
この移動量を反映して地形の再描画を行うことで,6DOF対応の快適な没入感が得られました. 参考 |