L'API ARCore Depth est désormais compatible avec Geospatial Depth, ce qui augmente automatiquement la portée et la vitesse de cette API lorsque Streetscape Geometry est également activé. Dans un emplacement où la couverture VPS est activée et où Streetscape Geometry est activé, les images de sortie de l'API Depth incluent le relief et la géométrie des bâtiments récupérés dans la zone jusqu'à 65 mètres de la position actuelle. Ces données de profondeur récupérées à partir de la géométrie sont fusionnées avec les observations de profondeur locales et mises à jour lorsque l'utilisateur change de lieu.
<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
Les appels d'API ARCore Depth fournissent désormais les observations locales de l'appareil photo, ainsi que les bâtiments et le relief de Streetscape Geometry, fusionnés en une seule représentation de profondeur.
Compatibilité avec les appareils
Geospatial Depth est disponible sur tous les appareils compatibles avec l'API Depth. Cette fonctionnalité ne nécessite pas de capteur de profondeur matériel compatible, comme un capteur de temps de vol (ToF). Cependant, l'API Depth utilise tous les capteurs matériels compatibles d'un appareil.
Impact sur la performance
La profondeur géospatiale introduit un petit calcul ponctuel au début de la session pour intégrer la géométrie Streetscape dans la représentation de la profondeur lors du téléchargement initial. Toutefois, elle n'augmente pas de manière mesurable le coût du calcul de la profondeur.
Plage de profondeur
Sans la profondeur géospatiale, les plages habituelles des images de profondeur sont comprises entre 20 et 30 mètres, et la densité et la précision des observations de profondeur sont réduites au-delà de cette plage. Lorsque l'option "Geospatial Depth" (Profondeur géospatiale) est activée, les valeurs de profondeur échantillonnées de manière dense atteignent la valeur maximale de 65,535 mètres, même avec un faible mouvement initial.
<ph type="x-smartling-placeholder">
Cas d'utilisation
L'API ARCore Depth peut être utilisée pour tous les cas d'utilisation existants déjà pris en charge. Grâce à Geospatial Depth, les images de profondeur obtenues dans des emplacements compatibles avec les serveurs VPS seront remplies plus rapidement qu'auparavant avec une profondeur longue portée, ce qui permet de cibler des profondeurs de longue portée en extérieur. Voici quelques exemples d'utilisation :
- Occlusion à l'échelle du bâtiment du contenu virtuel et d'autres effets visuels
- Navigation en extérieur
- Mesures de distance
Limites
La profondeur géospatiale n'est disponible que dans les zones compatibles avec la localisation VPS et la géométrie Streetscape. Dans d'autres, l'API ARCore Depth fonctionnera normalement sans les valeurs Geospatial.
Prérequis
Assurez-vous de bien maîtriser les concepts fondamentaux de la RA. et comment configurer une session ARCore avant de continuer.
Activer la profondeur géospatiale
Dans une nouvelle session ARCore, vérifier si l'appareil d'un utilisateur est compatible avec Depth et l'API Geospatial. Les appareils compatibles ARCore ne sont pas tous compatibles avec l'API Depth en raison de contraintes de puissance de traitement.
Pour économiser des ressources, la profondeur est désactivée par défaut sur ARCore. Activez le mode Profondeur pour que votre application utilise l'API Depth. Activez également le mode Géospatial et la géométrie Streetscape pour utiliser la profondeur géospatiale.
Java
Config config = session.getConfig(); // Check whether the user's device supports the Depth API. boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC); boolean isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED); if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.setDepthMode(Config.DepthMode.AUTOMATIC); config.setGeospatialMode(Config.GeospatialMode.ENABLED); config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); } session.configure(config);
Kotlin
val config = session.config // Check whether the user's device supports the Depth API. val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. config.depthMode = Config.DepthMode.AUTOMATIC config.geospatialMode = Config.GeospatialMode.ENABLED config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } session.configure(config)
Une fois l'option "Geospatial Depth" activée, vous pouvez accéder aux représentations de profondeur via des appels d'API existants, comme décrit dans le guide du développeur sur les profondeurs.
Java
// Retrieve the depth image for the current frame, if available. Image depthImage = null; try { depthImage = frame.acquireDepthImage16Bits(); // Use the depth image here. } catch (NotYetAvailableException e) { // This 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. } finally { if (depthImage != null) { depthImage.close(); } }
Kotlin
// Retrieve the depth image for the current frame, if available. try { frame.acquireDepthImage16Bits().use { depthImage -> // Use the depth image here. } } catch (e: NotYetAvailableException) { // This 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. }
Étapes suivantes
- Découvrez comment utiliser Streetscape Geometry dans votre expérience de réalité augmentée.
- Découvrez comment créer votre propre application avec Geospatial Depth en suivant l'atelier de programmation Scene Semantics et Geospatial Depth.