🥽
2021年1月時点におけるUnityのVR開発環境を取り巻く状況
TL;DR
- OpenXR や Unity XR Tech Stack といった統一的な XR 開発環境を創出する試みが行われている
- とはいえまだまだ移行の最中ということもあり、 SteamVR のようにゴチャついているところもある
ベンダーの方針
Unity
- XR Plug-in Framework の導入をデベロッパーとハードウェアベンダーに要請している
- build-in XR ( ProjectSetting > Player > XR で有効にできる Unity の XR SDK マネジメントフレームワーク)は廃止される
- XR Plug-in Framework によって XR デバイスのレンダリングや入力を抽象化し、プラットフォームによらない統一的な API を提供する
- XR Plug-in Framework を前提として XR Interaction Toolkit が用意される
- 3D オブジェクトや UI へのインタラクションフレームワークを提供し、 XR アプリケーションの迅速な実装を可能にする
- XR Plug-in Framework や XR Interaction Toolkit といった一連のパッケージを Unity XR Tech Stack と呼んでブランディングしている
- OpenXR への対応を進めており、OpenXR の XR Plugin が Preview でリリースされた
Valve
- OpenVR の機能追加を止め、 OpenXR 対応を進めている
- OpenVR の XR Plug-in Framework 対応が難航しており、現在は HMD へのレンダリングに対応したが、コントローラー入力には対応していない
- 入力のハンドリングは現状 SteamVR Plugin のフレームワークを利用する必要がある
Oculus
- XR Plug-in Framework に対応済みで、 built-in XR 向けの機能追加は止まっている
- Quest については OpenXR に Experiment で対応しており、 OpenXR XR plugin で Quest に対応する事ができるが、Foveated Rendering など一部の機能は対応していない
デベロッパーの選択肢
- XR フレームワークは built-in XR or XR Plugin ?
- Unity 2020.1+ : XR Plugin のみ
- Unity 2019.3/4 : XR Plugin か built-in XR を選べる
- Unity 2020.1+ に上げる予定なら XR Plugin にしておきたい
- Unity 2019.2- : built-in XR のみ
- XR Plugin の XR Rig を使うか
- SteamVR 以外では検討に値する
- OpenXR XR Plugin を使うか
- Unity 2020.2+ かつ Preview なので人柱向け
- 将来的にはこのプラグインを使うのがスタンダードになりそう
- XR Interaction Toolkit を使うか
- SteamVR での利用にはハックが必要であり、また、 Preview なので人柱向け
用語集
SDK
-
OpenVR
- Valve が開発する VR デバイス SDK/API
-
OpenXR
- Khronos Group が開発する VR/AR デバイス SDK/API
- Valve がコミッターをしている
-
SteamVR
- Valve が提供するOpenVR, Chaperone, Compositor, Lighthouse Tracking などの VR 向けツール/サービススイート
- OpenVR を実装している
- 2020/6/26 に OpenXR を実装することが表明され、今後の機能追加は OpenXR を通じて行われることに
- 2021/1/14 に Beta リリースされた SteamVR 1.16.1 にて、Windows 上での Vulkan、OpenGL、 D3D11、D3D12 における OpenXR 1.0 適合性テストに合格した
Unity関連
-
built in XR
- レガシーな VR/AR フレームワーク
- ProjectSettings >Player > XR Settings > Virtual Reality Supported にチェックを入れることで有効にできる
- Unity 2019.3+ で非推奨、 Unity 2020.1+ で廃止
-
XR Plug-in Framework
- built in XR を置き換える VR/AR フレームワーク
- Unity 2019.3+ で利用可能
-
XR Plugin Management
- XR Plugin の管理、初期化、読込、設定、ビルドを可能にする Package
- UPM で配布
- XR Plugin
- XR デバイス SDK/API と Unity を接続する Package
-
XR Interaction Toolkit
- Unity純正のVR/AR用 Interaction Framework およびそれを提供する Package
- プラットフォーム間の差異を吸収してXRアプリケーションに必要な Locomotion、Grab などの機能を提供する
- UPM で配布
- まだ Preview
-
Unity XR Input
- XRデバイスの入力マッピング層
- 様々なデバイスのコントローラーの差異を吸収
- Input System および Input Manager との互換性がある
-
Input System (New Input System)
- Unity の入力マッピング層
- Unity 2019.4+ で利用可能
- UPM で配布
-
Input Manager (Legacy Input System)
- Unity の入力マッピング層
- Edit > Project Settings > Input Manager から設定する
- デフォルトで Editor に含まれる
-
SteamVR Plugin
- Unity と SteamVR のスムーズな接続を提供する UnityPackage
- AssetStore / GitHub で配布
- コントローラーの3Dモデルのロード、入力のハンドリング、手の見た目の推定をサポート
- 独自の Interaction System をサポート
- v2.5 では built in XR に依存しており、インストールすると自動的に built in XR が有効化され、 OpenVR Desktop がインストールされる
- v2.6+ から XR Plugin に対応し、Unity 2020.1+ にインストールすると自動的に OpenVR Unity XR Plugin がインストールされる
- v2.6+ を Unity 2019.3/4 にインストールした場合は、 built in VR と XR Plugin どちらを利用するか選択できる
- Unity 2019.4 において、v2.5 インストール下では built in XR をオフにできないが、 v2.6+ インストール下では built in XR をオフにできる
- オフの状態で Unity を再起動すると、built in VR と XR Plugin どちらを利用するか選択するダイアログが出現する
-
OpenVR Unity XR Plugin
- OpenVR デバイスへのレンダリングを提供する XR Plugin Package
- GitHub で配布
- デバイスの入力を使えるようにするには SteamVR Plugin のインストールが必要
- SteamVR Plugin を Unity 2020.1+ にインストールすると、この Package が自動的にインストールされる
- 2019.3/4 の場合は任意にインストールできる
- built-in XR の OpenVR でサポートされた Instancing しない Single Pass Rendering はサポートされないので注意
-
Oculus XR Plugin
- Oculus デバイスの表示と入力をサポートする XR Plugin Package
- UPM で配布
-
OpenXR Plugin
- OpenXR デバイスをサポートする XR Plugin Package
- Unity が提供し、UPMで配布
- Unity 2020.2+ で利用可能
- 詳細はフォーラムの記事を参照
-
Oculus Desktop / Oculus Android
- built in XR で Oculus デバイスをサポートする Package
- UPMで配布
- Unity 2020.1+ では廃止される
-
OpenVR Desktop
- built in XR で OpenVR デバイスをサポートする Package
- UPMで配布
- Unity 2020.1+ では廃止される
-
Oculus Integration for Unity
- Unity が提供する Oculus デバイスサポート (built in VR および Oculus XR Plugin) に対して、追加のスクリプトやサンプルを提供する UnityPackage
- AssetStore / oculus.com で配布
- v23.1 から OpenXR のサポートが追加された
- XR Plugin の AndroidOpenXR を使って Quest 対応させることができる
- ただ、FFRやハンドトラッキングなど、幾つかの機能は使えない
Discussion