Open6

【備忘録】VR開発で使用したコンポーネント/Prefabの機能まとめ【随時更新中】

tkytky

はじめに

UnityでVR開発を行っていく中で使用してきたPrefabやコンポーネントの機能について、備忘録としてまとめていきます。
ある程度出来てきたら記事の方に移していく予定です。
Unity標準のコンポーネントなどについては割愛しています。

■ 環境

  • Windows10
  • Unity: 2022.3.42f1
  • MetaQuest2
  • Meta XR All-in-One SDK: 69.0.1
tkytky

OVRCameraRig

VR環境でのカメラの設定と視点制御を担う

1. OVR Camera Rig

VR環境でのカメラの設定と視点制御を担うコンポーネント

プロパティ
  • Script
    • OVRCameraRig

2. OVR Manager

アプリでVRモードを使用するのかMRモードを使用するのか、コントローラーを使うのかハンドトラッキングを使うのか、などさまざまな設定ができるコンポーネント

プロパティ
  • Tracking
    • Tracking Origin Type
      • default: Floor Level

3. OVR Headset Emulator

Unity内でVRヘッドセットの動きをエミュレート(シミュレート)するためのコンポーネント

プロパティ
  • Script
    • OVRHeadsetEmulator
tkytky

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/                         # 右手のトラッキング (基本は左手と同様の構造)
tkytky

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
Hidden comment
tkytky

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 ()
  • 選択中のインタラクターが除外された時