はじめに

2020/10/13にOculus Quest2が発売されました。

値段が手ごろでスペックも高く、面倒なケーブルの接続も無いので、

これを気にHMD所持者が増えたのではないかと思います。

ちなみに、社内では結構増えました。

そんなQuest2ですが、最近の開発環境はどうなっているのか、

まとめてみました。

※Quest2の詳しいスペックについては、他記事でたくさん紹介されてますので省略します。

画面キャプチャー

開発者としてはまず実機を手に入れたら、

どうやってスクリーンショットや録画を出来るのか気になると思います。

やり方がいろいろあるのでまとめてみました。

ホーム画面

写真の場所

主にシェアから各操作を行うことが出来ます。

スクリーンショット

PC/Quest 2/内部共有ストレージ/Oculus/Screenshots

スクリーンショットはここに保存されます。

録画

PC/Quest 2/内部共有ストレージ/Oculus/VideoShots

録画はここに保存されます。

ミラーリング

Oculusアプリ側のミラーリング

Quest実機でミラーリングを選択後、Oculusアプリを入れているモバイル端末側で 上記のような設定で可能です。

なるべく標準機能で大画面に映したい時は、下記のようなやり方で行えます。

Oculus Link

Oculus Linkの事に関しては、この記事では省略します。

スクリーンショット

写真の場所

メニューバーの右端の方にポインターを当てると、シェアメニューが表示されます。

PC/ピクチャ/スクリーンショット

PCに保存され、通常はここに保存されます。

C:/Users/<ユーザー名>/OneDrive/%E7%94%BB%E5%83%8F/スクリーンショット

OneDriveの設定がされていると、ここに保存されるみたいです。

録画とミラーリング

まだ、Oculus Linkがベータ版のためか出来ないです。

後述する Oculus Developer Hub を使ってなら出来ます。

Oculus Developer Hub

2020/09/16に公開されたばかりの開発者ツールです。詳細は後述します。

このツールでも、スクショや録画、キャストが行えます。

やり方の画像

C:/Users/<ユーザー名>/AppData/Roaming/odh/captures

PCのここに保存されます。

キャプチャーされた画像

このツールでキャプチャーすると、複眼の画像になります。

キャストの場合は単眼です。

Oculus Integration

公式ドキュメントはこちら

言わずと知れた、Oculus開発の定番ライブラリですね。

開発方法はこの方のサイトがとても詳しいので省略します。

今回はQuest2向けに何か増えたのかちょっと見ていきます。

今のところはQuest2にしか出来ないという機能はなさそうです。

ちなみに、要望が多そうなパススルーAPIはまだ提供されていませんでした。

開発環境

  • OculusIntegration 20.1.0
    • リリース日:2020/10/05
    • 20.1.0からQuest2正式サポートです。
  • Unity2020.1.6f1
  • 確認ハード:Oculus Quest2

この組み合わせでおおむねのサンプルは動きました。

OVR Manager

インスペクターの画像

TargetDeviesにQuest2の表示があるのが確認できます。

Rift S が消えているような気がするのですが、2021年に販売が終了するからかもしれないですね。

public enum SystemHeadsetType
{​​​​​​
   None = OVRPlugin.SystemHeadset.None,
   // Standalone headsets
   Oculus_Quest = OVRPlugin.SystemHeadset.Oculus_Quest,
   Oculus_Quest_2 = OVRPlugin.SystemHeadset.Oculus_Quest_2,
   Placeholder_10 = OVRPlugin.SystemHeadset.Placeholder_10,
   Placeholder_11 = OVRPlugin.SystemHeadset.Placeholder_11,
   Placeholder_12 = OVRPlugin.SystemHeadset.Placeholder_12,
   Placeholder_13 = OVRPlugin.SystemHeadset.Placeholder_13,
   Placeholder_14 = OVRPlugin.SystemHeadset.Placeholder_14,
   // PC headsets
   Rift_DK1 = OVRPlugin.SystemHeadset.Rift_DK1,
   Rift_DK2 = OVRPlugin.SystemHeadset.Rift_DK2,
   Rift_CV1 = OVRPlugin.SystemHeadset.Rift_CV1,
   Rift_CB = OVRPlugin.SystemHeadset.Rift_CB,
   Rift_S = OVRPlugin.SystemHeadset.Rift_S,
   Oculus_Link_Quest = OVRPlugin.SystemHeadset.Oculus_Link_Quest,
   PC_Placeholder_4102 = OVRPlugin.SystemHeadset.PC_Placeholder_4102,
   PC_Placeholder_4103 = OVRPlugin.SystemHeadset.PC_Placeholder_4103,
   PC_Placeholder_4104 = OVRPlugin.SystemHeadset.PC_Placeholder_4104,
   PC_Placeholder_4105 = OVRPlugin.SystemHeadset.PC_Placeholder_4105,
   PC_Placeholder_4106 = OVRPlugin.SystemHeadset.PC_Placeholder_4106,
   PC_Placeholder_4107 = OVRPlugin.SystemHeadset.PC_Placeholder_4107
}​​​​​​

同じくOVRManagerより、SystemHeadsetTypeから、Quest2か? OculuLinkか?の条件分岐が可能です。

コントローラーのモデル

コントローラー画像

Quest2用のコントローラーモデルも用意されています。

コントローラーモデルのパス Assets/Oculus/VR/Meshes/OculusTouchForQuest2にあります。 後述するMRTK2.5でコントローラーを表示したい時はこれを使用します。

ハンドのモデル

ハンドのモデル画像

ハンド用のモデルも用意されています。

ハンド用モデルのパス

Assets/Oculus/VR/Meshes/HandTrackingにあります。

こちらも、後述するMRTK2.5でハンドを表示したい時はこれを使用します。

Oculus Developer Hub

ハブ画像

公式ドキュメントはこちら

先述した画面キャプチャーにも少し登場しましたが、

PC上で開発者向けに便利なことが行えるツールです。

Hololens開発に慣れている人なら、デバイスポータルみたいな感じです。

  • 主に以下のことが出来ます。
    • 画面キャプチャー(スクショ、録画、ミラーリング)
    • ADB無線化(画面キャプチャーも無線で出来ます。)
    • 近接センサー On/Off
    • OVRメトリクス On/Off
    • apkのインストールや起動。
    • SDKや開発アプリの管理
    • 開発者ブログや各マニュアルの外部リンク

個人的には、無線で画面のキャストが出来たり、

近接センサーをOffにすることによって、スリープを防げたり出来るのが 重宝しています。

注意事項

ログインアカウント

こちらのトラブルシューティングより、 Quest実機とOculus Develper Hubのアカウントは共通 でないと使えないので注意してください。

なお自分の時はなぜか、パスワードを一度変更しないとログイン出来なったです。 Questアカウントを持っていなくて、Facebookアカウントで直接作成した場合そうなる可能性があると思います。

OVRメトリクス

実機でパフォーマンスを確認できる便利ツールですが、

この開発者によって、スクショや画面キャストが出来なくされています。

パフォーマンスの状態をそのまま画像で保存が出来ず、

スクショを撮った場合は、綺麗にこのOVRメトリクスの部分が表示されないです。

※直接スマホで撮影とかは出来ます。

PC/Quest 2/内部共有ストレージ/OVRMonitorMetricsService/CapturedMetrics

OVRメトリクスツールを実機で起動して、csvを吐き出す設定をすることで、 このディレクトリで確認は可能です。

MRTK 2.5

公式ドキュメントはこちら

Microsoftが提供しているMixedRealityToolkitという、

Hololens開発者なら馴染みのライブラリです。

実は、スマホ開発や他HMDの開発もこれで出来たりします。

今回は、2.5からMRTK-Questを使わずとも、Oculus Questに

正式対応になったのでそこを見ていきたいと思います。

ちなみに、2.5からPackageManagerからインポート出来るようになりました。

開発環境

  • Unity 2020.1.6f1
  • OculusIntegration 20.1.0
  • MRTK 2.5.1
  • 確認ハード:Oculus Quest2

ドキュメントに漏れがある?

こちらの公式ドキュメント 通りにやれば大体できますが、

OculusXRSDKDeviceManagerの画像

OculusXRSDKDeviceManagerOvrCameraRigPrefabLocal Avater PrefabがNoneのままでエラーが出て、この説明がされていないと言われています。

Integrate Oculus Integration Unity Moculesの画像

問題はMixed Reality Toolkit -> Utilites -> Oculus -> Integrate Oculus Integration Unity Mocules を実行した時に起きてまして、

一度目はたくさんのWaringが出て、ここがNoneのままの可能性が高いです。

設定されたときの画像

このIntegrate Oculus Integration Unity Moculesを2回目?実行すると、Waringが出ずに設定されます。Unity2020のバグかもしれないと言われています。

上手くいかない方は確認してみて下さい。

オブジェクトの位置が低い時の対処

設定された画像

  1. 先ほどの、”Integrate Oculus Integration Unity Mocules”で生成された”MRTK-Quest_OVRCameraRig”をそのままでは設定変えられないので、Prefab化します。
  2. Tracking Origin Type がデフォルトで強制的に”Floor Level”にされて、ガーディアンで設定した床を基準にされるので、”Eye Level”に変更します。

コントローラーの表示を変える

コントローラー設定の画像

MixedRealityTookit -> Input -> Controllers -> Add A New Controller Definition より基本的に設定出来ます。

コントローラー設定

  • Quest2のコントローラーを表示する。
  1. Contoller Type -> OculusXRSDKTouchContoroller
  2. Override Model -> OculusTouchForQuest2<Left or RIght>Model
  3. HandednessをLeft , Right それぞれ設定

コントローラのモデルは先述したOculus Integrationに入っています。

手の設定の画像

  • 手を表示する。(※ハンドトラッキング中の手では無いです。)
  1. Controller Type -> OculusHand
  2. Override Model -> OculusHand_<L or R>

ハンドのモデルは先述したOculus Integrationに入っています。

※ここのOculusHandは設定しても変化が無かったです。

まとめ

Quest2を基準に調べてみて、

開発方法自体はそんなに変わらずに、選択肢が増えたという感じかなと思いました。

個人的には、Oculus Developer Hubが出たのが一番大きかったです。

今後の開発の必須ツールになると思います。

このまとめが少しでも誰かの参考になったら幸いです。



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる