Han pasado dos semanas desde el final de la conferencia de la WWDC. Se han observado sesiones, se ha vuelto a leer la documentación, se han realizado proyectos de demostración, lo que significa que puede completar toda la información recopilada en un artículo.

En la primera versión de ARKit, era posible rastrear el movimiento del teléfono en el espacio, determinar la cantidad y el calor de la luz alrededor, y también para obtener información sobre planos horizontales. ARKit 1.5, que se lanzó con iOS 11.3, mejoró la calidad de la imagen, agregó la definición de planos verticales, reconocimiento de imágenes 2D estáticas y enfoque automático. Veamos qué se agregó en la versión 2.0.
Guardar y restaurar una tarjeta AR
Se nos dio la oportunidad de guardar el mapa del entorno junto con los objetos espaciados de la realidad aumentada. Al tener una tarjeta, puede inicializarla usando una sesión AR, después de lo cual los objetos colocados previamente aparecerán en los lugares correctos. La tarjeta guardada también se puede transferir al servidor y usar en otros dispositivos.
Se implementa de la siguiente manera: ARSession
tiene el getCurrentWorldMapWithCompletionHandler
, que devuelve ARWorldMap
. La información sobre los puntos de control se almacena dentro de este objeto, con la ayuda de la cual ARKit puede restaurar la coordenada cero de la escena, así como una matriz de ARAnchors
a la que se pueden adjuntar objetos. ARWorldMap
se puede guardar o enviar a alguna parte. Para restaurar un mapa, debe transferirlo al campo initialWorldMap
de ARSessionConfiguration
antes de comenzar la sesión. Después de comenzar, el estado de la sesión cambiará a .limited
con la razón .relocalizing
. Tan pronto como ARKit haya reunido suficientes puntos para la restauración, la coordenada cero se establecerá en la posición correcta y el estado de la sesión cambiará al estado .normal
.
Para un mejor rendimiento, Apple recomienda lo siguiente:
- Escanee la escena desde diferentes ángulos. La matriz de puntos será más grande y más precisa;
- el ambiente debe ser estático y bien texturizado;
- Una serie de puntos debería ser bastante densa.
No necesita supervisar estos parámetros ARFrame
, ya que ahora ARFrame
tiene un campo worldMappingStatus
. Pero debe tenerlos en cuenta al diseñar la aplicación.
Realidad Aumentada Multijugador
El mecanismo de guardado del mapa del entorno permitió sincronizar el sistema de coordenadas entre varios dispositivos. Conociendo la posición de cada uno de los dispositivos en relación con el mapa del entorno, puede crear escenarios para múltiples usuarios.
En la presentación, se mostró el juego SwiftShot, en el que debes disparar desde tu tirachinas al tirachinas de un oponente.

El juego está escrito en Swift + SceneKit. Las acciones del usuario se sincronizan utilizando el marco MultipeerConnectivity . Las fuentes de la aplicación se pueden descargar aquí .
Reflexión ambiental
Al agregar un objeto metálico de realidad virtual a la escena, me gustaría ver en ella un reflejo de los objetos del mundo real. Para hacer esto, ARWorldTrackingConfiguration
un campo environmentTexturing
. Si usa SceneKit
como motor y establece el campo environmentTexturing
en .automatic
, obtendrá el siguiente resultado:

Al recibir la imagen de la cámara, ARKit crea un mapa cúbico con la textura del entorno. La información que no se incluyó en el marco se genera utilizando algoritmos de aprendizaje automático.
Seguimiento de imágenes en movimiento en 2D
En ARKit 1.5, solo ha aparecido el seguimiento de imágenes estáticas. En la segunda versión, se elimina la restricción y ahora puede obtener las coordenadas de las imágenes en movimiento. Funcionalidad similar solía ser proporcionada por el SDK de Vuforia. En la presentación, como un ejemplo de uso, mostraron el reemplazo de fotos en un video en un marco de fotos:

Para un mejor seguimiento, debe usar imágenes contrastantes y bien texturizadas con características distintas. Xcode le avisará si no se cumple este requisito.
Para rastrear imágenes, debe usar ARImageTrackingConfiguration
. La matriz trackingImages
se pasa a la configuración y maximumNumberOfTrackedImages
. Las coordenadas de la imagen se devolverán como ARImageAnchor
.
Seguimiento de objetos estáticos en 3D
También se agregó soporte para el reconocimiento de objetos 3D estáticos. Antes del reconocimiento, el objeto debe ser escaneado. Puedes hacer esto usando una aplicación de Apple . El objeto a escanear debe ser sólido, mate y bien texturizado.
Para rastrear objetos, cree un ARReferenceObject desde un archivo o directorio de recursos y agréguelo a ARWorldTrackingConfiguration.detectionObjects
. Información sobre los objetos que recibirá en el ARFrame
.
Como ejemplo, la presentación mostró la visualización de información sobre la estatuilla en el museo en realidad aumentada.
Seguimiento de la cara
En versiones anteriores, era posible obtener las coordenadas y la rotación de la cara, la malla poligonal de la cara y una variedad de mezclas (51 emociones con un progreso de cero a uno). En la segunda versión, veremos tres innovaciones:
definición de luz direccional.
ARKit 2 utiliza una imagen facial como fuente de información de luz. Con él, puede determinar la intensidad, la temperatura y la dirección de la luz. Esto hará que las máscaras sean más realistas;
seguimiento de idiomas
Se agregó una lengüeta a las tongueOut
, que muestra el [0,1] grado de "altura" de la lengua. Por mi parte, puedo agregar que casi todos mis amigos trataron de mostrar el idioma, a quien le di juego con animoji;
seguimiento ocular
ARFaceAnchor tiene tres nuevos campos: leftEyeTransform
, rightEyeTransform
y lookAtPoint
. Ya hay demos en Internet con ejemplos de uso:
Mejoras generales en la nueva versión:
- la inicialización y definición de planos se han acelerado;
- el seguimiento del teléfono en el espacio y la determinación de los aviones se ha vuelto más preciso;
- la precisión de determinar los límites de los planos con la expansión del plano ha mejorado;
- Soporte de relación de aspecto 4: 3 agregado (ahora este formato se seleccionará por defecto).
Todas las mejoras, excepto la transición a una relación de aspecto 4: 3, se aplicarán a sus aplicaciones automáticamente. Para este último, debe reconstruir la aplicación con el nuevo SDK.
Si la información fue útil para usted, apóyeme con la flecha hacia arriba. Y estoy listo para responder preguntas en los comentarios.