
Muchos desarrolladores llevan mucho tiempo utilizando AR en sus aplicaciones. Una buena ayuda para esto son las soluciones de terceros como OpenCV o Wikitude. Con el lanzamiento de iOS 11, los programadores tienen acceso al marco del sistema ARKit. Veamos qué tan buenas son estas bibliotecas y cuál debería usarse para su próximo proyecto de realidad aumentada.
ARKit
Las ventajas indudables de ARKit incluyen su natividad. La integración y la configuración solo demoran unos minutos. Xcode amablemente realiza la mitad de las operaciones necesarias para usted, después de lo cual el marco "simplemente funciona". Es muy fácil organizar la interacción entre ARKit y otros marcos del sistema (SpriteKit, SceneKit, Metal, CoreLocation, etc.).
La biblioteca está bien optimizada y aprovecha al máximo las capacidades de hardware de los últimos modelos de iPhone y iPad. Una gran cantidad de cálculos que ocurren debajo del capó, casi sin efecto en el UX. Estoy satisfecho con la precisión con la que el marco reconoce planos y marcadores. Ni la iluminación deficiente ni el movimiento repentino del dispositivo interfieren con esto. Gracias a las tecnologías complementarias de VIO (Visual Inertial Odometry) e IMU (Inertial Measurement Unit), que forman la base de ARKit, los chicos de Apple lograron minimizar los errores de cálculo.
Por supuesto, no sin inconvenientes. En primer lugar, ARKit solo está disponible en dispositivos con iOS 11+, solo es compatible con iPhone 6s y versiones anteriores, iPad Pro (9.7, 10.5 o 12.9). Desafortunadamente, esto puede alienar a los clientes que tienen miedo de perder parte de su público objetivo.
ARKit está diseñado de tal manera que la información sobre los objetos del mundo circundante y la posición del dispositivo en él se calibra constantemente. Debido a esto, al comienzo de la sesión, aunque los datos no son lo suficientemente precisos, se crea una sensación de "inestabilidad" del trabajo, que aún no podrá eliminar. Además, si la sesión es lo suficientemente larga, al parecer menor, los errores en los indicadores de los sensores se acumularán y se harán más notorios.
Al reconocer imágenes, surgen problemas con el posicionamiento del objeto AR, el objeto flota y no se fija claramente en el punto indicado. Un comportamiento similar se observa en el
ejemplo publicado por Apple . Sin embargo, un objeto colocado en un punto dado en el espacio prácticamente no se mueve.
En algunos casos (pequeñas imágenes en blanco y negro de calidad no muy buena) se reconoce el marcador, pero el sistema determina incorrectamente sus coordenadas. Como resultado, el objeto AR se dibuja en el lugar equivocado.
ARKit es muy fácil de aprender, para comenzar, necesita una cantidad mínima de conocimiento. Ya se ha publicado una cantidad bastante grande de artículos de capacitación y ejemplos de código en la Web, y la comunidad es grande y receptiva, por lo que no será difícil encontrar respuestas a las preguntas que surjan en el proceso de escribir código.
OpenCV
La biblioteca de OpenCV escrita en C ++ se distribuye de forma gratuita y le brinda la oportunidad de descargar el
SDK de iOS desde el sitio oficial o compilarlo usted mismo.
Ya en la etapa de presentar a los fanáticos, Swift está esperando una búsqueda fascinante para eliminar los errores de compilación, que amenaza con extenderse durante varias horas. Afortunadamente, las instrucciones paso a paso están disponibles en la Web publicadas por nuestros camaradas que ya han superado el marco intratable (por ejemplo,
OpenCV con Swift, paso a paso ).
Después de que finalmente logre iniciar el proyecto con la biblioteca conectada, surgirá la pregunta de qué hacer a continuación. Quizás decida buscar tutoriales en el sitio web oficial. Los desarrolladores de iOS esperarán tres ejemplos de uso de la versión anterior del marco en proyectos centrados en iOS 8. No hay tantos artículos modernos sobre desarrollo móvil con OpenCV. Aparentemente, esto se debe al hecho de que todos los que quieren dominar esta biblioteca lo han hecho hace mucho tiempo y ya no necesitan explicaciones.
Sin embargo, los principiantes aún tienen la oportunidad de dominar esta, sin duda, una herramienta poderosa. Sin embargo, tomará mucho tiempo y esfuerzo. Al igual que cualquier otra biblioteca de bajo nivel, OpenCV requiere un estudio profundo y reflexivo, un análisis detallado de la documentación, examinando miles de debates en foros en busca de una respuesta a su pregunta y experimentos interminables.
Por cierto, no olvides agregar a esto un poco más de tiempo para restaurar el curso universitario de matemáticas en la memoria, porque OpenCV no te mostrará las fórmulas.
Wikitude
Para empezar, Wikitude es un marco remunerado y de
ninguna manera
barato . La versión gratuita contiene marcas de agua, por lo que no puede usarla para compilaciones de lanzamiento.
Sin embargo, la biblioteca vale la pena. A diferencia de ARKit, es compatible con dispositivos y versiones de sistema incluso más antiguos. El producto está bien documentado, tiene muchos artículos, lecciones y ejemplos de código, por lo que la integración e implementación de las tareas más simples para un programador no preparado tomará solo unas pocas horas.
El alcance principal de la biblioteca es el reconocimiento de marcadores. Como este último, se puede usar cualquier imagen sin un canal alfa. Es cierto que Wikitude solo funciona con formatos nativos. Las imágenes de marcador deben empaquetarse en formato .wtc, los modelos 3D deben convertirse a archivos .wt3. Para ser justos, debe tenerse en cuenta que Wikitude proporciona herramientas de conversión en su sitio web.
En general, el marco se adapta bien a su tarea: se reconocen los marcadores, los objetos AR se colocan donde los planificó, no nadan al cambiar el ángulo de visión o mover la cámara. Publicar una imagen, video o modelo 3D no es difícil, así como para asegurar su interactividad. Se admite el trabajo simultáneo con varios marcadores, pero al configurar las clases de la biblioteca, es mejor limitar su número para mejorar el rendimiento.
Sin embargo, observo que en condiciones de poca luz, así como en el movimiento impreciso del dispositivo, existen problemas con el reconocimiento de marcadores, incluso si se usaron imágenes fuente de alta calidad para crearlos.
Wikitude admite JS y la versión nativa del SDK.
Si elige la versión JS para la integración, prepárese para rechazar el conveniente Swift u Objective-C que le gusta y concéntrese en escribir código JavaScript. Y dado que esto último es bastante doloroso cuando se trabaja en Xcode, instale Sublime o uno de sus sustitutos al mismo tiempo. Y trate de escribir de inmediato, porque el proceso de depuración y corrección de errores no será fácil.
Otro punto se refiere a la optimización. Al interactuar con objetos JS AR durante un período de tiempo prolongado, la versión del marco comienza a disminuir notablemente, fps drena mucho, lo que no es sorprendente.
La versión nativa del SDK, con toda su amabilidad, está prácticamente desprovista de "magia". De hecho, solo le notifica que el marcador es reconocido, informa su identificador y coordenadas en el espacio, después de lo cual le pasa la bandera. Entonces puede usar su herramienta favorita, por ejemplo, OpenGL, para dibujar objetos AR.
Conclusión
Entonces, si usted es un principiante que ha decidido probar suerte en la realidad aumentada, todo depende de su cliente y sus necesidades. Si el cliente no lamenta gastar varios miles de euros en un marco de pago de alta calidad, y no le teme a JavaScript u OpenGL, tome Wikitude. De lo contrario, comience con ARKit. Gracias a numerosos ejemplos y al apoyo de la comunidad, puede implementar rápidamente tareas simples y "probar" esta tecnología. Luego, cuando comiences a entender qué es qué y te acostumbres un poco, será posible asaltar el OpenCV de bajo nivel y conquistar picos previamente inaccesibles.