iOS をターゲットとする Unity(AR Foundation)アプリで Geospatial API を有効にする

Geospatial API を使用できるようにアプリの設定を構成します。

前提条件

続行する前に、AR の基本コンセプトARCore セッションを構成する方法を理解してください。

Geospatial API の詳細については、Geospatial API の概要をご覧ください。

ARCore を使った開発を初めて行う場合は、スタートガイドで、ソフトウェアとハードウェアの要件、前提条件、使用しているプラットフォームに固有の情報を確認してください。

ARCore Geospatial API を使用するには、プロジェクトが AR FoundationAR Foundation 用の ARCore Extensions をサポートしている必要があります。

ARCore API を有効にする

アプリで Visual Positioning System(VPS)を使用する前に、新規または既存の Google Cloud プロジェクトで ARCore API を有効にする必要があります。このサービスは、地理空間アンカーのホスト、保存、解決を行います。

キーレス認証が推奨されますが、API キー認証もサポートされています。

必要なライブラリをアプリに追加する

ARCore API を呼び出すようにアプリを承認したら、ライブラリを追加してアプリで地理空間機能を有効にする必要があります。

  1. [Edit] > [Project Settings] > [XR Plug-In Management] > [ARCore Extensions] に移動します。[iOS Support Enabled] が選択されていることを確認します。
  2. [オプション機能] で [Geospatial] を選択します。

セッション構成でジオ空間機能を有効にする

アプリで Geospatial 機能を有効にしたら、アプリの AR セッション構成で Geospatial 機能を有効にして、ARCore API と通信できるようにします。

  1. プロジェクトの Assets フォルダに ARCoreExtensionsConfig スクリプト可能オブジェクトが含まれていることを確認します。これを作成するには、[Assets] ペインを右クリックして、[Create] > [XR] > [ARCore Extensions Config] を選択します。
  2. Assets フォルダで ARCoreExtensionsConfig スクリプト可能オブジェクトを選択し、[Geospatial Mode] を [Enabled] に設定します。

  3. ARCoreExtensionsConfig 構成を使用するように、ARCore Extensions ゲーム オブジェクトを設定します。[Hierarchy] ペインで、ARCore 拡張機能を最初にセットアップしたときに作成した [ARCore Extensions] ゲーム オブジェクトを見つけ、[ARCore Extensions Config] フィールドを [Assets] フォルダ内の ARCoreExtensionsConfig スクリプト可能オブジェクトに接続します。

デバイスデータの使用を許可するようユーザーに求める

ARCore Geospatial API を使用するアプリは、デバイスのデータの使用を承認して許可するプロンプトをユーザーに表示する必要があります。詳しくは、ユーザーのプライバシー要件をご覧ください。

デバイスの互換性を確認する

ARCore をサポートするすべてのデバイスが Geospatial API をサポートしているわけではありません。お客様のデバイスの互換性を確認するには、AREarthManager.IsGeospatialModeSupported() を呼び出します。FeatureSupported.Unsupported が返された場合は、セッションの構成を試行しないでください。

実行時に位置情報の利用許可をユーザーに求める

ランタイム権限リクエストをトリガーするスクリプトで Unity のロケーション サービスを有効にするには、次の操作を行います。

  1. Project Settings > iOS > Other Settings > Location Usage Description に、権限をリクエストしているアプリの名前を入力します。

  2. 次のように、Unity の位置情報サービスを有効にして、ランタイム権限リクエストをトリガーします。

    public void OnEnable()
    {
        Input.location.Start();
    }
    
    public void OnDisable()
    {
        Input.location.Stop();
    }
    

    詳しくは、Unity の LocationService のドキュメントをご覧ください。

デバイスの現在地でジオスペースの提供状況を確認する

Geospatial API は VPS と GPS を組み合わせてジオ空間ポーズを決定するため、デバイスが位置情報を特定できる限り、この API を使用できます。屋内や密集した都市環境など、GPS 精度の低い地域では、API は VPS カバレッジに基づいて高精度のポーズを生成します。一般的な条件下で、VPS の位置精度は約 5 メートル、回転精度は 5 度であると期待できます。AREarthManager.CheckVpsAvailability() を使用して、特定の場所が VPS の対象かどうかを判断します。

Geospatial API は、VPS がカバーしていない地域でも使用できます。屋外で上部に遮蔽物がほとんどない環境では、GPS だけでも高い精度でポーズを生成できる場合があります。

次のステップ