Open6
【備忘録】VR開発で使用したコンポーネント/Prefabの機能まとめ【随時更新中】
はじめに
UnityでVR開発を行っていく中で使用してきたPrefabやコンポーネントの機能について、備忘録としてまとめていきます。
ある程度出来てきたら記事の方に移していく予定です。
Unity標準のコンポーネントなどについては割愛しています。
■ 環境
- Windows10
- Unity: 2022.3.42f1
- MetaQuest2
- Meta XR All-in-One SDK: 69.0.1
OVRCameraRig
VR環境でのカメラの設定と視点制御を担う
1. OVR Camera Rig
VR環境でのカメラの設定と視点制御を担うコンポーネント
プロパティ
- Script
OVRCameraRig
2. OVR Manager
アプリでVRモードを使用するのかMRモードを使用するのか、コントローラーを使うのかハンドトラッキングを使うのか、などさまざまな設定ができるコンポーネント
プロパティ
- Tracking
- Tracking Origin Type
- default:
Floor Level
- default:
- Tracking Origin Type
3. OVR Headset Emulator
Unity内でVRヘッドセットの動きをエミュレート(シミュレート)するためのコンポーネント
プロパティ
- Script
OVRHeadsetEmulator
OVRInteraction
下記のとおりにHMD・コントローラー・ハンドのインタラクションがまとめられている
-
OVRHmd
ヘッドマウントディスプレイ(HMD)の制御と追跡を担当する -
OVRControllers
VRコントローラーの入力と追跡を担当する -
OVRHands
ハンドトラッキングによる手の動きの検出と制御を担当する
ヒエラルキー構造(例)
OVRCameraRig/
└── OVRInteraction/ # VRインタラクションの基本構造
├── OVRHmd/ # ヘッドマウントディスプレイの制御
│ └── OVRHmdDataSource # HMDの位置・回転データの処理
├── OVRControllers/ # コントローラー関連の制御
│ ├── LeftController/ # 左手コントローラーの制御
│ │ ├── ControllerInteractors # コントローラーによるインタラクション処理
│ │ ├── OVRControllerDataSource # ボタン・トリガー入力データ処理
│ │ └── OVRControllerVisual/ # コントローラーの見た目制御
│ │ └── OVRControllerPrefab/ # コントローラーモデル(以下割愛)
│ └── RightController/ # 右手コントローラー (基本は左手と同様の構造)
└── OVRHands/ # ハンドトラッキング関連
├── LeftHand/ # 左手のトラッキング制御
│ ├── HandDataLeft # 手の位置・姿勢データ処理
│ ├── HandFeaturesLeft # 指の握りや摘みなどの検出
│ ├── HandInteractorsLeft # 左手によるインタラクション処理
│ ├── HandVisualsLeft/ # 手のビジュアル表現(以下割愛)
│ └── OVRHandDataSource # 手のトラッキングデータのソース
└── RightHand/ # 右手のトラッキング (基本は左手と同様の構造)
Interactor
インタラクションを『実行する側』。
ヒエラルキー内で名前にInteractors
と入っているオブジェクトの配下に使用するインタラクションを登録していく。
例)
- コントローラーのインタラクション ->
ControllerInteractors
- ハンドのインタラクション ->
HandInteractorsLeft
※ 例
OVRCameraRig/
└── OVRInteraction/
├── OVRControllers/
│ ├── LeftController/
│ │ └── ControllerInteractors # これ(左手のコントローラ)
│ └── RightController/ # 右コントローラ(基本は左と同様)
└── OVRHands/
├── LeftHand/
│ └── HandInteractorsLeft # これ(左手)
└── RightHand/ # 右手(基本は左と同様)
■コンポーネント
1. Transform
Transform(Unity Documentation)
2. Best Hover Interactor Group
ホバー状態のインタラクションが複数存在した場合の優先順位を決定する
プロパティ
- Script
BestHoverInteractorGroup
- Interactors
- インタラクターを登録するリスト
- Default:
List is Empty
Interactable Unity Event Wrapper
イベント一覧
Hover
When Hover ()
- 指やコントローラーがインタラクタブルオブジェクトに近づいて検出範囲に入った時
Unhover
When Unhover ()
- Hover状態から離れた時
Select
When Select ()
- インタラクタブルオブジェクトが選択された時(実際の操作開始)
Unselect
When Unselect ()
- 選択状態が解除された時(操作終了)
Interactor View Added
When Interactor View Added ()
- 新しいインタラクターがこのインタラクタブルオブジェクトを検出可能になった時
Interactor View Removed
When Interactor View Removed ()
- インタラクターがこのインタラクタブルオブジェクトを検出できなくなった時
Selecting Interactor View Added
When Selecting Interactor View Added ()
- インタラクターが選択状態で追加された時
Selecting Interactor View Removed
When Selecting Interactor View Removed ()
- 選択中のインタラクターが除外された時