Tabla de contenido:

Detección del plano de tierra de Vuforia 7 de realidad aumentada: 8 pasos
Detección del plano de tierra de Vuforia 7 de realidad aumentada: 8 pasos

Video: Detección del plano de tierra de Vuforia 7 de realidad aumentada: 8 pasos

Video: Detección del plano de tierra de Vuforia 7 de realidad aumentada: 8 pasos
Video: Crea una aplicación de realidad aumentada sin marcadores creando portales virtuales. 2024, Mes de julio
Anonim
Detección de plano de tierra Vuforia 7 de realidad aumentada
Detección de plano de tierra Vuforia 7 de realidad aumentada
Detección de plano de tierra Vuforia 7 de realidad aumentada
Detección de plano de tierra Vuforia 7 de realidad aumentada

El SDK de realidad aumentada de Vuforia para Unity 3D usa ARCore y ARKit para detectar planos terrestres en AR. El tutorial de hoy usará su integración nativa en Unity para crear una aplicación AR para Android o IOS. Haremos que un automóvil caiga del cielo al suelo, y sus puertas se abrirán automáticamente cuando nos acerquemos. También repasaremos cómo hacer videos en AR. Para continuar, necesitará Unity 3D instalado en su computadora (es gratis). Estas instrucciones son para principiantes totales, ¡así que repasaremos todo en detalle!

La mejor parte de SLAM de Vuforia es la cantidad de dispositivos IOS y Android que admite. Puede encontrar una lista completa de dispositivos aquí:

library.vuforia.com/articles/Solution/grou…

Paso 1: Inicie un nuevo proyecto

Inicie un nuevo proyecto
Inicie un nuevo proyecto

Descarga Unity 3D desde aquí si aún no lo tienes:

Asegúrese de instalar el soporte para Vuforia Augmented Reality y Android o IOS, según el dispositivo que tenga.

Abre Unity y comienza un nuevo proyecto de Unity, llámalo como quieras.

Primero, vamos a configurar la aplicación para que no se nos olvide. Por lo tanto, guarde la escena y llámela "principal".

Vaya a archivo, configuración de compilación y cambie su plataforma de compilación a Android o IOS. Navegue a la configuración de XR en la configuración del reproductor y verifique Vuforia Augmented Reality Supported.

Si está en Android, no tendrá que hacer nada más, pero en IOS vaya a otras configuraciones y asegúrese de ingresar algo para su identificador de paquete. Utilice el formato "com. YourCompanyName. YourAppName".

Ingrese cualquier cosa para la descripción del uso de la cámara y cambie la versión de compilación mínima de destino a al menos 9.0.

Cierre eso y ahora configuremos todo lo demás.

Paso 2: Configuremos Vuforia

Configuremos Vuforia
Configuremos Vuforia

Ahora, configuremos todo.

Vaya a gameobject en el menú superior y haga clic en ARCamera. Ahora elimine la cámara principal de su escena.

Seleccione ARCamera y, en el lado derecho del inspector, haga clic en Abrir configuración de Vuforia. Haga clic en la colección de conjuntos de datos y desmarque todo porque no estamos usando ningún objetivo de imagen aquí.

Haga clic en el rastreador de dispositivos y haga clic en rastrear la pose del dispositivo. Cambie el seguimiento de rotacional a posicional.

Ahora vuelve a la pestaña del objeto del juego y haz clic en Vuforia, Ground Plane y Plane finder. Aquí se encuentran los guiones que encuentran nuestro plano de tierra.

Lo último que necesitamos es la etapa de plano de tierra, así que vaya al objeto del juego nuevamente en el menú superior, haga clic en Vuforia, Plano de tierra y elija Etapa de plano de tierra. Ahora todo lo que tengamos que ver con esto se mostrará en AR.

Paso 3: agregue un nuevo script

Agregue un nuevo guión
Agregue un nuevo guión
Agregue un nuevo guión
Agregue un nuevo guión

El comportamiento predeterminado de esta detección de plano de tierra es colocar un nuevo objeto cada vez que presiona en la pantalla. Lo que queremos es simplemente reposicionar el objeto cada vez que presione en la pantalla. Así que haga clic derecho en su carpeta de activos y cree un nuevo script C #. Llámelo "DeployStageOnce" y reemplace todo con este código:

usando el sistema;

usando UnityEngine; usando Vuforia; DeployStageOnce de clase pública: MonoBehaviour {AnchorStage de GameObject público; privado PositionalDeviceTracker _deviceTracker; Private GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage debe especificarse"); regreso; } AnchorStage. SetActive (falso); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (resultado de HitTestResult) {if (resultado == nulo || AnchorStage == nulo) {Debug. LogWarning ("La prueba de acierto no es válida o AnchorStage no se ha establecido"); regreso; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resultado); if (ancla! = nulo) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (verdadero); } if (_previousAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = anchor; }}

Para asegurarnos de que este script se use, debemos llamar a la función OnInteractiveHitTest (), así que regrese a Unity y haga clic en el objeto de juego del buscador de aviones. Cambie el modo de Automático a Interactivo. Arrastra el guión que acabamos de hacer al objeto del juego del buscador de aviones. Elimine el script ContentPositioningBehavior. Verá un lugar para un objeto de juego en el script DeployStageOnce, arrastre el buscador de aviones hasta allí y busque este script, elija la función OnInteractiveHitTest de la parte superior de la lista. ¡Ahora se llamará a nuestra función cada vez que el usuario haga clic en la pantalla!

Paso 4: Agreguemos el auto

Agreguemos el auto
Agreguemos el auto

Descargue este modelo 3D de automóvil gratuito desde aquí (asegúrese de obtener la versión.obj):

www.turbosquid.com/modelos-3d/max-exterior-…

Además, descargue este sonido porque lo tocaremos cuando el auto golpee el suelo:

freesound.org/people/PaulMorek/sounds/1967…

Descomprima ambos archivos y arrástrelos a su carpeta de activos.

Haga clic en el automóvil y mire a la derecha, cambie Usar materiales incrustados para usar materiales externos (heredado) en el menú desplegable en la parte superior. Ahora podremos cambiar el color de todos los materiales del coche.

Arrastra el coche al escenario de tu plano de tierra convirtiéndolo en un niño. Cambie la escala a.035 en x, y y z.

Ahora revise cada uno de los objetos del juego infantil de coches y cambie sus materiales al color que desee.

Agregue un componente de cuerpo rígido al objeto de juego raíz del automóvil y también agregue un colisionador de cajas, escale para que cubra todo el automóvil. También agregue un colisionador de caja a la etapa del plano de tierra y escale para que sea un par de veces más ancho que la etapa del plano de tierra. De esta manera, podemos dejar caer el coche del cielo y golpeará el suelo utilizando el motor de física integrado de Unity.

Paso 5: Pon el coche en el cielo

Pon el coche en el cielo
Pon el coche en el cielo

Agregue un componente de fuente de audio al objeto del juego raíz del automóvil, arrastre el sonido del choque del automóvil a su lugar de clip de audio.

Ahora tenemos que hacer un guión que pondrá el automóvil en el aire cuando el usuario presione la pantalla y luego reproduzca el sonido del choque cuando el automóvil golpee el suelo. Entonces, haga clic derecho en la carpeta de activos y cree un nuevo script C # y llámelo "CarController".

Reemplace todo el código allí con esto:

usando System. Collections;

utilizando System. Collections. Generic; usando UnityEngine; CarController de clase pública: MonoBehaviour {bool privado soundPlayed = false; // La actualización se llama una vez por cuadro void Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition + = new Vector3 (0, 10, 0); transform.eulerAngles + = new Vector3 (5, 20, 5); soundPlayed = falso; } IEnumerator DelayPlaySound () {rendimiento devolver nuevo WaitForSeconds (.2f); GetComponent (). Play (); }}

Agregue la función MoveCar al evento OnInteractiveHitTest como en la imagen de arriba. Ahora se llamará cuando el usuario haga clic en la pantalla.

Paso 6: Puertas Lambo

Puertas Lambo
Puertas Lambo

Entonces, si expande el objeto del juego de autos y encuentra las puertas, notará que ambas puertas son una sola malla. Si queremos abrir las puertas, nuestra única opción serán las puertas Lambo que se abran verticalmente. Para que esto funcione, primero debemos cambiar su punto de pivote.

Haz un objeto de juego vacío que sea un hijo del automóvil. Arrastra las puertas y conviértelas en hijos de este nuevo objeto de juego. Mueva el objeto del juego principal al lugar donde debería estar el punto de pivote, junto a las bisagras de la puerta. Ahora vuelva a colocar las puertas para niños en su lugar. Ahora, cuando giramos la puerta principal, el punto de pivote está en el lugar correcto.

Vamos a hacer un guión que abra las puertas cuando te acerques al auto, pero antes de hacerlo, necesitamos una forma de "desencadenar" el evento. Agregue un colisionador de cajas al objeto del juego principal de la puerta y escale para que pase un poco por encima del automóvil en ambas direcciones. Marque "isTrigger". Ahora agregue un colisionador de cajas a la cámara principal y escale apropiadamente. También marque "isTrigger". Agregue un componente de cuerpo rígido a su cámara y desmarque "useGravity". Con su cámara seleccionada, cambie su etiqueta a "MainCamera" en la parte superior del inspector.

Agregue un nuevo script llamado "LamboDoorBehavior" y agregue el código a continuación. Arrastra el guión al padre de tu puerta.

usando System. Collections;

utilizando System. Collections. Generic; usando UnityEngine; LamboDoorBehavior de la clase pública: MonoBehaviour {currAngle flotante privado = 0; flotador privado deseado Ángulo = 0; // La actualización se llama una vez por cuadro void Update () {currAngle = Mathf. LerpAngle (currAngle, deseadoAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } puertas abiertas abiertas públicas () {ángulo deseado = 60f; } CloseDoors public void () {ángulo deseado = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerSalir (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Este script hará que sus puertas se abran lentamente cuando las cierre en AR usando la función Lerp () en unidad que interpola entre dos puntos (o en este caso dos ángulos).

Paso 7: Reproducción de video en AR

Reproducción de video en AR
Reproducción de video en AR
Reproducción de video en AR
Reproducción de video en AR

Lo último que tenemos que hacer es reproducir el video en AR.

Haga clic con el botón derecho en cualquier objeto del juego que sea hijo de su automóvil y cree un objeto 3D, Quad. Esto asegurará que el quad sea un hijo de su automóvil. Coloque y cambie el tamaño de este quad de manera que quepa dentro del tablero de su automóvil y parezca que se supone que debe estar allí. En esto es en lo que vamos a reproducir el video.

Agregue un componente de reproductor de video a su quad. Cambie la fuente a URL y busque un enlace fijo a un archivo. MP4 o arrastre un archivo de video a su carpeta de activos y luego arrastre ese clip a la ranura vacía. Si desea transmitir un video desde una URL, Instragram es una excelente fuente. Haga clic derecho en cualquier video de Instagram en Google Chrome y haga clic en inspeccionar. Encuentre el div que contiene el video y copie el enlace desde allí (tengo este método en la foto de arriba).

Asegúrate de comprobar el bucle si quieres que se reproduzca más de una vez. Agregue un componente de fuente de audio a este objeto de juego y cambie la fuente de salida a fuente de audio en el reproductor de video. Arrastre su fuente de audio recién creada a esa ranura.

¡Finalmente hemos terminado!

Paso 8: ¡Pon la aplicación en tu teléfono

¡Pon la aplicación en tu teléfono!
¡Pon la aplicación en tu teléfono!

Si está compilando para Android, puede ir al archivo y presionar compilar y ejecutar con su teléfono enchufado.

Si está construyendo en un iPhone o iPad, asegúrese de descargar Xcode de la tienda de aplicaciones. Además, regístrese para obtener una cuenta de desarrollador de Apple gratuita en www.apple.developer.com. Vaya al archivo y presione construir. Abra el archivo que se creó a partir de Xcode y conecte su teléfono. Elija su equipo de desarrollo y presione el botón de reproducción.

Puede que tengas que mover la cámara un poco, pero dale un segundo y toca la pantalla y deberías ver tu coche caer del cielo al suelo. ¡Ahora puede entrar y ver la reproducción de su video en el tablero!

¡Diviértete y avísame si tienes alguna pregunta en los comentarios!

Recomendado: