Table of Contents

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

このガイドでは、Unity と Xcode のプロジェクト設定を完了し、Apple Vision Pro アプリで Mega クラウドローカライズを含む EasyAR のすべての主要機能を利用できるようにする方法を説明します。

始める前に

  • ヘッドセットサンプル の使い方を学習してください
  • 開発環境が次の要件を満たしていることを確認してください:
    • visionOS 2.0 以上
    • 対応する visionOS バージョンの Xcode 16.0 以上、および visionOS simulator のインストール
    • 推奨 Unity バージョンは 6000.0.23 以上の LTS バージョン

Apple Inc. にエンタープライズ API 許可を申請する

Apple Vision Pro 上でカメラ映像およびパラメーターを取得するには、entitlement が必要な エンタープライズ API を使用します。そのため、該当 entitlement を含む license ファイルを Apple Inc. に申請する必要があります。この license の申請および使用方法については、Building spatial experiences for business apps with enterprise APIs for visionOS を参照してください。

重要

Apple に申請して取得した entitlement 内の Bundle ID は、EasyAR Sense License Key 作成時に入力したものと完全に一致している必要があります。

visionOS App Mode の選び方

visionOS 上で動作する App は、Immersive Space の場合にのみ ARKit データを取得できます。一方、Unity エディターからビルドされる App は、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 Handling 欄を Input 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 Transform の値が identity ではない Volume Cameraサポートしていません
  • 特別な理由により、シーンに唯一のカスタム Volume Camera を追加する必要がある場合は、必ず次の条件を満たしてください。
    • その World Transformidentity に設定します。
    • その Volume Camera Window ConfigurationModeUnbounded に設定します。
    • Unity 公式ドキュメントにおける意味と用途を完全に理解したうえで使用します。

[Mega 使用時] Location Usage Description を追加する

注意

EasyAR 設定で Location 権限を有効にしている場合(Mega 機能を使用する場合)、権限説明情報を追加する必要があります。そうしないと Build は失敗します。

現在、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 プロジェクトファイルのディレクトリにコピーします。

    Copy to Xcode project folder

  • Xcode プロジェクトファイルのディレクトリにある Enterprise.license を Xcode プロジェクトにドラッグします。

    Move into Xcode project

Info.plist を変更してアプリがファイルを保存および転送できるようにする

アプリ内で EIF を録画し、visionOS のファイル App を通じてコンピューターまたは他のデバイスへ転送する必要がある場合、Info.plist に次のフィールドを追加して変更する必要があります。

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

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

Modify Info.plist

ヒント

フィールドを追加した後、Xcode 画面上に表示される Key は手動で追加した文字列と異なります(たとえば LSSupportsOpeningDocumentsInPlace と入力しても Supports opening documents in place と表示されます)。これは正常です。