Unity vs SceneKit: que herramienta debería usar para construir su aplicación ARKit

Todo lo que desearía saber antes de crear mi primera aplicación ARKit.

Al iniciar el desarrollo de ARKit, la primera pregunta que casi todo el mundo tiene es ¿qué herramientas debería utilizar para crear mi aplicación de RA? Las dos herramientas más utilizadas parecen ser Unity y SceneKit, pero ¿cuál es mejor? ¿Cuál es más potente, flexible y más fácil de aprender? ¿Cuál tiene más apoyo?

He tenido que resolver la mayoría de estas preguntas yo mismo, al igual que la mayoría de los desarrolladores que han lanzado aplicaciones de RA hasta ahora. Entonces pensé que sería útil profundizar en las principales diferencias entre las dos plataformas para ayudarlo a tomar una decisión más fácil sobre cómo invertir su tiempo.

Si está comenzando con el desarrollo de AR, aquí hay algunas cosas que desearía saber sobre Unity y SceneKit antes de crear mi primera aplicación de AR. Así que aquí va.

Primero, una descripción general rápida:

Unity es un motor de juegos 3D maduro, que se ha relacionado estrechamente con la realidad virtual y la realidad aumentada debido a su fuerte enfoque en el contenido 3D. El lenguaje principal de desarrollo es C #. El desarrollo de ARKit en Unity se realiza con el complemento Unity ARKit que envuelve el SDK de ARKit en scripts C # para un fácil acceso a todas las funciones de ARKit.

SceneKit es la versión de Apple de un motor de juegos 3D para el desarrollo nativo de iOS y viene directamente integrado con Xcode. Los idiomas principales son Swift y Objective C.

¿Es uno de ellos objetivamente mejor?

Al comparar dos productos, la respuesta más frustrante en Internet parece ser "depende". Permítanme comenzar diciendo que, en la mayoría de los casos, encontrará que Unity es la mejor solución para el desarrollo de AR. Sin embargo, hay algunos casos en los que SceneKit gana, y haré todo lo posible para explicar los pros y los contras de cada herramienta para que pueda tomar una decisión informada.

Veamos primero dos escenarios probables para los desarrolladores de aplicaciones de AR en este momento:

  1. Estás creando una aplicación (consumidor, empresa, etc.)
  2. Estás creando un juego o una "experiencia"

Estás creando una aplicación

Si está buscando integrar ARKit en una aplicación iOS existente, no busque más. Utilice SceneKit. SceneKit le permite integrar fácilmente una vista AR en su aplicación sin cambiar nada más en su UX.

Si es un desarrollador experto de iOS con experiencia con XCode, Swift, Cocapods, etc., probablemente debería usar SceneKit. Evitará la curva de aprendizaje de una nueva plataforma y podrá adquirir ARKit SDK con bastante rapidez.

Si está creando una nueva aplicación iOS para consumidores o empresas y le encanta cómo se ven los elementos de la interfaz de usuario de Apple (como botones, gestos y notificaciones), SceneKit es, nuevamente, la mejor opción. Al ser un producto de Apple, SceneKit se integra maravillosamente con XCode y le permite integrar su vista de escena 3D con todos sus elementos de interfaz de usuario 2D incorporados de una manera bastante perfecta.

La regla general aquí es que si el contenido 3D no es el enfoque central de su aplicación y le preocupan las plantillas de UX de iOS, elija SceneKit.

La advertencia es que si le importa el desarrollo rápido multiplataforma en iOS y Android, o si tiene mucho contenido 3D como modelos animados, efectos especiales y física planificada para su aplicación, debería considerar Unity. Es más maduro como un kit de herramientas de desarrollo 3D multiplataforma debido a sus raíces como motor de juego.

Estás construyendo un juego

Si está creando un juego o una experiencia inmersiva, especialmente uno con mucho contenido visual en 3D como animaciones de personajes, mapas de juegos, efectos especiales y simulaciones de física, Unity es definitivamente la mejor opción.

Unity está lleno de toneladas de métodos integrados que te permiten hacer cualquier cosa que puedas pensar. Si no está integrado, probablemente esté disponible en la tienda Unity Asset. Debido a estos factores, Unity te ahorra mucho tiempo en comparación con SceneKit, donde podrías pasar mucho tiempo construyendo y depurando funciones básicas en lugar de construir tu juego.

Además, Unity te permite realizar una compilación cruzada rápida a varias plataformas diferentes, por lo que puedes migrar tu juego ARKit a Android con solo unos pocos cambios en las bibliotecas de seguimiento de AR reales. (Esto también cambiará pronto: Unity está construyendo un XR SDK multiplataforma que abstrae las bibliotecas AR de bajo nivel para un puerto aún más rápido). La velocidad de desarrollo es a menudo un factor bastante importante para los desarrolladores, y tener que reescribir su aplicación para diferentes plataformas puede ser un costo bastante alto.

Criterios de toma de decisiones

Si no encaja en los dos escenarios anteriores, o si no está seguro de si está creando un juego, una aplicación, una aplicación ludificada o un juego aplicado, aquí hay una comparación general basada en algunos criterios comunes para desarrolladores de AR preocuparse.

1. Desempeño

En general, una aplicación o un juego creado con SceneKit tendrá un tamaño de archivo más pequeño y puede ser más eficaz en algunos casos. Cuando usa Unity, está incorporando un motor de física completo en su aplicación. Entonces, si no está utilizando una computación 3D pesada, es posible que esté mejor con SceneKit.

Sin embargo, tenga en cuenta que todo el código de la cámara y otros módulos AR del complemento de Unity están escritos en Objective C, por lo que son muy similares en términos de eficiencia. Son principalmente las escenas pesadas en 3D y cualquier ineficiencia en el diseño de su proyecto lo que lo ralentizará. Hay un buen hilo sobre el tema aquí.

El veredicto: Unity y SceneKit son bastante iguales aquí.

2. Compatibilidad de formato 3D

Personalmente, me ha costado mucho importar modelos y animaciones 3D en SceneKit. En general, cuando obtenga contenido 3D para su juego o aplicación, tenga en cuenta que SceneKit lo limitará a usar archivos Collada (.dae) o Wavefront (.obj). Además, ocasionalmente he visto que algunos archivos .obj no se procesan correctamente en Scenekit.

Unity es mucho mejor para manejar cualquier tipo de formato 3D. Con Unity, no solo puede importar archivos .fbx (modelos 3D que incluyen animaciones), sino que también puede cargar escenas directamente desde herramientas de diseño 3D como Blender.

El veredicto: +1 para Unity aquí.

3. Facilidad de depuración

Unity es un IDE muy visual, con increíbles herramientas de depuración visual que te permiten ver e interactuar con todo el contenido 3D en tu escena, durante el tiempo de ejecución. Si bien necesita ejecutar su aplicación directamente en un dispositivo iOS para probar y depurar correctamente los problemas de ARKit, puede usar herramientas como Unity ARKit Remote para crear un prototipo de las interacciones 3D en su aplicación directamente en el editor de Unity.

SceneKit, por otro lado, solo proporciona depuración de consola dentro de XCode. Si bien algunos desarrolladores prefieren esto, podría obstaculizar la prueba rápida de interacciones 3D en su aplicación o juego.

El veredicto: +1 para Unity aquí.

4. Disponibilidad de documentos, tutoriales y ejemplos

Unity tiene recursos increíblemente vastos de documentación, tutoriales y código de muestra para casi cualquier cosa que pueda construir. Debido a su gran comunidad de desarrolladores, también hay muchos tutoriales creados por desarrolladores.

Por supuesto, la comunidad de desarrolladores de iOS también es bastante grande. Si bien ARKit en sí puede ser nuevo, el gran tamaño de la comunidad ha dado como resultado una buena cantidad de muestras, publicaciones de blog, tutoriales en video y cursos en línea para facilitar su transición a un desarrollador de AR.

En términos de problemas de contenido 3D como geometría y matemáticas 3D, Unity gana porque la gran comunidad de desarrolladores de juegos de Unity se ha asegurado de que la mayoría de las preguntas que tengas tendrán una respuesta en algún lugar de Internet.

Si está buscando comenzar, aquí están mis videos tutoriales introductorios favoritos para Unity y SceneKit.

Unidad : crea una animación de zombies andantes.

Scenekit : crea y visualiza objetos simples en 3D.

El veredicto: +0.5 para Unity aquí

5. Velocidad de desarrollo

Muchos desarrolladores informan que la curva de aprendizaje de Unity es más corta que Scenekit. Probablemente esto se deba a que puede aprender a desarrollar contenido 3D de una manera mucho más fácil en Unity, antes de pasar al desarrollo de AR.

Desde una perspectiva técnica, un juego de realidad aumentada es solo un juego en 3D con una cámara de fondo. Dividir su proceso de aprendizaje de esta manera hace que las cosas sean mucho más intuitivas.

El otro gran factor aquí es el desarrollo multiplataforma. Si bien no puede crear directamente un proyecto de Unity ARKit en Android, al menos puede reutilizar el contenido 3D y las interacciones que ha creado en cualquier plataforma. Solo necesita conectar un nuevo Administrador de cámara por dispositivo. Unity lo hace aún más fácil ahora al abstraer las características específicas de hardware como ARKit y ARCore con su nuevo XR SDK.

El veredicto: +1 para Unity aquí

Conclusión

En general, si está creando un juego, Unity es casi siempre la mejor solución.

Si está creando una aplicación, debe considerar si valora el desarrollo nativo de iOS y los elementos de la interfaz de usuario de Apple sobre el desarrollo multiplataforma. Si su aplicación tiene interacciones 3D mínimas, SceneKit será la mejor opción. De lo contrario, quédese con Unity.

Otro consejo que puedo darte es que no dediques demasiado tiempo a esta decisión. Empiece con uno. Perderá mucho menos tiempo probando una herramienta y cambiando si siente que no está funcionando lo suficientemente bien. Como desarrollador de iOS AR, tanto XCode como Unity eventualmente serán conjuntos de habilidades útiles para adquirir.

Para resumir, aquí hay una buena cita del subreddit ARKitCreators.

“Una regla general decente sería usar Swift si su aplicación es relativamente simple, o si las interacciones AR y 3D no son el núcleo de lo que está tratando de construir. Y usa Unity para lo contrario ".

¿Quién soy?

Soy el CEO y cofundador de Placenote, un SDK que brinda a las aplicaciones móviles de AR la capacidad de bloquear permanentemente el contenido de AR en cualquier ubicación física en el mundo real. Entonces, si, por ejemplo, estuviera creando una aplicación como navegación interior, una aplicación de graffiti AR o incluso un juego multijugador, debería consultar Placenote SDK.

Placenote SDK tiene un código de muestra disponible para desarrolladores de Unity y SceneKit, así que siéntase libre de usar nuestras aplicaciones de muestra para ayudarlo a tomar la decisión de su plataforma.

Puede instalar el SDK aquí

Referencias

Compilé este artículo con la ayuda de estos múltiples hilos increíbles de Quora y Reddit.

  1. ¿Cuáles son los pros y los contras de crear aplicaciones de realidad aumentada en Swift vs Unity?
  2. Swift vs Unity
  3. Quiero crear aplicaciones AR, ¿debo aprender ARKit primero o Unity?
  4. ¿Es más fácil usar SceneKit de iOS o el motor de juego de Unity para desarrollar un proyecto ARKit de iOS 11?