プラットフォーム固有のガイド
Android(Kotlin/Java)
Android NDK(C)
Unity(AR Foundation)
Unreal Engine
AR アプリ デベロッパーは、仮想と現実をシームレスに融合させたいと考えます。ユーザーは、シーン内に仮想オブジェクトを配置する際、現実世界にあるように見せることができます。家具を購入できるアプリを作成する場合は、購入しようとしているアームチェアが室内にぴったり合うようにする必要があります。
Depth API を使用すると、デバイスのカメラがシーン内の実際のオブジェクトのサイズと形状を把握するのに役立ちます。深度画像(深度マップ)を作成して、アプリに現実感のレイヤを追加します。深度画像が提供する情報を使用して、臨場感のあるリアルなユーザー エクスペリエンスを実現できます。
Depth API を使用した開発のユースケース
Depth API は、オブジェクト オクルージョン、没入感の向上、AR 環境の現実感を高める斬新な操作を実現します。独自のプロジェクトでそれを使用する方法は次のとおりです。Depth の実例については、ARCore Depth Lab のサンプルシーンを探索し、深度データにアクセスする方法を確認する。この Unity アプリは GitHub でオープンソース化されています。
オクルージョンを有効にする
オクルージョン、つまり実世界のオブジェクトの背後にある仮想オブジェクトを正確にレンダリングすることは、臨場感あふれる AR エクスペリエンスにとって最も重要です。ドアの前にトランクがあるシーンに、ユーザーが設置したいと思う仮想アンディを考えてみましょう。オクルージョンなしでレンダリングされるアンディは、トランクの端と重なり合う可能性があります。シーンの深度を利用して、仮想アンディが木製の幹などの周囲に対してどの程度離れているかを理解していれば、オクルージョンでアンディを正確にレンダリングして、周囲のアンダースをよりリアルに見せることができます。
シーンを変換する
バーチャル スノーフレークをレンダリングしてソファの腕や枕を落ち着かせる、または霧を吹き込む霧にリビングルームを映し出すなど、臨場感あふれる新しい世界にユーザーを案内します。奥行きを利用して、仮想ライトが相互作用し、背後にあるものを非表示にして、実際の物体を再ライトするシーンを作成できます。
距離と被写界深度
遠くにある商品であることを示す必要があるか?Depth API を使うと、距離測定を使用してシーンの背景や前景のぼかしなどの被写界深度効果を追加できます。
AR オブジェクトに対するユーザー操作を有効にする
衝突や物理現象により仮想コンテンツと現実世界とのインタラクションを実現することにより、ユーザーがアプリを介して「タップ」できるようにします。仮想オブジェクトが現実の障害物を越えたり、仮想ペイントボールが実際の木に飛び散ったりします。深度ベースの衝突とゲーム物理学を組み合わせることで、臨場感あふれる体験を味わえます。
ヒットテストの改善
ヒットテストの結果を改善するには、深度を使用できます。プレーン ヒットテストはテクスチャのある平面でのみ機能しますが、深度ヒットテストはより詳細で、非平面やテクスチャでない領域でも機能します。これは、深度ヒットテストでは、シーンからの深度情報を使用してポイントの正しい深度と向きを決定するためです。
次の例では、緑のアンディは標準プレーン ヒットテストを表し、赤のアンディは深度ヒットテストを表しています。
デバイスの互換性
Depth API は、深度をサポートする処理能力を備えたデバイスでのみサポートされます。Depth を有効にするで説明されているように、ARCore で Depth API を手動で有効にする必要があります。
一部のデバイスでは、フライト時間(ToF)センサーなど、ハードウェア深度センサーが提供される場合もあります。Depth API をサポートするデバイスの最新リストと、サポートされているハードウェア深度センサー(ToF センサーなど)のリストについては、ARCore 対応デバイスのページをご覧ください。
奥行きのある画像
Depth API により奥行きのある画像が作成され、深度画像が作成され、世界の 3D ビューが表示されます。深度画像の各ピクセルは、シーンがカメラからどのくらい離れているかの測定値に関連付けられます。このアルゴリズムは、複数のデバイス画像をさまざまな角度から撮影し、それらを比較して、ユーザーがスマートフォンを動かしたときに各ピクセルまでの距離を推定します。この機能では、選択的に機械学習を使用することで、ユーザーの動きが最小限であっても深度処理を強化します。また、ユーザーのデバイスにある追加のハードウェアも活用されます。デバイスに ToF などの専用の深度センサーが搭載されている場合、利用可能なすべてのソースからのデータが自動的にマージされます。これにより、既存の奥行きのある画像が補正され、カメラが動かない場合でも深度が有効になります。また、白い壁などの地質的な特徴がほとんどない表面や、人や物が動いている動的シーンなどにおいても、深度が増します。
次の画像は、自転車が壁に置かれた廊下のカメラ画像と、カメラ画像から作成された奥行きのある画像を示しています。赤色の部分はカメラに近く、青色の領域は遠くにあります。
動いている角度
奥行きデータは、ユーザーがデバイスを動かすと利用できるようになります。このアルゴリズムでは、0 ~ 65 メートル離れた場所から正確で安定した深度を推定できます。最も正確な結果は、デバイスが実際のシーンから 500 m ~ 5 m 離れた場所にあります。ユーザーのデバイスの移動を促すようなエクスペリエンスにより、より良い結果がもたらされます。
深度画像を取得する
Depth API を使用すると、すべてのカメラフレームに一致する深度画像を取得できます。取得した深度画像のタイムスタンプと視野がカメラと同じになります。深度はモーションから取得されるため、ユーザーがデバイスの移動を開始した後にのみ深度データが利用できます。白い壁など、特徴量がほとんどないサーフェスは、不正確な深度に関連付けられます。
次のステップ
- ARCore Depth Lab では、深度データにアクセスするさまざまな方法を紹介しています。