La API de Depth de ARCore ahora admite la profundidad geoespacial, que aumenta automáticamente el rango y la velocidad de la API de Depth cuando también está habilitada la geometría del paisaje urbano. Cuando te encuentras en una ubicación con cobertura VPS y con la geometría del paisaje urbano habilitada, las imágenes de salida de la API de Depth incluyen la geometría del terreno y el edificio recuperada en el área hasta 65 metros de la posición actual. Estos datos de profundidad recuperados de geometría se combinan con observaciones de profundidad locales y se actualizan a medida que el usuario se mueve a una nueva ubicación.
Las llamadas a la API de Depth de ARCore ahora proporcionan observaciones locales de la cámara, edificios y terrenos de la geometría del paisaje urbano, combinados en una sola imagen de profundidad.
Compatibilidad con dispositivos
La profundidad geoespacial está disponible en todos los dispositivos compatibles con la API de Depth. Esta función no requiere un sensor de profundidad de hardware compatible, como un sensor de tiempo de vuelo (ToF). Sin embargo, la API de Depth usa cualquier sensor de hardware compatible que pueda tener un dispositivo.
Impacto en el rendimiento
La profundidad geoespacial introduce un pequeño cálculo por única vez al comienzo de la sesión para integrar la geometría del paisaje urbano a la representación de profundidad cuando se descarga inicialmente. Sin embargo, no aumenta de forma cuantificable el costo del cálculo de profundidad.
Rango de profundidad
Sin la profundidad geoespacial, los rangos típicos de imágenes de profundidad se encuentran a unos 20-30 metros de distancia, con la densidad y la precisión de las observaciones de profundidad reducidas más allá de ese rango. Con la Profundidad geoespacial habilitada, es habitual que los valores de profundidad muestreados densamente alcancen el máximo de 65.535 metros, incluso con una pequeña cantidad de movimiento inicial.
Casos de uso
La API de Depth de ARCore se puede usar en todos los casos de uso existentes que ya son compatibles. Con la profundidad geoespacial, las imágenes de profundidad obtenidas en ubicaciones compatibles con VPS se propagarán con profundidad de largo alcance más rápido que antes, lo que permitirá casos de uso orientados a profundidades de largo alcance en entornos exteriores. Estos son algunos casos prácticos:
- Oclusión a escala de edificio de contenido virtual y otros efectos visuales
- Navegación en exteriores
- Mediciones de distancia
Limitaciones
La profundidad geoespacial solo se admite en áreas que admiten la localización VPS y la geometría del paisaje urbano. En otras áreas, la API de Depth de ARCore funcionará con normalidad sin valores geoespaciales.
Requisitos previos
Asegúrate de comprender los conceptos fundamentales de RA y cómo configurar una sesión de ARCore antes de continuar.
Cómo habilitar la profundidad geoespacial
En una nueva sesión de ARCore, Verifica si el dispositivo de un usuario es compatible con Depth y la API de Geospatial. No todos los dispositivos compatibles con ARCore admiten la API de Depth debido a limitaciones de la capacidad de procesamiento.
Para ahorrar recursos, la profundidad está inhabilitada de forma predeterminada en ARCore. Habilita el modo de profundidad para que tu app use la API de Depth. Además, habilita el modo geoespacial y la geometría del paisaje urbano para usar la profundidad geoespacial.
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);
Una vez que se habilita la profundidad geoespacial, se puede acceder a las imágenes de profundidad a través de llamadas a la API existentes, como se describe en la guía para desarrolladores de profundidad.
// 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; }
¿Qué sigue?
- Obtén información para usar la geometría del paisaje urbano en tu experiencia de realidad aumentada.