Oculus Goで腕と頭のトラッキングがしたくなって NOLO CV1 を試してみました。
https://www.amazon.co.jp/dp/B07C9XNFP8
結論から言うと動きました!開発目的なら無理矢理6dofハンドトラッキング+6dofヘッドトラッキングで遊べます。
セットアップ
- Oculus Go上で自作Unity製アプリが動くようにしておく
- NOLO CV1のペアリングを済ませておく
- Bluetoothキーボードをadb経由で無理やりOculusGoとペアリングしておく(Nolo CV1の接続時のデバイス接続許可ダイアログを操作するため)キーボードペアリングは末尾にメモがあります。
NOLO CV1を使うOculus Goアプリのインストール
NOLOのサンプルシーンのapkをGearVR向けっぽくビルドして
adb install -r hoge.apk
でOculusGoに転送する。
NOLO CV1を使うOculus Goアプリの起動
adb shell dumpsys package com.Company.YourVeryCoolApp
みたいなことをしてメインのアクティビティが何か調べて、メインのアクティビティを直接am startする。
Unity2017.4.3f1では
adb shell am start -n com.Company.YourVeryCoolApp/com.unity3d.player.UnityPlayerActivity
こんな感じ。
そしてアプリが起動したらUSBデバイス接続ダイアログが出ます! OculusGoのレンズ越しに…
やった!タッチもマウスも効かない!!!
はい…
adb shell getevent -l
でもそれっぽいイベント無さそうなので
キーボード入力を無理矢理行います。
BTキーボードでOKを押す
2DのUSBデバイス接続許可ダイアログ上では、BTキーボードが使えます。
なので矢印キーとEnterキーでOKを選択、決定してUSB接続ダイアログを黙らせたら、無事自作NOLO CV1がOculus Go上で動きました。
現在のSDKだと毎回アプリ起動時にこのUSB機器ダイアログが出るので、結構手間です…
adb経由でキーボードイベントを発行する
BTキーボードがない場合、無理やりadb経由でキーボードイベントを発行することもできます。
以下は「次回からは接続を確認しない」にチェックを入れてOKボタンを押すコマンドです。
参考サイト: http://d.hatena.ne.jp/kinneko/20130820/p1
上から順に↓ enter ↓ → enter というキーイベントを発行しています。
adb shell input keyevent 20
adb shell input keyevent 66
adb shell input keyevent 20
adb shell input keyevent 22
adb shell input keyevent 66
BTキーボードのペアリング
blutoothキーボードを適当にペアリングしてしまえば、PC不要でデモ出来て便利です。
OculusGoにadbが通る状態で以下のコマンドを発行すると、素のAndroidのBluetoothデバイス追加画面に遷移します。
遷移先でキーボードペアリングをした後に。VysorでPCから画面を閉じるか、ペアリングしたキーボードでescを押してOculusGoのHome画面に遷移しましょう。
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.bluetooth.BluetoothSettings