Swift ではなく Unity で開発するチームにとって、Apple Vision Pro のミックスドリアリティは Unity PolySpatial と visionOS XR プラグインを通る道になります。RealityKit を一行も書かずに、実機のテーブルに仮想物体を——パススルーごと——置けます。注意点は、初日の決断が「どのアプリモードを狙うか」だということ。その一択でパッケージ、ライセンス階層、レンダリング経路が固定されます。本記事はその決断を肩代わりするスターターです。

肝心な考え方:Unity でシミュレートし、RealityKit で描画する

ミックスドリアリティでは、Unity はフレームを描画しません。シーンをシミュレートし、コマンドを visionOS のシステムレンダラー RealityKit に送り、RealityKit がパススルーの上に描きます。この 1 点が、以下のほぼすべての制約の根です——カスタムシェーダーやスクリーンスペース効果がそのまま移らない理由でもあります。

アプリモードを選ぶ

  1. ウィンドウ — 共有スペースで他アプリと並ぶ 2D/3D。PolySpatial 不要、Pro ライセンス不要。
  2. 境界あり(Bounded)ボリューム(MR) — 他アプリと共存する固定の箱の中に RealityKit 描画の 3D。
  3. 境界なし(Unbounded)ボリューム(MR)パススルーと完全な ARKit アクセス(平面、メッシュ、手、画像)を伴う RealityKit。これがミックスドリアリティの狙い目です。
  4. 完全没入(VR) — Unity が Metal コンポジターサーフェスで直接描画。既定ではパススルーなし。

ハイブリッドアプリは実行時に RealityKit ⇄ Metal を切り替えられますが、Metal カメラと Unbounded の RealityKit カメラを同時にアクティブにはできません。(Metal モードでパススルーを得るには ImmersionStyle = Mixed、カメラの Clear Flags = Solid Color、その色のアルファ = 0 にします。)

MR のハッカソンビルドなら、答えはほぼ常に Unbounded ボリュームです。

パッケージと入力

MR には 3 つのパッケージが要ります——com.unity.xr.visionoscom.unity.polyspatial.visionoscom.unity.polyspatial.xr。(VR のみなら最初の 1 つだけ。)iOS の com.unity.xr.arkit パッケージは使いません。ARKit 機能は visionOS XR プラグインと AR Foundation 経由で来ます——平面検出、シーン再構成メッシュ、画像トラッキング、(XR Hands による)ハンドトラッキング。

コントローラーはありません。インタラクションは視線+ピンチ(「インダイレクトピンチ」)と、腕の届く範囲での直接のつつき・ピンチで、新 Input System の SpatialPointerDevice から取得します。3D タッチを受けるにはオブジェクトに PolySpatial Input レイヤーのコライダーが必要です。XR Interaction Toolkit は XRSpatialPointerInteractor 経由で動きます。

注意点

  • MR・VR アプリは Unity Pro / Enterprise / Industry が必要。 これは実在し、いまも有効です。Unity Personal/Free のチームはパススルー型 MR アプリを出荷できません。 唯一の無料経路は Student または Educator プラン——2025 年 1 月以降、Student ライセンスは visionOS 向けに Pro 相当のエディタアクセスを自動で得ます。イベント前に全員のライセンスを確認してください。これが実務上いちばんのつまずきです。
  • 任意のカスタムシェーダーは持ち込めません。 MR モードで ShaderLab/HLSL は非対応。Shader Graph で書き、これが MaterialX に変換されます——しかも MaterialX 対応のノードは一部のみ(非対応ノードはエディタで # 印が付きます)。グラブパス、カスタムレンダーパス、ポストプロセスに依存する効果は概して RealityKit に移りません。「自分の Unity シェーダーはそのまま動く」は最もよくある誤解です。
  • シミュレーターは面白い MR 部分を動かせません。 平面検出、シーンメッシュ、画像トラッキング、本物の手/ワールドデータは実機が要ります。チームあたり最低 1 台の Vision Pro、または共有スケジュールを見込んでください。
  • MR と完全没入は本当のトレードオフ。 RealityKit の MR はパススルーと ARKit 機能を与える代わりに、Unity レンダリングの変換された一部。Metal/VR は Unity の描画力をフルに使える代わりに、ネイティブのパススルーの手軽さを失います。ハイブリッドは橋渡ししますが、同時にはできません。
  • UV/マテリアルの細部に注意。 RealityKit の MaterialX は最初の 2 つの UV チャンネルしか使わず、visionOS のマテリアルはグローバルシェーダープロパティをネイティブに持ちません(PolySpatial がインスタンスごとにパッチします——性能上の考慮点)。
  • ハードウェアコスト/バージョンの流動性。 Apple Vision Pro は約 3,499 米ドルで、入手も容易ではありません。PolySpatial の更新は速く(約 2 年で 0.x → 3.x)、パッケージと Unity LTS のバージョンを固定し(現行は Unity 6.x LTS。Apple Silicon Mac、Xcode 16 以上、visionOS 2.0 SDK 以上、Linear カラースペース、URP 推奨)、古いチュートリアルの正確なメニュー操作を鵜呑みにしないでください。

関連リンク

ご質問はお問い合わせページからどうぞ。

// ニュース一覧へ戻る