🥽

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. プロジェクト設定

  1. Apple visionOS XR Pluginの導入

    • 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
      • もしくはこのフローは省略し、直接、下記2のフローを実行することで、「Apple visionOS XR Plugin」パッケージのインストールも可能
  2. XR Plug-in Managementの設定

    • 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
  3. App Modeを選択

    • 「XR Plug-in Management > Apple visionOS > App Mode」を「Metal Rendering with Compositor Services」に設定する

2. シーン作成

  1. AR Session、XR Originを追加

    • メニューから「GameObject > XR > AR Session」を追加する
    • メニューから「GameObject > XR > XR Origin (Mobile AR)」を追加する
  2. 背景設定

    • VR空間に没入させたい場合は、Main CameraのBackground TypeをSkyBoxに設定する
    • MRのような、現実空間を透過表示にしたい場合は、Background TypeをSolid Colorとし、Alphaを0に設定、カラーは黒などに設定する(例えば [0, 0, 0, 0] など)
  3. 3Dオブジェクトの配置

    • 適当な3Dオブジェクトをシーンの中心付近に置く

3. ビルドして描画確認

  • 配置した3Dオブジェクトが描画されるかを確認する

RealityKitモード(PolySpatial)でのプロジェクト作成

1. プロジェクト設定

  1. Apple visionOS XR Pluginの導入

    • 「Package Manager」から「Apple visionOS XR Plugin」を、インストールする
      • もしくはこのフローは省略し、直接、下記2のフローを実行することで、「Apple visionOS XR Plugin」パッケージのインストールも可能
  2. XR Plug-in Managementの設定

    • 「Project Settings > XR Plug-in Management」で「Apple visionOS」を選択する
  3. PolySpatialの導入

    • 「Package Manager」から「PolySpatial」パッケージをインストールする
      • もしくはこのフローは省略し、直接、下記4のフローを実行することで、「PolySpatial」パッケージのインストールも可能
  4. App Modeを選択

    • 「XR Plug-in Management > Apple visionOS > App Mode」を「RealityKit with PolySpatial」に選択する

2. シーン作成

  1. AR Sessionを追加

    • メニューから「GameObject > XR > AR Session」を追加する
  2. Volume Cameraの追加

    • メニューから「GameObject > XR > Setup > Volume Camera」を追加する
  3. VolumeCamera Window Configurationを追加

    • メニューから「Assets > Create > PolySpatial > Volume Camera Window Configuration」を追加する
    • Bounded volume(一定範囲だけを表示)か、Unbounded volume(空間全体に広がる表現)を選択し、Volume Cameraにアタッチする

  4. 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