基本コンセプト

ARCore の詳細に入る前に、基本的なコンセプトを理解しておきましょう。これらのコンセプトを組み合わせることで、ARCore によって、仮想コンテンツが実際の表面上に装着されているように見せたり、現実世界の場所に装着されているように見せたりできるようになります。

モーション トラッキング

スマートフォンが世界を移動する際に、ARCore は同時ローカライズとマッピング(SLAM)と呼ばれるプロセスを使用して、スマートフォンとその周囲の世界との相対位置を把握します。ARCore は、キャプチャしたカメラ画像から「特徴ポイント」と呼ばれる、視覚的に区別できる特徴を検出し、それらのポイントを使用して位置の変化を計算します。視覚情報をデバイスの IMU からの慣性測定値と組み合わせることで、世界に対するカメラの姿勢(位置と向き)を時間の経過とともに推定します。

3D コンテンツをレンダリングする仮想カメラのポーズと、ARCore から提供されたデバイスのカメラのポーズを揃えることで、デベロッパーは仮想コンテンツを正しい視点からレンダリングできます。レンダリングされた仮想画像は、デバイスのカメラから取得した画像に重ねて、仮想コンテンツが現実世界の一部であるかのように見せることができます。

環境理解

ARCore は、特徴点や平面を検出することで、現実世界の認識を継続的に改善しています。

ARCore は、テーブルや壁など、一般的な水平面または垂直面上にあると思われる対象物ポイントのクラスタを検索し、それらの面を幾何学的な平面としてアプリで利用できるようにします。また、ARCore では、各幾何学面の境界線を特定して、その情報をアプリで利用できるようにすることもできます。この情報を使用して、平面上に仮想オブジェクトを配置できます。

ARCore は対象物ポイントを使用して平面を検出するため、テクスチャのない平面(白い壁など)は正しく検出されないことがあります。

深い理解

ARCore では、サポート対象デバイスのメイン RGB カメラを使用して、深度マップを作成できます。このマップは、特定の地点からのサーフェス間の距離に関するデータを含む画像です。深度マップによって提供される情報を使用して、仮想オブジェクトを観察対象のサーフェスと正確に衝突させたり、仮想オブジェクトを現実世界のオブジェクトの前または背後に表示するなど、没入感のあるリアルなユーザー エクスペリエンスを実現できます。

照度の推定

ARCore は、周囲の明るさに関する情報を検出し、特定のカメラ画像の平均的な明るさと色補正を提供します。この情報により、仮想オブジェクトを周囲の環境と同じ条件下で照明できるため、臨場感が向上します。

ユーザーの操作

ARCore はヒットテストを使用して、スマートフォンの画面に対応する(x,y)座標(タップやアプリでサポートするその他の操作により指定)を取得し、カメラのビューに光線を投影し、光線が交差する幾何学平面または特徴点をワールド空間でのその交差のポーズとともに返します。これにより、ユーザーは環境内のオブジェクトを選択したり、他の方法で操作したりできます。

ポイントの指向

ポイントの向きを使用すると、角度の付いたサーフェスに仮想オブジェクトを配置できます。特徴ポイントを返すヒットテストを行うと、ARCore は近隣の特徴ポイントを確認し、それを使用して特定の特徴ポイントにおけるサーフェスの角度を推定します。ARCore は、この角度を考慮したポーズを返します。

ARCore は特徴点のクラスタを使用してサーフェスの角度を検出するため、テクスチャのないサーフェス(白い壁など)が正しく検出されないことがあります。

アンカーとトラッキング可能

ARCore が自身の位置や周囲の環境に対する理解を高めるにつれて、ポーズは変更される可能性があります。仮想オブジェクトを配置する場合、ARCore が時間の経過とともにオブジェクトの位置を追跡するように、アンカーを定義する必要があります。多くの場合、ユーザー操作で説明しているように、ヒットテストで返されたポーズに基づいてアンカーを作成します。

ポーズは変わる可能性があるため、ARCore は、幾何学的な平面や対象物ポイントなどの環境オブジェクトの位置を経時的に更新することがあります。平面とポイントは、トラッキング可能と呼ばれる特別なタイプのオブジェクトです。その名前が示すように、これらは ARCore が時間の経過とともに追跡するオブジェクトです。仮想オブジェクトを特定のトラッキング可能物に固定すると、デバイスが移動しても、仮想オブジェクトとトラッキング可能物との関係が安定するようにします。つまり、デスクに仮想 Android のフィギュアを置いた場合、ARCore がデスクに関連付けられた幾何学面のポーズを後で調整しても、Android のフィギュアがテーブルの上に配置されたままになります。

詳しくは、アンカーの使用をご覧ください。

拡張画像

拡張画像は、製品のパッケージや映画ポスターなど、特定の 2D 画像に応答する AR アプリを作成できる機能です。ユーザーは、スマートフォンのカメラを特定の画像に向けると AR エクスペリエンスをトリガーできます。たとえば、スマートフォンのカメラを映画のポスターに向け、キャラクターがポップアウトしてシーンを演じるなどです。

ARCore では、動いているバスの側面のビルボードなど、動画も追跡します。

画像をオフラインでコンパイルして画像データベースを作成するか、デバイスからリアルタイムで個々の画像を追加できます。登録されると、ARCore はこれらの画像と画像の境界を検出し、対応するポーズを返します。

共有

ARCore Cloud Anchor API を使用すると、Android デバイスや iOS デバイス向けのコラボレーション アプリやマルチプレーヤー アプリを作成できます。

Cloud Anchors を使用すると、1 つのデバイスがアンカーと近くの機能ポイントをクラウドに送信してホストします。これらのアンカーは、同じ環境内の Android デバイスまたは iOS デバイス上の他のユーザーと共有できます。これにより、アプリはこれらのアンカーにアタッチされた同じ 3D オブジェクトをレンダリングし、ユーザーが同時に同じ AR エクスペリエンスを利用できるようになります。

詳細

選択したプラットフォームで AR エクスペリエンスを構築し、これらのコンセプトを実践しましょう。