Menú principal

martes, 9 de octubre de 2018

ARKit: Realidad Aumentada en tu iPhone

La Realidad Aumentada es una tecnología que poco a poco se va haciendo hueco dentro del mercado de consumo general y tiene un gran potencial para convertirse en una de las claves del desarrollo y de las nuevas tecnologías en los próximos años. Esta afirmación se puede basar en los esfuerzos que están poniendo los gigantes tecnológicos como Microsoft, Apple o Google en el desarrollo de hardware que dé soporte a esta tecnología y frameworks para exprimir todo el potencial que puede ofrecer. Pero, ¿qué es exactamente la realidad aumentada?. El término Realidad Aumentada cada vez suena con más fuerza.

El objetivo de la Realidad Aumentada es insertar elementos virtuales en un entorno real de la manera más convincente posible. Para ello, se basa en una serie de técnicas que hace que la experiencia sea satisfactoria y de un realismo asombroso en ocasiones. Volviendo a Apple, la compañía presentó su propio framework llamado ARKit, en la WWDC de 2017 junto a iOS 11. Comenzó con características limitadas que se han ido ampliando en el tiempo para llegar a ARKit 2.0. Aunque todavía su funcionamiento no pasa de algo anecdótico, es verdad que gracias a la inclusión de este framework Apple dio soporte de realidad aumentada a millones de dispositivos de la noche a la mañana.

Figura 1: Características ARKit
ARKit es un buen ejemplo de framework de realidad aumentada ya que aúna la mayoría de técnicas que poseen las demás alternativas. Estas características se pueden dividir en siete secciones:
  • Tracking: Aquí entra el seguimiento a través de la posición y orientación, que se recogen mediante la cámara y lo sensores del teléfono y con los que genera los fotogramas dinámicamente. La técnica para generar estos fotogramas mediante AVFoundation (video) y CMMotionManager (movimiento) se llama Odometría Inercial Visual. 
  • Comprensión de entorno: Se caracterizaría por la detección de planos (horizontales y verticales), el hit-testing de los planos existentes y la estimación de luz. 
  • Renderización: Para crear una experiencia realista, es importante tener en cuenta determinadas características del objeto, como su posición y orientación, la escala métrica respecto al mundo real, la iluminación, la emisión de sombras y el reflejo de texturas. 
  • Seguimiento de imágenes: ARKit no necesita que la imagen sea estática para realizar su seguimiento. Al entrenar con un modelo previo, el framework es capaz de sacar su posición, distancia y orientación en cada framework. Además, es capaz de realizar el seguimiento a múltiples imágenes al mismo tiempo. Para seleccionar una buena imagen para el seguimiento, ésta tiene que tener una buena distribución de colores y tener una buena resolución. 
  • Detección de objetos: La detección de objetos se realiza con el escaneo previo de la figura que querramos analizar. Al apuntar con una sesión al objeto, ARKit nos dará información acerca de la posición con respecto al origen de coordenadas, las transformadas y extensiones del objeto. 
  • Gestión de mapas: A partir de ARKit 2.0 tenemos la capcidad de gestionar los mapas escaneados con el framework. Así podremos guardar una sesión con varios objetos, y poder recuperarla la siguiente vez que abramos la aplicación. También podremos compartir la sesión con otro dispositivo y así transferir los objetivos de escena a otra persona. 
  • Detección facial: Presentada junto al iPhone X, es capaz de dar la posición y orientación de la malla facial generada en cada fotograma, pudiendo crear anclas para colocar elementos visuales en la cara. 

Figura 2: Tecnologías Adyacentes
Para la parte del modelado de objetos, ARKit hace uso de las siguientes tecnologías:
  • SceneKit: Framework de Apple para la renderizaición y modelado de objetos 3D 
  • SpriteKit: Framework usado dentro de la creación de interfaces y juegos 2D 
  • Metal: API de bajo nivel que controla los gráficos 3D y el sombreado. Además da soporte a motores gráficos externos como Unreal Engine y Unity 


Figura 3: Sesión de ARKit

Una sesión de ARKit se divide en tres partes importantes, la primera, ARConfiguration, controla la configuración de la experiencia de realidad aumentada que se desea en la sesión, actualmente hay 5 configuraciones disponibles:
  • ARWorldTrackingConfiguration: Experiencia AR que permite usar la cámara trasera para el seguimiento mediante la posición y orientación del dispositivo, permitiendo así la detección de planos, hit testing, estimación de luz y detección de imágenes y objetos. 
  • AROrientationTrackingConfiguration: Proporciona una experiencia AR básica que usa la cámara trasera y solo realiza el seguimiento del movimiento del dispositvo. 
  • ARImageTrackingConfiguration: Permite a la sesión realizar el seguimiento de imágenes. 
  • ARFaceTrackingConfiguration: Proporciona una sesión AR que, mediante la cámara fontal, hace el seguimiento del movimiento y expresiones de la cara del usuario. 
  • ARObjectScanningConfiguration: Recoge datos de alta calidad, creando la referencia de un objeto para la detección en otras experiencias AR. 
Por otro lado tenemos ARSession, un objeto que gestiona la cámara y los sensores de movimiento del dispositivo y realiza el procesamiento necesario para la sesión de realidad aumentada.
Por último tenemos ARFrame, que es el fotograma resultante del procesamiento de los datas. Este fotograma contiene información relevante de la imagen capturada, del seguimiento del dispositivo e información del entorno.



En este video podemos observar una pequeña aplicación que mediante una sesión de ARImageTrackingConfiguration entrenada para que detecte la foto de Aura y, al mostrarla en la pantalla del Apple Watch, incluya unos nodos con información extendida de Aura. La aplicación está dividida en tres partes:
  • El modelo 3D de Aura creado mediante SceneKit. Este objeto está construido mediante la unión de varios cilindros de distintos tamaños, que junto a un foco de luz directa y dos de luz ambiente dan el suficiente realismo a la escena. 
  • La “interfaz” de Aura creada mediante SpriteKit. Los paneles vectoriales se colocan en un plano de 1700x500 para dar una sensación de interfaz horizontal que envuelve por los dos lados al reloj. 
  • La sesión de reconocimiento de imágenes. Creada en Swift, y junto a un ARSceneView, tenemos la sesión principal, que carga los elementos anteriores y la ARConfiguration configurada para detectar la imagen de Aura. 

Así, si ejecutamos la aplicación en nuestro dispositivo y apuntamos a la imagen aparecerá la interfaz mostrada en el video.

Espero que haya gustado esta pequeña introducción a ARKit. Si queréis ampliar la información podéis ver los videos de Apple sobre el tema, seguir la documentación oficial y como no, descargar el proyecto que acabamos de crear.

No hay comentarios:

Publicar un comentario

Entrada destacada

Proteger tu cuenta de Google y de Gmail con Latch Cloud TOTP #Latch #Gmail #Google

La semana pasada se liberó la nueva versión de Latch y nuestro compañero Chema Alonso hizo un repaso de todo ello en su artículo Latch...

Otras historias relacionadas

Entradas populares