Zwiększ zakres dzięki Głębokości geoprzestrzennej

Baner powitalny głębi geoprzestrzennej

Interfejs ARCore Depth API obsługuje teraz głębię geoprzestrzenną, która automatycznie zwiększa zasięg i szybkość działania interfejsu Depth API po włączeniu także Streetscape Geometry. Jeśli znajdujesz się w lokalizacji z zasięgiem VPS i włączoną funkcją Streetscape Geometry, obrazy wyjściowe z interfejsu Depth API obejmują geometrię terenu i budynków pobrane w danym obszarze z odległości do 65 metrów od bieżącej pozycji. Te dane o głębi pobrane z geometrii są łączone z lokalnymi obserwacjami głębi i aktualizowane, gdy użytkownik przemieszcza się do nowej lokalizacji.

Wywołania interfejsu ARCore Depth API udostępniają teraz zarówno lokalne obserwacje z aparatu, jak i budynki i ukształtowanie terenu z funkcji Streetscape Geometry, połączone w jeden obraz głębi.

Zgodność urządzeń

Głębia geoprzestrzenna jest dostępna na wszystkich urządzeniach, które obsługują interfejs Depth API. Ta funkcja nie wymaga obsługiwanego sprzętowego czujnika głębokości, np. czujnika czasu lotu (ToF). Interfejs Depth API korzysta jednak z obsługiwanych czujników sprzętowych, które mogą znajdować się urządzenia.

Wpływ na wydajność

Funkcja Głębia geoprzestrzenna wprowadza niewielką jednorazową obliczenia na początku sesji, aby zintegrować geometrię Streetscape z reprezentacją głębi w momencie pobierania, ale nie zwiększa wymiernie kosztu jej obliczania.

Zakres głębokości

Bez funkcji Głębia geoprzestrzenna typowe zakresy szczegółowych zdjęć są oddalone o odległości 20–30 metrów, a dokładność i gęstość obserwacji jest ograniczona. Po włączeniu funkcji Głębia geoprzestrzenna standardowo wartości gęsto próbkowanych danych sięgają maksymalnie 65, 535 metra, nawet jeśli ruch początkowy jest niewielki.

Przypadki użycia

Interfejsu ARCore Depth API można używać we wszystkich istniejących zastosowaniach, które są już obsługiwane. Dzięki funkcji Głębia geoprzestrzenna obrazy głębi uzyskane w lokalizacjach obsługiwanych przez VPS zostaną zapełnione głębią głębi o dużym zasięgu szybciej niż wcześniej. Umożliwia to wykorzystanie ich w przypadkach użycia o dużej głębi w środowiskach zewnętrznych. Oto niektóre zastosowania:

  • Powiększanie na dużą skalę przesłonięcia treści wirtualnych i innych efektów wizualnych
  • Nawigacja zewnętrzna
  • Miary odległości

Ograniczenia

Głębia geoprzestrzenna jest obsługiwana tylko na obszarach, które obsługują lokalizację VPS i geometrię Streetscape. Na innych obszarach interfejs ARCore Depth API będzie działać jak zwykle bez wartości geoprzestrzennych.

Wymagania wstępne

Upewnij się, że znasz podstawowe pojęcia związane z AR. i dowiedz się, jak skonfigurować sesję ARCore, zanim przejdziesz dalej.

Włącz głębię geoprzestrzenną

W nowej sesji ARCore sprawdzać, czy urządzenie użytkownika obsługuje Depth i interfejs Geospatial API. Nie wszystkie urządzenia zgodne z ARCore obsługują Depth API ze względu na ograniczenia mocy obliczeniowej.

Aby można było oszczędzać zasoby, głębokość jest domyślnie wyłączona w ARCore. Włącz tryb głębi, aby aplikacja używała interfejsu Depth API. Dodatkowo włącz tryb geoprzestrzenny i geometrię Streetscape, aby należy użyć funkcji Głębia geoprzestrzenna.

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);

Po włączeniu funkcji Głębia geoprzestrzenna można uzyskać dostęp do obrazów głębi za pomocą istniejących wywołań interfejsu API zgodnie z opisem w szczegółowym przewodniku dla programistów.

// 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;
}

Co dalej?