Crea un juego de realidad aumentada estilo Pokémon GO con Vuforia

Lo que vas a crear

1. Introducción

En la primera publicación de esta serie, hablamos sobre lo increíble que es Vuforia para crear experiencias de Realidad Aumentada, y ahora estamos listos para practicar estos conceptos en una aplicación real. En este tutorial, comenzaremos a jugar con Realidad Aumentada utilizando Vuforia en Unity 3D. Aprenderemos cómo configurar Vuforia y comenzar a desarrollar un juego AR desde cero, adoptando una lógica similar a la utilizada en Pokémon GO!

No será necesario tener experiencia previa en Unity o Vuforia para seguir este tutorial..

Si desea profundizar, ¿por qué no aprender sobre uno de los conceptos más fundamentales de AR, los marcadores, en nuestro breve curso?

1.1. Recapitulación rápida: ¿Cómo funciona Vuforia??

Vuforia utiliza la alimentación de la cámara del dispositivo combinada con los datos del acelerómetro y el giroscopio para examinar el mundo. Vuforia utiliza la visión artificial para comprender lo que "ve" en la cámara para crear un modelo del entorno. Después de procesar los datos, el sistema puede ubicarse más o menos en el mundo, conociendo sus coordenadas: dónde está arriba, abajo, izquierda, derecha, etc..

Si no sabes de qué se trata Vuforia, mira la primera publicación de esta serie..

1.2. Que aprenderemos?

Este tutorial está dividido en dos partes. En este, veremos algunas de las particularidades de Vuforia en Unity 3D, aprenderemos cómo configurar el entorno y también comenzaremos a desarrollar un pequeño juego de AR llamado Shoot the Cubes. Prestaremos especial atención a la ARCamera Prefab, una de las partes más importantes de Vuforia en Unidad..

En la segunda parte, continuaremos desarrollando el juego Shoot the Cubes, agregando interactividad y haciéndolo más interesante. Esta sección no profundizará en las particularidades de Vuforia, ya que la idea será explorar algunas posibilidades que ofrece Unity para crear una experiencia atractiva de Realidad Aumentada..

2. Vuforia sobre la unidad.

Unity es un motor de juego popular y poderoso que es fácil de usar y puede compilar juegos para múltiples plataformas. Hay algunas ventajas en el uso de Unity para crear experiencias AR con Vuforia. Es posible apuntar a todos los sistemas compatibles de Vuforia, incluidas las gafas inteligentes. Es más fácil de usar, gracias a los Prefabs proporcionados por el SDK de Vuforia. Usando solo Unity es posible acceder a todas las funciones disponibles en Vuforia.

2.1. Prefabricados Vuforia

Puede acceder a todas las funciones de Vuforia en Unity utilizando los prefabs de Vuforia. Todo lo que tienes que hacer es arrastrar el objeto al escenario y configurarlo. Como su nombre lo indica, las prefabs son como plantillas para crear y clonar objetos Unity completos con componentes y propiedades. Por ejemplo, el ImageTarget Representa imágenes que pueden ser utilizadas como objetivos. Echemos un vistazo a los prefabs de Vuforia disponibles en Unity:

  • ARCamera: La prefabricada más importante. Administra la experiencia general de AR, controla la calidad de renderización, define el centro del mundo, la cámara del dispositivo que se va a utilizar, los objetivos máximos que se rastrearán, etc. En este tutorial concentraremos nuestros esfuerzos en entender cómo usar este objeto..
  • Objetivos: Todos los objetivos de Vuforia tienen su propio prefab: ImageTarget, Multirruta, Objetivo del cilindro, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Esos objetivos serán reconocidos por el ARCamera e iniciar una acción, como exhibir un objeto 3D o animación..
  • CloudRecognition: Se utiliza para acceder a los objetivos definidos en el sistema de nube Vuforia.
  • SmartTerrain y Apuntalar: Esos objetos se usan en la característica Smart Terrain.
  • Reconocimiento de texto y Palabra: Prefabs utilizados en la característica de reconocimiento de texto.
  • Botón virtual: Vuforia puede entender los objetivos como botones que el usuario puede presionar físicamente. Este prefab le ayudará a utilizar este recurso..

3. Creando nuestra primera experiencia AR

El juego que desarrollaremos es simple, pero ilustra bien los principios de Realidad Aumentada, y nos enseñará algunos de los fundamentos de Vuforia. El objetivo del juego es encontrar y disparar a los cubos que vuelan por la habitación. El jugador buscará los cubos alrededor de su dispositivo y 'tocará' para disparar en las cajas. No nos preocuparemos por el puntaje, el nivel ni nada de eso, pero usted puede ampliar estos aspectos del juego fácilmente..

3.1. Preparando la Unidad para Vuforia

Antes de empezar a jugar, tendremos que preparar Unity para Vuforia. El proceso es bastante simple, y básicamente necesitamos importar el paquete SDK de Vuforia y agregar un ARCamera prefabricado para nuestro proyecto.

  • Crea una cuenta de desarrollador en Vuforia..
  • Inicie sesión y descargue el SDK de Vuforia para Unity.
  • Abre Unity y crea un nuevo proyecto llamado "Shoot the Cubes".
  • Después de que se abra la ventana del proyecto Unity, vaya a Activos> Importar paquete> Paquete personalizado y seleccione el SDK descargado.
  • Importar todo.
  • Eliminar el Cámara objeto en el Jerarquía ventana.
  • Vaya al Administrador de licencias en el portal de desarrolladores de Vuforia y cree una nueva licencia con su cuenta de desarrollador.
  • Copia la clave de licencia.
  • De vuelta a la unidad, en el Proyecto ventana, ir a Activos> Vuforia> Prefabs> ARCamera.Seleccione el elemento y arrástrelo a la Jerarquía ventana.
  • Con ARCamera seleccionado, en el Inspector panel, ir a Comportamiento Vuforia (Guión), encontrar el campo Clave de licencia de la aplicación, y pega la licencia que creaste en el portal de desarrolladores de Vuforia.
  • Haga clic en el Aplicar botón cerca de la parte superior de la Inspector panel para agregar la clave de licencia a todos ARCamera prefabs en este proyecto.

3.2. Probando si Vuforia está funcionando

Es hora de comprobar si el entorno está funcionando correctamente.. 

Usando la cámara de tu computadora

Si tiene una cámara web en su computadora, puede presionar el botón de reproducción de Unity para verificar si ARCamera está trabajando. Será posible reconocer objetivos usando la webcam; sin embargo, no será posible utilizar ningún dato del sensor para probar su experiencia AR. Si la alimentación de la cámara no muestra el Juego En la ventana, existe la posibilidad de que su cámara no sea compatible con el perfil de cámara web provisto por ARCamera

Configuración de la aplicación para ejecutar en un dispositivo

La mejor manera de probar su aplicación Vuforia es directamente en el dispositivo. Compilaremos el proyecto para Android, pero los mismos pasos se aplicarían a los dispositivos iOS.

  • Primero, necesitamos guardar la escena en la que estamos trabajando. Ir Archivo> Guardar escena.
  • Selecciona el Bienes carpeta y crear una nueva carpeta llamada Escenas.
  • Guardar esta escena como DisparaLos cubosMain.
  • Ir Archivo> Crear configuración.
  • Seleccionar Androide y haga clic en Plataforma de conmutación. Si esta opción está desactivada, tendrás que descargar el SDK de Unity deseado para el dispositivo.
  • Haga clic en Ajustes del jugador y configurar el proyecto en el Inspector ventana.
  • Preste atención a algunas opciones: Apague la API de gráficos automáticos y asegúrate de que OpenGLES2 se selecciona para el API de gráficos opción.
  • Escribe el Identificador de paquete.
  • Para dispositivos Android, asegúrese de que el Nivel mínimo de API seleccionado es API 9 o mayor. También necesitarás usar ARMv7 Para el Filtro de dispositivo opción.
  • Si siguió los pasos correctamente, el proyecto está listo para ser construido. Sin embargo, si esta es la primera vez que compila un proyecto de Unity para Android o iOS, debe configurar Unity para esos dispositivos. Sigue esta guía para Android y esto para iOS..
  • Para ejecutar el proyecto, vuelve a Configuraciones de compilación y haga clic en Construir y ejecutar.

Después del edificio, la aplicación se instalará en su dispositivo. Por ahora, todo lo que debe esperar es ver la alimentación de la cámara en su dispositivo sin ningún error. Si tienes eso, todo funcionó correctamente..

3.3. Usando la Prefabricada ARCamera

El objetivo del juego Shoot the Cubes es buscar y disparar cubos voladores utilizando la cámara y los sensores del dispositivo. Este enfoque es similar al utilizado en Pokémon GO. Para lograr esto, solo necesitaremos usar el Vuforia. ARCamera casa prefabricada.

Hay un montón de guiones adjuntos a la ARCamera. Por ahora, el único que deberás entender es el Comportamiento vuforia guión. Echemos un vistazo a sus opciones:

  • Clave de licencia de la aplicación: Donde se debe insertar la clave de licencia de Vuforia.
  • Modo de dispositivo de cámara: Controla la calidad de render de los objetos..
  • Máximo de imágenes seguidas simultáneas: Define los objetivos máximos seguidos al mismo tiempo. Vuforia no recomienda más de cinco a la vez..
  • Max objetos seguidos simultaneamente: Define los objetos máximos seguidos al mismo tiempo. De nuevo, Vuforia no recomienda más de cinco al mismo tiempo..
  • Cargar objetos de objetos en la detección: Carga el objeto asociado con el objetivo tan pronto como se detecta el objetivo.
  • Dirección de la cámara: Elija qué dispositivo de cámara utilizar.
  • Espejo de fondo de video: Define si la alimentación de la cámara debe ser reflejada.
  • Modo de centro de palabras: La opción más relevante para nuestro proyecto. Define cómo el sistema debe ubicar el centro del mundo.. 
    • SPECIFIC_TARGET: Usa un objetivo específico como referencia al mundo..
    • FIRST_TARGET: El primer objetivo detectado será usado como una referencia al mundo..
    • CÁMARA: Utiliza la cámara como punto de referencia para el mundo..
    • DEVICE_TRACKING: Utiliza el sensor del dispositivo como referencia para establecer las posiciones del mundo. Esta es la opción que tenemos que elegir para nuestro pequeño proyecto..

Por ahora, todo lo que necesitas cambiar en el ARCamera es el Modo de centro de palabras. Haga clic en el ARCamera elemento en la jerarquía y en el Inspector panel, cambiar el Modo centro mundial a DEVICE_TRACKING.

3.4. Usando el sensor del dispositivo para encontrar el centro del mundo

Agreguemos un cubo al escenario y probemos si la ARCamera está funcionando correctamente.

  • Asegúrate de eso ARCameraLa posición y la rotación se establecen en 0 en los ejes X, Y y Z.
  • Crear un Cubo objeto de Objeto de juego> Objeto 3D> Cubo.
  • Mueve el cubo Posición sobre el Z eje a 10 y 0 sobre el X y Y.
  • Escala el objeto a 2 sobre el XY, y Z eje.
  • Girar el cubo 45 grados en el X y Y eje.
  • Puede presionar el botón de reproducción para verificar si el cubo está colocado correctamente.
  • Una vez que esté seguro de que el cubo está colocado correctamente, vuelva a generar el proyecto y pruébelo en el dispositivo. Para construir, ve a Archivo> Construir y ejecutar.

Tendrás que mirar a tu alrededor girando tu dispositivo para encontrar el cubo. Notará que el objeto permanece inmóvil en el mismo lugar, incluso después de que gire el dispositivo para alejarlo. Es como si el cubo 'existiera' en el mundo real, pero solo se puede ver con la cámara del dispositivo.

3.5. Configuración de la posición de los elementos según ARCamera

El primer problema con nuestra aplicación hasta ahora es que el cubo puede aparecer en cualquier lugar y el usuario tendrá que mirar alrededor para encontrarlo. Dado que el centro del mundo se define de acuerdo con los sensores del dispositivo, no podemos estar seguros de la posición real de los elementos. Esto se debe a que el usuario puede comenzar con el dispositivo en cualquier orientación y porque la forma en que se mide la rotación varía de un dispositivo a otro..

Para asegurarse de que las entidades AR comiencen a la vista del usuario, el enfoque más fácil es esperar a que Vuforia defina el centro del mundo y encuentre el ARCamera rotación y luego para organizar la ubicación inicial de los elementos de acuerdo con esa orientación.

Vamos a crear un Gerente de Spawn Definir la posición de los cubos a engendrar. El gerente definirá su posición de acuerdo con el ARCamera rotación. Esperará hasta que se establezca la rotación, y luego se moverán 10 unidades al frente de la cámara.

  • Crea dos objetos vacíos con Objeto de juego> Crear vacío. Haga clic derecho en uno de los objetos que acaba de crear y cámbiele el nombre. _SpawnController.
  • Cambia el nombre del otro objeto vacío a _GameManager.
  • En el Proyecto ventana, seleccione la Bienes carpeta y crear una nueva carpeta llamada Guiones.
  • En el Guiones carpeta, crea un script de C # llamado SpawnScript.
  • Arrastrar el SpawnScript al _SpawnController.
  • Doble click en SpawnScript para editarlo.

Primero vamos a añadir el paquete Vuforia..

utilizando UnityEngine; utilizando System.Collections; // Tendremos que usar el paquete Vuforia para // asegurarnos de que todo funciona correctamente con Vuforia; SpawnScript de clase pública: MonoBehaviour 

Acceder ARCamera, utilizar Cámara.main. Vamos a crear una función para obtener la posición de la cámara y configurar el cubo para que se genere 10 unidades hacia adelante desde este punto.

clase pública SpawnScript: MonoBehaviour // Defina la posición si el objeto // de acuerdo con la posición ARCamera private bool SetPosition () // obtiene la posición de la cámara Transform cam = Camera.main.transform; // establece la posición 10 unidades hacia adelante desde la posición de la cámara transform.position = cam.forward * 10; devuelve verdadero 

Cambiaremos la posición solo una vez desde la comienzo función. Cambiar de posición es una coroutina que esperará un poco de tiempo antes de establecer la posición.

 privado bool mPositionSet; void Start () // Definición de la posición de inicio StartCoroutine (ChangePosition ());  // Usaremos un Coroutine para dar un poco de // retraso antes de establecer la posición privada IEnumerator ChangePosition () rendimiento devolver nuevo WaitForSeconds (0.2f); // Defina la posición de Generación solo una vez si (! MPositionSet) // cambie la posición solo si Vuforia está activa si (VuforiaBehaviour.Instance.enabled) SetPosition ();  

Probemos el guión:

  • De vuelta en la unidad, haga clic en el _SpawnController objeto y uso Objeto de juego> Objeto 3D> Esfera insertar una esfera dentro _SpawnController
  • Seleccione la esfera y asegúrese de que su posición esté establecida en 0 en los ejes X, Y y Z. 
  • Ahora vamos a superponer el cubo y _SpawnController Así podrás notar la importancia del guión. Seleccionar _SpawnController y establezca su posición en 0 en los ejes X e Y y en 10 en el eje Z, la misma posición que el cubo. 

Los elementos comienzan superponiéndose; Sin embargo, una vez que compile y ejecute la aplicación en un dispositivo, verá que _SpawnController y su esfera aparecerá frente a la cámara, y el cubo estará en otro lugar. ¡Adelante, pruébalo! Asegúrese de que está mirando el dispositivo justo cuando se inicia la aplicación.

4. Conclusión

Enhorabuena, has creado tu primera experiencia de Realidad Aumentada. Sí, es un poco duro, pero está funcionando! En este tutorial, aprendió a usar la prefababra principal de Vuforia en Unity, el ARCamera. También aprendió cómo configurarlo y cómo usar los sensores del dispositivo para crear la ilusión de que un objeto virtual se inserta en el mundo.

4.1. Que sigue?

En el siguiente tutorial mejoraremos este principio para crear un juego real y una experiencia más atractiva. Continuaremos desarrollando el juego Shoot the Cubes, agregando algo de interactividad y explorando las posibilidades de Unity para crear un juego de AR interesante. Haremos que los cubos aparezcan y volarán, y dejaremos que el jugador los busque y los destruya disparando un láser desde el dispositivo..

Te veo pronto!

Gracias especiales por la vector de imagen diseñado por Freepik, licenciado bajo Creative Commons CC BY-SA.