OpenXRとUnity XR Interaction ToolkitでVRアプリ制作

OpenXRとUnity XR Interaction Toolkitを使うと、異なるプラットフォーム、メーカー向けのVRアプリを 一つのUnityプロジェクトでプログラム共用して一括製作できる。
動作確認済(2024/1/21現在)
VIVE Pro, Pro EyePC-VRSteamVR
VIVE Focus 3PC-VRVIVE Business Streaming+SteamVR VBSケーブル
VIVE Focus 3AndroidVR本体スタンドアロン
Meta Quest2,ProPC-VROculusアプリ OculusLinkケーブル
Meta Quest2,ProAndroidVR本体スタンドアロン Oculus Lab

Unity 2022 Virtual Reality (VR) Template

VR用のセットアップ済みプロジェクトとしてプレファブ及びサンプルシーンが含まれ、ビルドするだけで気軽に使える。



新規プロジェクトでXRアプリ制作する手順の整理
使用するバージョン(2024/1/21現在)
UnityエディタUnity2022LTS (2022.3.18f1)
+Androidビルドサポート

エディタインストール時にAndroidビルドサポートモジュールを全て追加
プロジェクトテンプレートVR(コア) XR Interaction Toolkit ,Open XR Pluginなどがインストール済みなので、 3D URP(コア)にパッケージを加えるより簡単。

新規プロジェクトでシーンSampleSceneが開いたら、パッケージマネージャーで XR Interaction Toolkit、Open XR Pluginなどのバージョンをチェックして更新があれば行う。
XR Interaction ToolkitのSamplesも更新、追加インストールする。


XR Interaction Toolkit >Samples>Hands Interaction Demoで必要になるXRHandsをインストールする。


Open XR フィーチャーにハンド機能を追加する。




SampleSceneの修正

VRテンプレートのSampleSceneのComplete XR Origin Set Up Variantプレファブを消し、 Hands Interaction Demoのプレファブを挿入する。
Assets/Samples/XR Interaction Toolkit/2.5.2/Hands Interaction Demo/Prefabs/XR Interaction Hands Setup


XR Device Simulatorプレファブを挿入し、EditorOnlyに設定を変更する。
Assets/Samples/XR Interaction Toolkit/2.5.2/XR Device Simulator


アクションマップの修正 VIVE Controllerのみ

ほとんどのVR機器は方向キーがアナログスティックなので、既定のアクションマップで問題なく使える
VIVE Controllerのトラックパッドは、触れるだけで反応し操作しづらいので修正する。
ヒエラルキーのComplete XR Origin Set Up>Input Action ManagerでActionAssetsとして使用している XRI Default Input Actionsをダブルクリックして編集画面にする。
右手の左右後の動きを、Trackpadを押し込んだ時だけ反応するようXRI Default Input Actionsを変更する。
まず、Primary2DAxisをDuplicateで2つにして、JoystickとthumstickにしてFocus3、Questのコントローラーを認識させる。


次に+でModifierを足してVIVEコントローラで、クリックされた時だけ反応するように設定する。

Modifier:XR Controller(RightHand)>TrackpadClicked
Binding:XR Controller(RightHand)>Primary2DAxis

追加したスナップターンに、セクター(東西南北)の設定が必要。
元々のPrimary2DAxisのセクター設定と同じように、東西と南を追加する。



Device Simulatorでの実行

UnityエディタのシーンでPlayボタンを押すと、デバイスシミュレーターで実行される。




PC-VRでの実行

デバイスシミュレーターを無効にしてからPlayボタンを押すと、 PC-VRが再生できるセットアップができていればPC-VRとして起動する。
PC-VRセットアップ
DevicesTrackingアプリ接続
VIVE Pro, Pro EyeライトルームSteamVR
VIVE Hub
VIVE Focus 3インサイドアウトVIVE Business Streaming+SteamVRVBSケーブル
Meta Quest2,ProインサイドアウトOculusアプリOculusLinkケーブル
ヘッドセットを着けて動作を確認する。
終了時は、Playボタンをもう一度押して再生を停止する。

Androidにビルドして実行

デバイスを開発者モード(USBデバックをON)にする。
USBケーブルでPCとデバイスをつなぐ。
Build Settingsを開く。
PlatformでAndroidを選択し、SitchPlatformで切り替える。
デバイスとUSB接続ができていれば、RunDeviceのリストに出てくるので選択する。

PlayerSettingsを押す。
Android VRは標準で画質が低く設定されている。必要に応じQualityを開いてレベルを変更する。


Androidの場合、OpenXR設定で複数のコントローラのプロファイルを入れておくと干渉しやすいので ビルドのタイミングでデバイス毎に不要なものを削除して変更した方がよい。

PlayerSettingsを閉じる。
Build Settingsで、Scenes In Buildリストに編集中のシーンが選択されていることを確認する。
Build SettingsでRun DeviceをRefreshし、USB接続中の機器を選ぶ。

Build And Runを押し、アプリファイル名を指定してビルドが実行されるのを待つ。
ビルドされたアプリがUSBで転送され、デバイスでアプリが起動する。
ヘッドセットを装着しアプリの動作を確認する。(USBを抜いてもOK)

XR Interactor Visualの設定変更

XR Interactor Line Visualコンポーネントで、ポインターの線幅を狭めて、透明度を増やすと レーザーポインター風になる。


テレポーテーション位置を指すには、直線より放物線の方が扱いやすいが、上方の場所が指しにくくなる。


XR Interactorの設定

ハンドコントローラーで物体を掴めるようにするには、掴まれる方のオブジェクトにXR Grab Interactableコンポーネントを追加する。
XR Grab Interactableコンポーネントを追加されると、Interactorで掴めるようになる。
javascript:jf_FileConfirm('edit')