プラットフォーム固有のガイド
Android(Kotlin/Java)
Android NDK(C)
Unity(AR Foundation)
Unreal Engine
<ph type="x-smartling-placeholder">
AR アプリのデベロッパーは、ユーザーのために仮想と現実をシームレスにブレンドしたいと考えています。ユーザーは、仮想オブジェクトをシーンに配置する際に、それが現実世界のものであるかのように見せたいものです。家具を購入するユーザー向けのアプリを作成する場合は、購入しようとしているアームチェアが自分の空間になじむことをユーザーに確信してもらいたいものです。
Depth API を使用すると、デバイスのカメラでシーン内の実際の物体のサイズと形状を認識できます。奥行きのある画像(奥行きマップ)を作成することで、アプリにリアルなレイヤを追加します。奥行きのある画像によって提供される情報を使用して、臨場感のあるリアルなユーザー エクスペリエンスを実現できます。
Depth API を使った開発のユースケース
Depth API は、物体のオクルージョン、没入感の向上、AR エクスペリエンスのリアルさを強化する新たなインタラクションを強化します。以下に、ご自身のプロジェクトで使用する方法をいくつかご紹介します。Depth の動作例については、ARCore Depth Lab のサンプルシーンをご覧ください。深度データにアクセスするさまざまな方法を確認できます。この Unity アプリは GitHub で公開されています。
オクルージョンを有効にする
オクルージョン、つまり現実世界のオブジェクトの背後にある仮想オブジェクトを正確にレンダリングすることは、臨場感あふれる AR エクスペリエンスに欠かせない要素です。ドアの隣にトランクがあるシーンに配置したいと考える仮想のアンディについて考えてみましょう。オクルージョンなしでレンダリングすると、アンディはトランクの端と非現実的に重なります。シーンの深度を利用し、アンディが木製の幹などの周囲の物とどの程度離れているかを把握すれば、オクルージョンによってアンディを正確にレンダリングし、周囲に写ったリアルな映像にすることができます。
シーンを変換する
仮想の雪の結晶をレンダリングしてソファの腕や枕に座ったり、霧に包まれたリビングルームをキャストしたりすることで、臨場感あふれる新しい世界を体験できます。奥行きを使用すると、仮想ライトが相互作用したり、背後に隠れたり、実際のオブジェクトに光を当てたりするシーンを作成できます。
<ph type="x-smartling-placeholder">
被写界距離と被写界深度
遠くにあるものを示す必要がありますか?Depth API を使用すると、距離測定を使用したり、被写界深度の効果(シーンの背景や前景のぼかしなど)を追加したりできます。
<ph type="x-smartling-placeholder">
ユーザーによる AR オブジェクト操作を可能にする
仮想コンテンツが衝突や物理学を通じて現実世界と対話できるようにすることで、ユーザーがアプリを通じて世界に「触れる」ことを可能にします。仮想オブジェクトを現実の障害物を通り越したり、仮想ペイントボールを現実の木に当たって飛ばしたりすることもできます。深度に基づく衝突とゲーム物理を組み合わせることで、臨場感あふれるエクスペリエンスを実現できます。
<ph type="x-smartling-placeholder">
ヒットテストを改善する
深度を使用すると、ヒットテストの結果を改善できます。平面ヒットテストはテクスチャのある平面サーフェスでのみ機能しますが、深度ヒットテストはより詳細で、平面でない領域やテクスチャの低い領域でも機能します。奥行きのヒットテストでは、シーンの奥行き情報を使用してポイントの正しい奥行きと向きが特定されるためです。
次の例では、緑のアンディは標準的な平面ヒットテストを表し、赤のアンディは深度ヒットテストを表します。
<ph type="x-smartling-placeholder">
デバイスの互換性
Depth API は、処理能力のあるデバイスでのみサポートされます 深度があり、ARCore で手動で有効にする必要があります。詳しくは、 Depth を有効にする。
デバイスによっては、飛行時間センサーや飛行時間センサー、 (ToF)センサーです。詳しくは、ARCore 対応デバイスのページをご覧ください。 Depth API をサポートするデバイスの最新のリストと、Depth API をサポートするデバイスのリスト サポートされているハードウェア奥行きセンサー(ToF センサーなど)がある。
奥行きのある画像
Depth API は、動きからの奥行きのアルゴリズムを使用して奥行きのある画像を生成し、世界の 3D ビューを提供します。奥行き画像の各ピクセルは、カメラからシーンまでの距離の測定値に関連付けられます。このアルゴリズムは、さまざまな角度から複数のデバイス画像を撮影して比較し、ユーザーがスマートフォンを動かした際の各ピクセルまでの距離を推定します。機械学習を選択的に使用して、ユーザーの動きを最小限に抑えつつ、奥行きのある処理を行います。また、ユーザーのデバイスが追加で持っているハードウェアも活用します。デバイスに ToF などの専用の深度センサーが搭載されている場合は、アルゴリズムにより、利用可能なすべてのソースからのデータが自動的に統合されます。これにより、既存の奥行きのある画像が強調され、カメラが動いていない場合でも奥行きのある映像が可能になります。また、白い壁など、対象物がほとんどまたはまったくない表面や、人物や物体が動く躍動感のあるシーンでも、奥行きが良くなります。
次の画像は、壁に自転車が置かれている廊下のカメラ画像と、カメラ画像から作成された奥行き画像を可視化したものです。赤色の部分はカメラに近い部分、青色の部分は遠い部分です。
動きからの奥行き
奥行きデータは、ユーザーがデバイスを動かすと利用できるようになります。このアルゴリズムは、0 ~ 65 m 離れた場所の深度を正確かつ正確に推定できます。デバイスが現実世界のシーンから 0.5 m ~ 5 m ほど離れているときに、最も正確な結果を得られます。ユーザーにデバイスを多く動かしたくなるようなエクスペリエンスは、より良い結果をもたらします。
奥行きのある画像を取得する
Depth API を使用すると、すべてのカメラフレームに一致する奥行き画像を取得できます。取得された奥行き画像のタイムスタンプと画角の組み込みはカメラと同じです。奥行きは動きから取得されるため、ユーザーがデバイスの動きを開始した後でのみ、有効な奥行きデータを利用できます。白い壁など、対象物がほとんどまたはまったくない表面は、奥行きが不正確に関連付けられます。
次のステップ
- ARCore Depth Lab で、深度データにアクセスするさまざまな方法を確認しましょう。