Table of Contents

Apple Vision Pro で EasyAR 機能を使用する方法

このガイドでは、Apple Vision Pro アプリに EasyAR のコア機能(Mega クラウドローカライゼーションを含む)を有効化するための Unity と Xcode のプロジェクト設定手順を説明します。

開始前に

  • ヘッドセットサンプルの使用方法を学習する
  • 開発環境が以下の要件を満たしていることを確認する:
    • visionOS 2.0 以上
    • 対応する visionOS バージョンの Xcode 16.0 以上(visionOS simulator インストール済み)
    • 推奨 Unity バージョン:6000.0.23 以上の LTS バージョン

Apple Inc. へのエンタープライズ API ライセンス申請

Apple Vision Pro でカメラ映像とパラメータを取得するには entitlement 付きの エンタープライズ API が必要です。Apple Inc. にこの entitlement を含む license ファイルを申請してください。申請方法は Building spatial experiences for business apps with enterprise APIs for visionOS を参照してください。

重要

Apple から取得した entitlementBundle ID は、EasyAR Sense License Key 作成時に登録したものと完全一致させる必要があります。

visionOS App Mode の選択方法

visionOS で実行されるアプリが ARKit データを取得できるのは Immersive Space のみです。Unity エディタからビルドしたアプリを Immersive Space で動作させる場合、レンダリング方式と API の違いに基づき RealityKit with PolySpatial または Metal Rendering with Compositor Services モードのいずれかを選択する必要があります。

Immersive Space の定義については、Apple の公式ドキュメントを参照してください。

Unity の App Mode の詳細については、Unity PolySpatial ドキュメントの visionOS Platform Overview を参照してください。

ヒント

App Mode 選択の推奨

  • 推奨:RealityKit with PolySpatial

    visionOS 初心者はこのモードを優先選択してください。visionOS のシステムレンダリング機能と深く統合でき、安定性が高くレンダリング品質が優れています。 カスタムコードシェーダー(HLSL/ShaderLab)は非対応で、Shader Graph 必須です。また PolySpatial 互換性チェックを通過した機能のみサポートされます(MaterialX に変換されます)。

    Unity 標準の Standard (Built-in)Lit (URP) シェーダーは公式で事前対応済みです。

  • 上級者/特殊要件:Metal Rendering with Compositor Services

    既存の 3D アセット移行が必要な場合や、カスタムシェーダー必須の複雑プロジェクト向けです。 Unity が全レンダリング処理を担当するためシステムの RealityKit パイプラインをバイパスし、レンダリング品質が RealityKit より劣る場合があり、予期せぬ問題が発生する可能性があります。

EasyAR 導入時の推奨:

EasyAR 導入時は必ず RealityKit with PolySpatial モードで基本フローを動作確認してください。これにより変数を分離でき、Metal レイヤーの適応問題と AR 関連問題が複合化して障害原因の特定が困難になる事態を防げます。

Unity プロジェクトでの設定

Unity プロジェクトで以下の設定を行います:

Unity プロジェクトに必要な Package をインポート

Unity 6 (推奨)

  • com.unity.xr.visionos (2.0.4+)
  • com.unity.polyspatial (2.0.4+)
  • com.unity.polyspatial.visionos (2.0.4+)
重要

全 Package のバージョンを厳密に一致させてください。

Unity 6 の優先使用を推奨します(一部の旧 Unity 2023.x は visionOS 非対応)。

Unity 2022.3

  • com.unity.xr.visionos (1.2.3)
  • com.unity.polyspatial (1.2.3)
  • com.unity.polyspatial.visionos (1.2.3)
重要

全 Package バージョンを厳密に一致させてください。

1.3.x は非対応です。必ず 1.2.3 を使用してください。

Build Platform の選択

メニューバーの File > Build Profiles をクリックし、Platform を visionOS に切り替えます。

Build_Platformの切り替え

Input System の設定

新版 Input System Package を使用していることを確認します:

メニューバーの Edit > Project Settings > Player を開き、Active Input HandlingInput System Package(New) に設定します。

設定変更後、Unity がプロジェクト再起動を求める場合があります。Apply をクリックして変更を適用します。

InputSystem変更の適用

XR Plug-in Management の設定

メニューバーの Edit > Project Settings > XR Plug-in Management を開き、visionOS タブの Plug-in Providers で Apple visionOS をチェックします。

visionOSプラグインの選択

Apple visionOS プラグインの設定

メニューバーの Edit > Project Settings > XR Plug-in Management > Apple visionOS を開きます。

前述に基づき適切な App Mode を選択します。

AppModeの選択

注記

Windowed モードは Immersive Space で動作しないため AR 機能は使用できません。

Hybrid モードは開発者が手動で MetalRealityKit を切り替える複雑な方式です。詳細は Unity公式ドキュメント を参照してください(非推奨)。

同画面で以下の変更を行います:

  • World Sensing Usage Description に説明文を入力します。

  • Metal Immersion StyleMixed に設定します。

  • Reality Kit Immersion StyleMixed に設定します。

  • IL2CPP Large Exe Workaround をチェックします。

visionOSプラグイン設定の変更

[RealityKit モードのみ必須] TextMesh Pro Essentials のインポート

メニューバーの Edit > Project Settings > TextMesh Pro > Import TMP Essentials をクリックします。

Import TMP Essentials

注記

現在 RealityKit with PolySpatial モードは TextMesh Pro テキストのみサポートします。インポートしないとテキストがレンダリングされません。

[RealityKit モードのみ必須] PolySpatial 関連設定

メニューバーの Edit > Project Settings > PolySpatial を開き、以下を変更します:

  • Default Volume Camera Window ConfigDefault Unbounded Configuration に設定します。

  • Auto-Create Volume Camera をチェックします。

PolySpatialの設定

Default Volume Camera Window Config を別途指定する場合は、その ModeUnbounded であることを必ず確認します。

ModeがUnboundedであることを確認

シーン内に Volume Camera が存在する場合は削除します。

シーン内のVolume Cameraを削除

警告
  • World Transformidentity でない Volume Camera非対応です。
  • 特別な理由でシーンに単一のカスタム Volume Camera を追加する必要がある場合:
    • World Transformidentity に設定します。
    • Volume Camera Window ConfigurationModeUnbounded に設定します。
    • Unity公式ドキュメントの内容を完全に理解した上で使用してください。

[Mega 使用時] Location 使用説明の追加

注意

EasyAR 設定で Location 権限(Mega 機能使用時)を有効化する場合、権限説明情報を追加しないとビルドが失敗します。

現在 Unity の Project Settings > Player > visionOS タブに Location Usage Description フィールドが表示されないため、以下の手順で設定します:

  1. プラットフォームタブの切り替え:一時的に iOS タブに切り替えます。
  2. 説明文入力Location Usage Description に必要な権限説明を入力します。
  3. visionOS に戻す:タブを visionOS に戻すと、設定が自動的に保持・反映されます。

Location Description

Xcode プロジェクトでの設定

Unity からビルドした Xcode プロジェクトで以下の設定を行います:

カメラデータ entitlement の設定

  • 取得した Enterprise.license ファイルを Xcode プロジェクトフォルダにコピーします。

    Xcodeプロジェクトフォルダへのコピー

  • Xcode プロジェクトフォルダ内の Enterprise.license を Xcode プロジェクトにドラッグします。

    Xcodeプロジェクトへの追加

info.plist の変更によるファイル保存・送信の有効化

アプリ内で EIF を録画し、visionOS のファイルアプリ経由で PC 等に送信する必要がある場合、Info.plist に以下を追加・変更します:

  • LSSupportsOpeningDocumentsInPlace を追加し、値を true に設定します。

  • UIFileSharingEnabled を追加し、値を true に設定します。

Info.plistの変更

ヒント

フィールド追加後、Xcode 画面に表示される Key が手動入力した文字列と異なる場合(例:LSSupportsOpeningDocumentsInPlace 入力で Supports opening documents in place と表示される)は正常です。