Unity 用 Cloud Anchors デベロッパー ガイド(AR Foundation)

独自のアプリで Cloud Anchors を使用する方法を学習する。

前提条件

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

Cloud Anchors を初めて使用する場合は、アンカーCloud Anchors の仕組みを理解しておいてください。

ARCore API を有効にする

アプリで Cloud Anchors を使用する前に、まずアプリで ARCore API を有効にする必要があります。

セッション構成で Cloud Anchor 機能を有効にする

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

Cloud Anchor をホストする

ホスティングは ARAnchorManager.HostCloudAnchorAsync() の呼び出しで開始されます。ARCore は、ビジュアル データ、デバイスのポーズ、アンカーのポーズを ARCore API にアップロードします。API はこの情報を処理して 3D 特徴マップを構築し、最終的にデバイスにアンカーの一意の Cloud Anchor ID を返します。

ARCore Cloud Anchor Management API を使用して、ホストされているアンカーの存続期間を延長することもできます。

アプリは、次の手順に沿って Cloud Anchor のホスティングを完了する必要があります。

  1. ARAnchorManager.HostCloudAnchorAsync() を呼び出します。
  2. コルーチンを開始して、Promise が結果を返すまで待ちます。詳細については、Unity のコルーチンをご覧ください。
  3. 結果の状態を確認して、オペレーションが成功したかどうかを判断します。失敗した場合は、エラーコードを解釈します。
  4. 結果の Cloud Anchor ID を他のクライアントと共有し、その ID を使用して ARAnchorManagerExtensions.ResolveCloudAnchorAsync() で Cloud Anchor を解決します。

対象物ポイントのマッピングの品質を確認する

ARCoreExtensions.FeatureMapQuality は、特定のカメラ ポーズから前の数秒間に ARCore が検出した特徴点の品質を示します。質の高い特徴を使用してホストされた Cloud Anchor は、一般的に、より正確に解決されます。ARAnchorManagerExtensions.EstimateFeatureMapQualityForHosting() を使用して、特定のカメラ姿勢の特徴マップの品質の推定値を取得します。

説明
Insufficient 前の数秒間のポーズから特定された特徴点の品質が低い。この状態は、ARCore が Cloud Anchor の解決に苦労する可能性が高いことを示します。ホストする Cloud Anchor の希望する位置をさまざまな角度から確認できるように、デバイスを動かすようユーザーに伝えます。
Sufficient 前数秒間のポーズから検出された特徴点の品質は、ARCore が Cloud Anchor を正常に解決するのに十分である可能性が高いですが、解決されたポーズの精度は低下する可能性があります。デバイスを移動して、ホストする Cloud Anchor の希望する位置をさまざまな角度から確認できるようにするようお客様に伝えます。
Good 前の数秒間のポーズから検出された特徴点の品質は、ARCore が Cloud Anchor を高い精度で解決するのに十分な可能性があります。

以前にホストされたアンカーを解決する

ARAnchorManagerExtensions.ResolveCloudAnchorAsync() を呼び出して、ホスト型 Cloud Anchor を解決します。ARCore API は、シーンの視覚的な特徴をアンカーの 3D 特徴マップと定期的に比較して、アンカーを基準としたユーザーの位置と向きを特定します。一致が見つかった場合、API はホストされている Cloud Anchor のポーズを返します。

複数の Cloud Anchor の解決を順番に開始できます。一度に存在できる Cloud Anchor オペレーションは最大 40 個です。

オペレーションをキャンセルする、または Cloud Anchor を削除する

ARCloudAnchor.OnDestroy() は、ARCloudAnchor コンポーネントを含むゲーム オブジェクトからそのコンポーネントが削除されると自動的に呼び出されます。これにより、基盤となるネイティブ Cloud Anchor オブジェクトが接続解除されて解放されます。

Cloud Anchor オペレーションの結果の状態を確認する

CloudAnchorState を使用して、ホスティング オペレーションまたは解決オペレーションの結果ステータス(エラーを含む)を確認します。

説明
ErrorResolvingCloudIdNotFound ARCore API が指定された Cloud Anchor ID を見つけられなかったため、解決に失敗しました。
ErrorHostingDatasetProcessingFailed サーバーが指定されたアンカーのデータセットを正常に処理できなかったため、ホスティングに失敗しました。デバイスが環境からより多くのデータを収集した後で、もう一度お試しください。
ErrorHostingServiceUnavailable ARCore API に到達できませんでした。この原因としては、デバイスが機内モードになっているか、インターネット接続が機能していない可能性があります。サーバーに送信されたリクエストがタイムアウトし、応答が返されなかった可能性があります。ネットワーク接続の不具合、DNS の使用不可、ファイアウォールの問題など、デバイスが ARCore API に接続する機能に影響する可能性がある問題が考えられます。
ErrorInternal このアンカーのホスティング タスクまたは解決タスクが内部エラーで終了しました。このエラーからの復旧を試みるべきではありません。
ErrorNotAuthorized 無効な認証が原因で、アプリが ARCore API と通信できません。[Project Settings] > [XR] > [ARCore Extensions] で、有効な認可戦略を確認します。
ErrorResolvingPackageTooNew Cloud Anchor の解決に使用された ARCore Extensions パッケージが、Cloud Anchor のホストに使用されているバージョンよりも新しいため、Cloud Anchor を解決できませんでした。
ErrorResolvingPackageTooOld Cloud Anchor の解決に使用された ARCore Extensions パッケージが、Cloud Anchor のホストに使用されているバージョンよりも古く、互換性がないため、Cloud Anchor を解決できませんでした。
ErrorResourceExhausted アプリケーションが、特定の Google Cloud プロジェクトに割り当てられたリクエスト割り当てを使い果たしました。プロジェクトの ARCore API の追加の割り当ては、Google Developers Console からリクエストする必要があります。
Success このアンカーのホストまたは解決タスクが正常に完了しました。

ホスト リクエストと解決リクエストの API 割り当て

ARCore API には、リクエスト帯域幅に次の割り当てがあります。

割り当てのタイプ 最大 期間 適用対象
アンカーの数 無制限 なし プロジェクト
アンカーのホスト リクエスト 30 IP アドレスとプロジェクト
resolve リクエストをアンカーする 300 IP アドレスとプロジェクト

優れたユーザー エクスペリエンスのためのおすすめの方法

アプリで優れたユーザー エクスペリエンスを実現するために、ユーザーに次の手順を案内します。

  • セッションの開始から数秒待ってから、アンカーのホスト(オブジェクトの配置など)を試みます。これにより、トラッキングが安定するまでの時間を確保できます。
  • アンカーをホストする場所を選択する際は、互いに簡単に区別できる視覚的特徴のあるエリアを選ぶようにします。最良の結果を得るには、反射する表面や、視覚的な特徴のない表面(空白の白い壁など)は避けてください。
  • カメラを被写体の中心に合わせたまま、被写体の周囲を移動して、さまざまな角度から環境をマッピングします。移動する際は、物理的な距離をほぼ同じに保ってください。これにより、より多くの画像データをキャプチャし、解像度を高めることができます。

  • Cloud Anchor をホストして解決する際に、現実の環境で十分な照明があることを確認してください。

非推奨ポリシー

  • ARCore SDK 1.12.0 以降でビルドされたアプリは、Cloud Anchor API の非推奨に関するポリシーの対象となります。
  • ARCore SDK 1.11.0 以前でビルドされたアプリでは、サポートが終了した古い ARCore API が使用されているため、Cloud Anchors をホストまたは解決できません。

次のステップ