Unity は、そのプラグインフレームワークと、機能とツールのパッケージ一式を通して、XR 開発をサポートしています。Project Settings 内の XR Plug-in Management カテゴリを開き、Unity プロジェクトの XR サポートを有効にし、プロジェクトがサポートする XR プラットフォーム用のプラグインを選択してください。追加の機能パッケージは Unity の Package Manager を使用してインストールしてください。
下の図は、現在の Unity XR プラグインフレームワークの構造と、それがどのようにプラットフォームプロバイダーの実装と連携機能するかを示したものです。
XR subsystems (サブシステム) は、XR 機能の共通インターフェースを定義します。XR プラグインは、このサブシステムインターフェースを実装することによってランタイムでサブシステムにデータを提供します。XR アプリケーションは、Unity エンジンとパッケージ API を通して XR 機能のデータにアクセスすることができます。
XR プロバイダープラグインとは、1 つまたは複数の XR デバイスプラットフォームをサポートする Unity プラグインを指します。例えば、ARCore プラグインはハンドヘルド Android デバイスの Android AR プラットフォームをサポートし、OpenXR プラグインは複数のオペレーティングシステムの複数の XR デバイスをサポートします。
XR プロバイダープラグインは、Unity XR SDK によって定義されるインターフェースを実装します。このインターフェースは subsystems (サブシステム) と呼ばれます。1 つまたは複数のサブシステムを実装するプラグインは プロバイダープラグイン と呼ばれます。プロバイダープラグインは通常、デバイスプラットフォームのネイティブライブラリを使用して、該当デバイス用の Unity インターフェースを実装します。
Unity は、サブシステムインターフェースを使用して様々なプラットフォームのプロバイダーと通信し、アプリケーションの XR 機能を提供します。このインターフェースのおかげで、アプリケーション内の同じ機能コードを、その機能のプロバイダーを持つすべての XR デバイスで再使用することができます。
XR サブシステムは、Unity アプリケーション内で XR 機能を使用できるようにするものです。Unity XR SDK は、各種サブシステムに 1 つの共通のインターフェースを定義するので、同じ機能を実装するすべてのプロバイダープラグインはアプリケーション内で基本的に同様に機能します。多くの場合は、アクティブなプロバイダーを変更してアプリケーションを再構築することで、別の XR プラットフォーム上で実行させることができます (大部分において類似したプラットフォームの場合に限る)。
Unity エンジンは、基本的な XR サブシステムのセットを定義します。Unity パッケージは追加のサブシステムを提供できます。例えば AR Subsystems パッケージには、AR 固有のサブシステムインターフェースの多くが含まれています。
Unity エンジン内で定義されるサブシステムには、以下が含まれます。
サブシステム | 説明 |
---|---|
Display | ステレオ XR ディスプレイ |
Input | 空間トラッキングとコントローラー入力 |
Meshing | 環境スキャンから 3D メッシュを生成します。 |
ノート: 通常は、Unity アプリケーションはサブシステムと直接インタラクトしません。その代わりに、アプリケーションは、XR プラグインまたはパッケージを通して、サブシステムの提供する機能を使用できるようになっています。例えば、AR Foundation パッケージ内の ARMeshManager コンポーネントを使用すると、Meshing サブシステムによって作成されたメッシュをシーンに追加できます。