Integración de ARCore con Azure Spatial Anchors

Yago Rey
4 min readMay 1, 2020

--

En este post explicaré como funciona el servicio Spatial Anchors de Azure, y dejaré un ejemplo de implementación.

¿Estás listo?, pues ¡allá vamos!

Azure Spatial Anchors

Se trata de un servicio que nos permite alojar en la web nuestros anchors generados con ARCore, lo que permite que puedan ser consultados por diferentes dispositivos.

De esta forma, dos personas con que consulten el mismo servicio podrán visualizar el mismo anchor, lo que se traduce en que en un mismo punto físico del mundo real, podrán ver superpuesto un modelo 3D.

Creo que vale la pena resaltar la diferencia entre modelo 3D y anchor:

  • Anchor: Objeto que contiene la información necesaria (ejes X, Y, Z) para una vez recuperado, poder mostrar el modelo 3D en su posición. Es decir, el anchor únicamente fija la posición del modelo 3D en el mundo real.
  • Modelo 3D: es la representación gráfica de un objeto real. Es el diseño y la parte gráfica de lo que visualizamos. Un modelo 3D se sitúa sobre un anchor.

¿Cómo funciona?

Antes de crear un Spatial Anchor necesitamos escanear buena parte del entorno en el que se va a situar. Esto es así porque el anclaje necesita puntos de referencia para poder ser situado.

A la hora de recuperar un anchor no nos basaremos en una posición GPS, si no que se comprobará si el patrón de puntos que nos llega en cada frame capturado por la cámara coincide con el patrón de puntos enviado una vez que se creó el anclaje y fue subido al servicio web.

En este ejemplo gráfico se puede ver de una forma muy simple lo explicado hasta este punto.

El mismo ejemplo a la inversa nos serviría para explicar cómo es el proceso de recuperación del anchor, en donde se envía cada frame capturado por la cámara del dispositivo, con los puntos clave de la imagen localizados por ARCore.

Cuando el servidor descubre un anchor cuyos puntos clave coinciden con los recibidos, lo devuelve:

¿Qué nos permite?

Nos permite la misma funcionalidad que nos permitiría el servicio Cloud Anchors de Google, con la única salvedad de que los anchors almacenados en el servidor viven más allá de las 24 horas que persisten los anclajes en la nube de Google.

De esta forma, podemos situar un anclaje en una posición real del mundo físico (previo escaneado del entorno), y días (o meses) más tarde, podremos visualizar el objeto creado, con el mismo o diferente dispositivo.

Yago, todo esto está muy bien, pero ¿este servicio no tiene un coste asociado?.

Vale, sí, estás en lo cierto.

Es un servicio de Azure para uso profesional, y por lo tanto tendrá un coste, y puede que seas reticente a pagar por un servicio con el que de momento sólo quieres hacer unas pruebas, pero quizá todavía nada a nivel profesional…

¡Pues te traigo buenas noticias! 😎

El servicio de Spatial Anchors es gratuito. Al menos temporalmente, ya que se trata de una versión preliminar.

Show me the code!

Desarrollar este punto dentro del contenido de este post lo haría más tedioso de leer.

Atendiendo a estas razones, he creado dos repositorios (basándome en la documentación oficial), con dos ejemplos.

  1. El primero será un ejemplo básico de integración de ARCore con Spatial Anchors.
  2. El segundo será un ejemplo más completo que dará la posibilidad de subir la información y poder resolverla. Este ejemplo podría ser utilizado entre varios dispositivos.

Para ejecutar estos ejemplos tendremos que crear una cuenta en Azure Spatial Anchors tal y como se muestra en la documentación.

He intentando dejar comentarios en las partes más relevantes del código, pero de todas formas, si tienes alguna duda sobre la implementación puedes encontrarme aquí.

Espero que te haya gustado 🙂.

¡Nos vemos en el mundo real!

--

--