ARCore Depth API で Geospatial Depth がサポートされるようになりました。これにより、Streetscape Geometry も有効になっている場合に、自動的に範囲と速度が広がります。VPS カバレッジと Streetscape Geometry が有効になっているロケーションでは、Depth API からの出力画像には、現在の位置から 65 m 以内のエリアで取得された地形と建物のジオメトリが含まれます。ジオメトリから取得したこの奥行きデータは、ローカルの奥行き観測データと統合され、ユーザーが新しい場所に移動すると更新されます。
<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
ARCore Depth API 呼び出しで、カメラからの局所的な観測と、Streetscape Geometry からの建物と地形の両方を、単一の深度画像に結合できるようになりました。
デバイスの互換性
Geospatial Depth は、Depth API をサポートするすべてのデバイスで利用できます。この機能に、飛行時間(ToF)センサーなど、サポートされているハードウェア奥行きセンサーは必要ありません。ただし、Depth API は、デバイスでサポートされているハードウェア センサーを使用します。
パフォーマンスへの影響
Geospatial Depth は、セッションの開始時に 1 回限りの小さな計算を導入し、Streetscape Geometry を最初のダウンロード時に深度表現に統合しますが、それ以外の場合、深度の計算コストは明らかに増加しません。
奥行きの範囲
Geospatial Depth がなければ、奥行き画像の一般的な範囲は 20 ~ 30 m ほど離れ、その範囲を超えると深度観測の密度と精度が低下します。Geospatial Depth を有効にすると、初期の動きがわずかでも、密にサンプリングされた深度値が最大 65.535 m に達することがよくあります。
<ph type="x-smartling-placeholder">
ユースケース
ARCore Depth API は、すでにサポートされているすべての既存のユースケースに使用できます。Geospatial Depth は、VPS でサポートされている場所で取得された奥行き画像に、これまでよりも迅速に長距離の深度が取り込まれるため、屋外環境で長距離の深度をターゲットとするユースケースが可能になります。ユースケースには、次のようなものがあります。
- 仮想コンテンツとその他の視覚効果の建物規模のオクルージョン
- 屋外ナビゲーション
- 距離の計測
制限事項
Geospatial Depth は、VPS のローカライズと Streetscape Geometry をサポートしているエリアでのみサポートされます。その他の地域では、地理空間値がなくても ARCore Depth API は通常どおり動作します。
前提条件
AR の基礎的なコンセプトを理解しておいてください。 と ARCore セッションを構成する方法を確認してください。
Geospatial Depth を有効にする
新しい ARCore セッションで、次の操作を行います。 ユーザーのデバイスが Depth と Geospatial API をサポートしているかどうかを確認する 処理能力の制約により、ARCore 対応デバイスはすべて Depth API をサポートしているわけではありません。
リソースを節約するため、ARCore では深度がデフォルトで無効になっています。 アプリで Depth API を使用するには、深度モードを有効にします。 さらに、地理空間モードとストリートビュー ジオメトリを有効にして、 Geospatial Depth(地理空間の深度)を使用します。
int32_t is_depth_supported = 0; int32_t is_geospatial_supported = 0; // Check whether the user's device supports the Depth API. ArSession_isDepthModeSupported(ar_session, AR_DEPTH_MODE_AUTOMATIC, &is_depth_supported); ArSession_isGeospatialModeSupported(ar_session, AR_GEOSPATIAL_MODE_ENABLED, &is_geospatial_supported); ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); if (is_depth_supported && is_geospatial_supported) { // These three settings are needed to use Geospatial Depth. ArConfig_setDepthMode(ar_session, ar_config, AR_DEPTH_MODE_AUTOMATIC); ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED); } CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); ArConfig_destroy(ar_config);
Geospatial Depth を有効にすると、Depth デベロッパー ガイドで説明されているように、既存の API 呼び出しから奥行き画像にアクセスできます。
// Retrieve the depth image for the current frame, if available. ArImage* depth_image = NULL; // If a depth image is available, use it here. if (ArFrame_acquireDepthImage16Bits(ar_session, ar_frame, &depth_image) != AR_SUCCESS) { // No depth image received for this frame. // This normally means that depth data is not available yet. // Depth data will not be available if there are no tracked // feature points. This can happen when there is no motion, or when the // camera loses its ability to track objects in the surrounding // environment. return; }
次のステップ
- 拡張現実でストリートビュー ジオメトリを使用する方法をご確認ください。