Unityで始めるVision Proアプリ開発:「Metal」vs「RealityKit」
「Metal」vs「RealityKit」
Vision Proアプリを開発するためには、一般的には『Xcode』を使う手法がありますが、それ以外では、『Unity』を使うことも可能です。
この記事では、Unityを使ってVision Pro向けアプリケーションを開発する際に存在する、二つの手法 「Metal-based Apps on visionOS」 と 「RealityKit apps on visionOS」 について、それぞれの特徴やシーン構築の流れを解説していきます。
また、それぞれの手法をこの記事では 「Metalモード」、「RealityKitモード」 と呼び、解説していきます。
※ Unity上では、もう一つの開発手法として「Windowed Apps in visionOS」がありますが、visionOS特有のXR機能が使えないことから、この記事では解説の対象外としています。
Unityでの2つのレンダリング方式
Vision Pro向けのUnity開発では、以下のように大きく2種類の描画方式が提供されています。
Metal
- Appleが提供するローレベルグラフィックスAPIである「Metal」を直接使って描画するアプローチ
- Unityがもともと持っている豊富な描画パイプライン(シェーダー、ポストプロセス、ライトの設定など)をフルに活用できる
RealityKit(PolySpatial)
- Appleの高レベル3D/ARフレームワークである「RealityKit」を活用するアプローチ
- Unityのシーン情報をRealityKitへ受け渡し、Vision Pro特有の空間コンピューティング機能を活かしたアプリを作成しやすいのが特長
Metalモード
-
Unityが自前で描画を完結
Unityの内蔵レンダーパイプラインを最大限活用し、シェーダーやポストプロセスなどを柔軟に設定可能 -
標準のXRツールキットが使いやすい
XR Originやカメラ、Tracked Pose Driverなど、他のVRプラットフォーム向けUnity開発の手法がそのまま使用可能
RealityKitモード
-
AppleのAR描画エンジンに委ねる
Unityのシーンやオブジェクト情報をRealityKitに送って描画するため、RealityKitが持つ空間コンピューティングやAR/MR機能をネイティブに利用可能 -
Unity固有機能への制約
カスタムシェーダーはRealityKit側で直接は動かず、Shader Graphを通す必要があるなど、一部機能に制限がある
サンプルシーン作成
ここからは、実際にUnityでVision Pro向けのプロジェクトを立ち上げ、サンプルシーンを作成する流れを簡単に見ていきましょう。
※ ここでは「Metalモード」「RealityKitモード」のそれぞれで、特徴的な手順のみ取り上げて解説しています。また、細かいバージョンや設定は今後変更される可能性もあるため、常にUnityの公式ドキュメントを確認してください。
Metalモードでのプロジェクト作成
1. プロジェクト設定
-
Apple visionOS XR Pluginの導入
- 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
- もしくはこのフローは省略し、直接、下記2のフローを実行することで、「Apple visionOS XR Plugin」パッケージのインストールも可能
- 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
-
XR Plug-in Managementの設定
- 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
- 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
-
App Modeを選択
- 「XR Plug-in Management > Apple visionOS > App Mode」を「Metal Rendering with Compositor Services」に設定する
- 「XR Plug-in Management > Apple visionOS > App Mode」を「Metal Rendering with Compositor Services」に設定する
2. シーン作成
-
AR Session、XR Originを追加
- メニューから「GameObject > XR > AR Session」を追加する
- メニューから「GameObject > XR > XR Origin (Mobile AR)」を追加する
-
背景設定
- VR空間に没入させたい場合は、Main CameraのBackground TypeをSkyBoxに設定する
- MRのような、現実空間を透過表示にしたい場合は、Background TypeをSolid Colorとし、Alphaを0に設定、カラーは黒などに設定する(例えば
[0, 0, 0, 0]
など)
- VR空間に没入させたい場合は、Main CameraのBackground TypeをSkyBoxに設定する
-
3Dオブジェクトの配置
- 適当な3Dオブジェクトをシーンの中心付近に置く
3. ビルドして描画確認
- 配置した3Dオブジェクトが描画されるかを確認する
RealityKitモード(PolySpatial)でのプロジェクト作成
1. プロジェクト設定
-
Apple visionOS XR Pluginの導入
- 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
- もしくはこのフローは省略し、直接、下記2のフローを実行することで、「Apple visionOS XR Plugin」パッケージのインストールも可能
- 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
-
XR Plug-in Managementの設定
- 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
- 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
-
PolySpatialの導入
- 「Package Manager」から「PolySpatial」パッケージをインストールする
- もしくはこのフローは省略し、直接、下記4のフローを実行することで、「PolySpatial」パッケージのインストールも可能
- 「Package Manager」から「PolySpatial」パッケージをインストールする
-
App Modeを選択
- 「XR Plug-in Management > Apple visionOS > App Mode」を「RealityKit with PolySpatial」に選択する
- 「XR Plug-in Management > Apple visionOS > App Mode」を「RealityKit with PolySpatial」に選択する
2. シーン作成
-
AR Sessionを追加
- メニューから「GameObject > XR > AR Session」を追加する
- メニューから「GameObject > XR > AR Session」を追加する
-
Volume Cameraの追加
- メニューから「GameObject > XR > Setup > Volume Camera」を追加する
- メニューから「GameObject > XR > Setup > Volume Camera」を追加する
-
VolumeCamera Window Configurationを追加
- メニューから「Assets > Create > PolySpatial > Volume Camera Window Configuration」を追加する
- Bounded volume(一定範囲だけを表示)か、Unbounded volume(空間全体に広がる表現)を選択し、Volume Cameraにアタッチする
- メニューから「Assets > Create > PolySpatial > Volume Camera Window Configuration」を追加する
-
3Dオブジェクトの配置
- Volume Cameraの領域の範囲内に適当な3Dオブジェクトを配置する
3. ビルドして描画確認
- 配置した3Dオブジェクトが描画されるかを確認する
それぞれのモードが向いているケース
MetalモードとRealityKitモードをどのように使い分ければ良いか、事例ベースでまとめます。
Metalモードに向いているケース
-
完全なVR空間を作りたい場合
VRゲーム、シミュレーション、没入型の映画的体験など、仮想空間でリッチなグラフィックスを表現したいとき -
高度なシェーダーやポストエフェクトを使いたい場合
カスタムシェーダーや高解像度のエフェクトなど、Unityが標準提供している描画機能をフルに使いたい場面 -
他VRプラットフォームとの共通化を図りたい場合
既にPC VRや他のスタンドアロンVR向けに開発した作品をVision Proに移植する場合など、同じUnity XRワークフローで進めたいとき
RealityKitモードに向いているケース
-
現実空間と仮想オブジェクトを重ね合わせたい場合
Vision Proの特徴である空間コンピューティング(床や壁のトラッキング)をフルに活用するアプリ -
シンプルで実用性重視のMRアプリ
インフォメーションやガイド表示など、現実世界を見ながら情報を追加したいような機能 -
他アプリと併用できる常駐型コンテンツ
「空間内にウィジェットを設置する」ようなイメージのアプリ。複雑なカスタムシェーダーよりも、スムーズな空間配置やマルチタスク性を重視したいとき
最後に
Unityを使ってVision Pro向けアプリを開発する場合、 「Metalモード」 と 「RealityKitモード」 のどちらを使うかは、アプリの目的や実現したい体験によって大きく変わります。
Metalモード
- 従来のVRと同様の手法で開発でき、リッチな描画表現や高度なシェーダーが使いやすい
RealityKitモード
- 空間コンピューティング機能に最適化されたRealityKitにより、MR要素を活かしたアプリを作りやすい
どちらも一長一短があるため、開発初期に「アプリの方向性」「求めるビジュアル表現」「インタラクションの深さ」などを吟味して選びましょう。
Vision Proは今後、さらに新しい機能やSDKのアップデートが行われる可能性が高いため、常に公式ドキュメントやリリースノートを追いかけつつ、実際に手を動かして最適なワークフローを探ってみてください。
Discussion