Oculus Quest も文章書き&開発マシンにする

Oculus Go に続いて上位機種 Oculus Quest が登場しました。両手のモーションコントローラ含めてポジショントラッキングに対応しており、スタンドアロンながら 6.6DoF のフルスペック VR になっています。

Oculus Quest にも Oculus TV が入っており、以前作成した TVLauncherGo がそのまま使えるようです。Oculus Go と同じように Oculus TV 上で Android アプリが動きました。

・設定アイコンから Bluetooth Keyboard の接続
・同じく設定から物理キーボードのキーレイアウト変更
・UserLAnd を使って Linux をインストール
・VNC アプリの起動 (制限あり)

などなど一通りうまくいっています。UserLAnd が動けば、開発環境や日本語入力環境の構築ができます。

つまり Oculus Quest と Bluetooth Keyboard を持ち歩けばどこでも大画面で作業に没頭できるようになるわけです。

Oculus Quest + UserLAnd + Ubuntu + bVNC

ちなみに開発環境には Termux も併用しています。Termux 自体は TVLauncherGo がなくても動きます。(併用する理由はこちら)

● Oculus Quest の速度

Oculus Go よりも性能が上がってだいぶ快適になりました。下記の表は Termux 上でのコンパイル速度の比較です。Quest は Go よりも 2.6 倍速くなっています。

VR あり VR利用 SoC RAM Thread Time
Daydream + Pixel 3 あり Snapdragon 845 4GB 8 72
Oculus Quest あり Snapdragon 835 4GB 8 105
Oculus Go あり Snapdragon 821 3GB 4 275
Daydream + ZenFone AR あり Snapdragon 821 8GB 4 349
VR なし VR利用 SoC RAM Thread Time
Pixel 3 無し Snapdragon 845 4GB 8 32
Essential Phone 無し Snapdragon 835 4GB 8 38
ZenFone 3 Max ZC553KL 無し Snapdragon 430 3GB 8 100
ZenFone AR ZS571KL 無し Snapdragon 821 8GB 4 111
Nexus 5X 無し Snapdragon 808 2GB 6 135

・Time の単位は秒。値が小さい方が高速。

当然ながら VR を使わない状態だともっと高速です。同じ SoC を搭載した機種同士で比べると、VR 空間上でのコンパイルは通常の状態より 2.5 倍前後遅くなっています。それだけ VR の描画は負荷が高いわけです。

Quest の結果は VR 無しの ZenFone AR (Snapdragon 821) や ZenFone 3 Max (Snapdragon 430) とほぼ同じくらいになっています。VR 上で素の Snapdragon 821 や Snapdragon 430 が動いていると思えば速度のイメージが掴めるのではないでしょうか。

比較用に Daydream も試しましたが、Snapdragon 845 の Pixel 3 は速いものの画面解像度が低く実用には厳しいものがありました。XL ならちょうど良いのかもしれません。Zenfone AR はビルド中、発熱のためか処理落ちが多く不安定でした。やはり専用機である Oculus Go や Quest は解像度が高く画面端の歪みもなく安定しています。

●持ち歩きやすさ

可搬性に関しては Go の方が上です。性能が上がりサイズと重量が若干増えたのもありますが、バンドがしっかりした作りになったため Go のように折り畳めなくなっています。また場所が変わると毎回ガーディアン設定が出てくるので、使うまでにひと手間かかります。

Oculus Go と Oculus Quest

●ポジショントラッキング

ポジショントラッキングのおかげで VR 内での見え方はかなり自然になりました。スクリーンに近づいたり離れたりできるので、文字が小さくて見えにくい場合も近寄れば読むことができます。ただしガーディアン範囲を抜けると外部カメラ映像に切り替わってしまうので、大きく動く場合はルームスケールの範囲設定が必要。

●環境設定など

Go とはコントローラが違いますが使うボタンは限られています。Oculus TV で前の画面に戻るには (B) ボタンを使います。

Oculus TV で前の画面に戻る操作
・Oculus Go : メニューボタン
・Oculus Quest : 右コントローラの (B) ボタン

(1) TVLauncherGo の apk を install

(2) Oculus TV → TVLauncherGo → 設定アイコン → Bluetooth
 ・ Bluetooth キーボードを接続
 ・ 必要に応じてレイアウト選択
  ・ 設定の言語→キーボードレイアウト
  ・ (「106/109106/109ハードウェアキーボード配列変更 (+親指Ctrl) [日本語配列]」が使えます。

(3) UserLAnd の apk を install

(3) Oculus TV → TVLauncherGo → UserLAnd
 ・Linux install (SSH を選択)

下記の記事も参考にしてください。
Oculus Go を文章書き&開発マシンにする
Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた

● VNC を使う場合

UserLAnd が bVNC Free 以外の client にも対応したため手順が若干変わりました。Real VNC Viewer を使う場合でも UserLAnd が直接呼び出してしまうため、一旦停止させてから Oculus TV 経由で起動する必要があります。そのかわり複数の VNC client を入れることで起動をキャンセルできます。

以下は「環境設定など」の続きです。

(1) Real VNC Viewer の apk を install

(2) Oculus TV → TVLauncherGo → UserLAnd
 ・ Linux Distribution 名長押しで VNC に変更

(3) Linux を起動すると画面真っ黒でロード待ちになるので、右コントローラの Oculus Button で戻る
 ・Real VNC Viewer は大丈夫ですが、bVNC だとここで戻れないので再起動になります。

(4) 右コントローラの (B) ボタンで TVLauncerGo に戻り強制停止する
 ・VNC Viewer アイコン長押しで「アプリ情報」の画面を開く (設定→アプリ→VNC Viewer でも構わない)
 ・VNC Viewer アプリを強制停止する (起動した状態を一旦クリアするため)

(5) TVLauncerGo に戻る

(6) あらためて VNC Viewer を起動し、下記の設定で接続する
  ・ HOST: 127.0.0.1
  ・ PORT: 5951

(7) VNC 接続時にパスワードを聞かれるので、UserLAnd の Linux アカウント作成時に設定した VNC Password を入れる

最初は画面が Native 解像度になっているので ~/.vncrc を書き換えて調節してください。1280×720 推奨。

UserLAnd の日本語環境設定についてはこちらを参考にしてください。

なお Real VNC Viewer は比較的安全に起動できますが、モーションコントローラでのマウス操作には難があります。ウィンドウなどドラッグ移動できないのと、ちょっとしたブレでタスクバーのメニューが開かないなど制限があります。少々手間がかかりますが bVNC を使う方法があります。

● VNC を使う場合 (bVNC)

UserLAnd からの呼び出しをキャンセルするために、Real VNC Viewer と bVNC の両方を install しておく必要があります。必ず Bluetooth Keyboard を接続しておいてください。

(1) Real VNC Viewer の apk を install

(2) bVNC の apk を install

(3) Oculus TV → TVLauncherGo → UserLAnd
 ・ Linux Distribution 名長押しで VNC に変更

(4) Linux を起動すると VNC client 選択画面になるので、Bluetooth Keyboard の [ESC] を押してキャンセル

(5) 右コントローラの (B) ボタンで TVLauncerGo に戻る

(6) TVLauncerGo から bVNC を起動

(7) 下記の設定で接続する。右上の [CONNECT] を押す
  ・ HOST: 127.0.0.1
  ・ PORT: 5951
  ・ Linux アカウント作成時に入力したユーザー名とパスワード

(8) つながったら bVNC の設定メニューから 「Input Mode」 → 「Direct, Hold Pan」 を選択する

これでモーションコントローラだけでウィンドウ操作もできるようになります。タスクバーのメニューも簡単に開きます。

Oculus TV を経由せずに UserLAnd が直接 bVNC を起動してしまうと操作できなくなるので注意してください。

関連ページ
Android の上の開発環境
HMD VR / AR Device spec 一覧

関連エントリ
Android UserLAnd の更新と VNC 画面設定
UserLAnd : Android 9.0 で Ctrl + SPACE を使えるようにする
Android Termux で日本語入力を行う / UserLAnd との併用
Android 9.0 と Bluetooth Keyboard による日本語入力
Android/Oculus Go/Daydream の画面をミラーリングするツールを作ってみた
Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた
Oculus Go を文章書き&開発マシンにする
UserLAnd とブラウザ
Android 上の開発環境と UserLAnd
OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Oculus Go は VR ができる新しい携帯ゲーム機