アンカーの使用

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

アンカーを使用して、仮想オブジェクトが AR シーンの中にあるように見えるようにします。

アンカーを使用する理由

ARCore の環境理解が AR エクスペリエンス全体を通じて更新されると、仮想オブジェクトが配置されていた場所からずれているように見えることがあります。これは、アプリのリアルさやユーザー エクスペリエンスに影響を与える可能性があります。

アンカーを使用すると、オブジェクトが空間内の同じ位置と向きに保たれるように見えるため、現実世界に置かれている仮想オブジェクトの錯覚を維持できます。

アンカーの仕組み

アンカーを初めて使う場合は、世界の空間やポーズについて確認することをおすすめします。

  • 世界空間

    • カメラとオブジェクトが配置される座標空間
    • 世界空間におけるフレームとカメラの位置が更新されます
  • ポーズ

    • 世界空間におけるオブジェクトの位置と向きを表します
    • iOS では変換とも呼ばれます

アンカーを作成するときに、現在のフレームの世界空間推定に対する相対位置と向きを記述するポーズを使用します。

このアンカーに 1 つ以上のオブジェクトを追加します。アンカーとそれに取り付けられたオブジェクトは、世界の指定した位置に留まります。アンカーのポーズが各フレームのワールド空間の更新に適応すると、アンカーはオブジェクトを更新し、それに応じてポーズします。

複数のオブジェクトを同じアンカーにアタッチすると、アンカーのポーズが調整された場合でも、これらのオブジェクトについて相対位置と向きを維持できます。

シーンでアンカーを使用する

シーン内でアンカーを使用するには、コードは次のようにする必要があります。

  • トラッキング可能(プレーンなど)または ARCore セッションのコンテキストにアンカーを作成します。
  • 1 つ以上のオブジェクトをアンカーにアタッチします。

アンカーは、シーンのオブジェクトでさまざまな位置動作をサポートできます。

アンカー コンテキストと、シーン オブジェクトに必要なアンカーの数は、AR シーンに必要な位置動作によって決まります。詳しくは、以降のセクションをご覧ください。

アンカー コンテキストの選択

Trackable または ARCore Session を使用してシーンにアンカーを追加します。

オブジェクトを アンカーを
「溶接済み」で追跡可能になり、追跡可能と同じ回転効果を受けます。
これには以下が含まれます。
  • 飛行機の表面にくっつくように見える
  • トラッキング可能に対して相対的に維持(たとえば、その上や前にフローティングする)
トラッキング可能
ユーザー エクスペリエンスを通じて、世界空間に同じポーズでいるように見える ARCore セッション

1 つ以上のオブジェクトをアンカーする

1 つ以上のオブジェクトをアンカーにアタッチできます。通常、これらのオブジェクトは、次のうち 1 つ以上と空間的な関係を持ちます。

  • お互い
  • トラッキング可能な飛行機(飛行機など)
  • 世界の空間における位置

アンカーのガイドライン

アプリのリアルさとパフォーマンスにより、アンカーを効果的かつ効率的に使用できます。

付近のアンカーにアタッチされたオブジェクトは、AR 体験全体で、その位置が現実的かつ相対的に保たれているように見えます。

必要なアンカーのみを使用すると、CPU コストを削減できます。

可能であればアンカーを再利用する

ほとんどの場合、オブジェクトごとに新しいアンカーを作成する代わりに、付近の複数のオブジェクトに同じアンカーを使用する必要があります。

オブジェクトがトラッキング可能または世界空間内の一意の空間関係を維持する必要がある場合は、オブジェクトに新しいアンカーを使用します。

シーン内の各オブジェクトに独自のアンカーがある場合、ARCore が各フレーム内の世界空間を推測すると、これらのアンカーでは、オブジェクトのポーズを互いに独立して調整します。個別にアンカーされたオブジェクトは互いに移動したり回転したりするため、仮想オブジェクトが互いに相対的に配置されている AR シーンの錯覚を遮断できます。


たとえば、アプリでユーザーが部屋の近くに仮想家具を配置できるとします。ユーザーがアプリを開くと、ARCore がテーブルトップとフロアの平面を計測します。ユーザーがテーブルランプに仮想ランプを配置します。その後、ユーザーは仮想の椅子を床に置きます。

この時点で、シーンにはアンカーがテーブルトップ プレーンに、もう 1 つがフロア プレーンに取り付けられている必要があります。

ユーザーが別の仮想ランプをテーブルトップに追加した場合は、テーブルトップ プレーンにすでに取り付けられているアンカーを再利用できます。これにより、両方のランプがテーブルトップの平面に密着し、互いに相対的に配置されているように見えます。椅子は床面に対しても固定されています。

オブジェクトをアンカーの近くに置く

オブジェクトをアンカーする場合は、使用しているアンカーの近くに配置してください。ARCore による世界空間座標の更新による予期しない回転動作を防ぐため、アンカーから 8 m(26 フィート)を超える距離にオブジェクトを配置しないでください。

既存のアンカーから 8 m 以上離れた場所にオブジェクトを配置する必要がある場合は、この位置の近くに新しいアンカーを作成し、そのオブジェクトを新しいアンカーに接続します。

未使用のアンカーの接続を解除します

パフォーマンスを改善するため、不要になったアンカーを切断します。

アプリですべての Trackable に CPU コストが発生し、ARCore でアンカーがアタッチされた Trackable がリリースされません。

アンカーの種類

アンカーのタイプは、有効な範囲(ローカルから世界全体まで)によって区別されます。

  • ローカル アンカーはローカルにアプリとともに格納され、アプリのそのインスタンスでのみ有効です。ユーザーは、アンカーを配置する場所に物理的に存在する必要があります。

  • Cloud Anchors は Google Cloud に保存され、アプリ インスタンス間で共有される場合があります。ユーザーは、アンカーを配置する場所に物理的にいる必要があります。

  • 地理空間アンカーは、測地緯度、経度、標高に加えて、Google の視覚測位システム(VPS)データに基づき、世界中のどこでも正確な位置情報を提供します。これらのアンカーはアプリ インスタンス間で共有できます。ユーザーは、アプリがインターネットに接続され、VPS を使用できれば、リモート ロケーションからアンカーを配置できます。