【備忘録】MetaQuest × Unity によるVR開発手順【随時更新中】
はじめに
UnityでVR開発を行っていくための共通設定などを備忘録として書いていきます。
ある程度出来てきたら記事の方に移していく予定です。
Unityの操作は割愛しています。
■ 環境
- Windows10
- Unity: 2022.3.42f1
- MetaQuest2
- Meta XR All-in-One SDK: 69.0.1
初期設定
■ 使用テンプレート
- Universal 3D
■ プロジェクト設定
1. Build Settings
- プラットフォームを Android に切り替える
2. Package Manager
-
Meta XR All-in-One SDK
をインストール&インポート
3. Project Settings
3-1. XR Plug-in Management
-
Android Settings
タブ ->Plug-in Providers
->Oculus
にチェック -
Windows, Mac, Linux Settings
タブ ->Plug-in Providers
->Oculus
にチェック
3-2. Meta XR
-
Fix All
でエラーや警告を解消
3-3. Player
- CompanyName を設定
-
Other Settings
->Identification
->Override Default Package Name
のチェックを外す
Buillding Blocks 【開発用パッケージ】
ハンドトラッキングなどのXRの基本機能がパッケージングされており、ワンクリックで簡単に利用することができる優れもの。
■ 利用方法
- Unity Editorのタブで、
Meta
->Tools
->Buillding Blocks
- 一覧から選択やドラッグ&ドロップでシーンに追加される
Meta XR Interaction SDK 【開発用パッケージ】
オブジェクトを掴んだりボタンを押したり、XR開発のための基本的なインタラクション機能が簡単に構築できるUnity用のパッケージ。
■ 利用方法
- Unity Asset Store より インポート&インストール
- 使用したいPrefabなどをシーンに追加していき実装を行っていく
■ サンプル
パッケージにはサンプルシーンが入っており、インポートすることで構築方法などを参考にする
-
Package Manager
->Meta XR Interaction SDK
->Sample
タブ ->Example Scenes
をインポート - 以下のプロジェクト内にサンプルシーンが入っているので、ダブルクリックorヒエラルキーにドラッグ&ドロップして開く
-
Assets
->Samples
->Meta XR Interaction SDK
->(バージョン)
->Example Scenes
Quest Link 【Tips】
アプリ開発をするにあたり、テストやデバッグをする度に「ビルドとVRヘッドセットへのインストール」をしないといけませんが、これでは開発に時間がかかり効率が悪すぎます。
そこでQuest Linkを使います。
USBケーブル(Quest Link)またはWi-Fi(Air Link)を使用して、PCとMeta Quest(VRヘッドセット)を接続するための機能です。
この機能を使うことで、Unity EditorのPlayモードでプレビュー、テストができるようになります。
■ 利用条件
Quest Link の要件を満たすもの。
- Windowsであること(Macは利用できません…)
- USBケーブル(3.0 もしくは 2.0)
- それなりのスペックのPC(ゲーミングPCとか)
■ 利用方法
- Unityの設定
Project Settings
->XR Plug-in Management
->Windows, Mac, Linux Settings
タブ ->Plug-in Providers
->Oculus
にチェック - VRヘッドセットをPCと接続
- Oculus Link を有効化
- Unity EditorでPlayボタンを押す
Interactor と Interactable
インタラクションには、
インタラクションを実行する側 = Interactor
インタラクションを受ける側 = Interactable
が存在し、それぞれ実装していくことでインタラクションが実現できる。
Cubeを手で掴みたい場合は、
手 = Interactor
Cube = Interactable
ということになる。
Interactor(インタラクター)の実装
インタラクションを『実行する側』。
ヒエラルキー内で名前にInteractors
と入っているオブジェクトの配下に、使用するインタラクションを登録していく。
例)
- コントローラーのインタラクション ->
ControllerInteractors
- ハンドのインタラクション ->
HandInteractorsLeft
■ 手順
※Meta XR Interaction SDK を例に書いてます。
- ヒエラルキー内で名前に
Interactors
と入っているオブジェクトを探す
※ 例
OVRCameraRig/
└── OVRInteraction/
├── OVRControllers/
│ ├── LeftController/
│ │ └── ControllerInteractors # これ(左手のコントローラ)
│ └── RightController/ # 右コントローラ(基本は左と同様)
└── OVRHands/
├── LeftHand/
│ └── HandInteractorsLeft # これ(左手)
└── RightHand/ # 右手(基本は左と同様)
- 追加したいインタラクション(Prefab)をProjectから探して、
Interactors
オブジェクトの子オブジェクトにする
- インタラクション例
- 掴む(Grab)
- HandGrabInteractor: ハンド
- ControllerGrabInteractor: コントローラ
- 突く(Poke)
- HandPokeInteractor: ハンド
- ControllerPokeInteractor: コントローラ
- レーザー(Ray)
- HandRayInteractor: ハンド
- ControllerRayInteractor: コントローラ
- 掴む(Grab)
-
Interactors
オブジェクトのコンポーネントBest Hover Interactor Group
のプロパティInteractors
に、追加したインタラクションをアタッチする
Interactable (インタラクタブル)の実装
インタラクションを『受ける側』。
3DオブジェクトやUIなどのインタラクションを受けさせたいオブジェクトを作成していく。
ヒエラルキー構造(例)
OVRCameraRig/
└── …
Interactable/
└── Cube/ # 例としてCube
└── HandGrab/ # 例として「手で掴む」インタラクタブル
■ Cube を掴む
- Cubeに
Rigidbody
コンポーネントを追加する - Cubeに
Grabbable
コンポーネントを追加し、プロパティRigidbody
に1.を割り当てる