Adaptación del proyecto MR para HoloLens

Así que nuestra serie de artículos sobre Windows Mixed Reality está llegando a su fin. En él, desarrollamos desde cero una aplicación con realidad mixta en Unity en el formato de trabajo de laboratorio (trabajo de laboratorio). Hoy es el acorde final en el que hablaremos sobre un tema muy interesante: HoloLens y la adaptación del proyecto a este dispositivo. Únete ahora!



La guía completa constará de 5 partes. Se repondrá cada semana. A continuación puede ir a la parte que necesita.

Parte 1: Exportar la aplicación UWP para Windows Mixed Reality desde Unity ;
Parte 2: Configuración del entorno (VR) ;
Parte 3: Controladores ;
Parte 4: Sonido espacial ;
Parte 5: HoloLens y gráficos .

Hololen


Hasta ahora, nuestra aplicación solo funciona con auriculares envolventes. Sin embargo, al hacer solo unos pocos cambios en la aplicación, podemos implementar soporte para todo el espectro de dispositivos de Realidad Mixta (incluyendo HoloLens) en ella.

Dado que utilizamos el Kit de herramientas de realidad mixta para controlar la cámara, implementar la interacción y agregar botones, solo necesitamos hacer algunos cambios en el proyecto.

Ocultar una sala virtual


Necesitamos escribir una secuencia de comandos que determine en qué dispositivo se está ejecutando nuestra aplicación: en un auricular inmersivo o en un dispositivo HoloLens. Si la aplicación se ejecuta en un dispositivo HoloLens, debemos ocultar la sala virtual para que el usuario pueda interactuar con el entorno real. Para hacer esto, primero agregamos el elemento Etiqueta al prefabricado RoomPrefab, y luego accederemos a esta etiqueta en nuestro script.

1. Seleccione el prefabricado RoomPrefab en el panel Jerarquía.

2. En la lista desplegable Etiqueta en el panel Inspector, seleccione Agregar etiqueta ...



3. Haga clic en el signo + para crear una nueva etiqueta y asígnele el nombre HMDUOnly.



4. Ahora haga clic nuevamente en el prefabricado RoomPrefab en el panel Jerarquía y seleccione la etiqueta HMDUOnly en el menú desplegable Etiqueta en el panel Inspector.

Puede seleccionar objetos del juego en el guión de varias maneras . Podemos agregar una etiqueta a cualquier objeto que necesitemos ocultar (si tenemos varios objetos), y luego ocultar cada uno de ellos secuencialmente. Llamar al método FindGameObjectsWithTag no es la forma más óptima, pero es bastante adecuado para nosotros.

5. Desde el menú superior de Unity, seleccione GameObject -> Create Empty.

6. En el panel Jerarquía, cambie el nombre del GameObject vacío agregado a GameManager.

7. En el panel Inspector, haga clic en Agregar componente -> Nuevo guión y asigne a este guión el nombre GameManager, eligiendo C sharp como lenguaje de programación. Haga clic en Crear y Agregar para crear el script.

8. Para abrir el script GameManager, haga doble clic en el panel Inspector o en el panel Activos.

9. Reemplace el código de script de GameManager con el siguiente código. Esta prueba debe realizarse solo una vez, en el inicio de la aplicación. Lo ejecutaremos dentro de la función Start () y eliminaremos la función Update ().

using System.Collections; using System.Collections.Generic; using UnityEngine; // We need the UnityEngine.XR.WSA namespace to access Holographic Settings which contain // functions which effect the performance and presentation of Holograms on Windows // Holographic platforms. using UnityEngine.XR.WSA; public class GameManager : MonoBehaviour { void Start () { // Check if the MR headset display is transparent (not opaque). if(!HolographicSettings.IsDisplayOpaque){ // If that is the case, then we need to hide the virtual living room GameObject[] HMDUOnlyObjects = GameObject.FindGameObjectsWithTag("HMDUOnly"); for (int i = 0; i < HMDUOnlyObjects.Length; i++){ // Set active to false disables the object. HMDUOnlyObjects[i].SetActive(false); } } } } 

Finalmente, para garantizar que la aplicación funcione correctamente en el dispositivo HoloLens, necesitamos que el fondo de la cámara sea negro.

10. En el panel Jerarquía, seleccione el objeto MixedRealityCameraParent-> MixedRealityCamera. Desplácese hacia abajo en el panel Inspector y seleccione negro como valor para el Administrador de cámara de realidad mixta -> Configuración de pantalla transparente -> Parámetro de color de fondo (Administrador de cámara de realidad mixta -> Configuración de pantalla transparente -> Color de fondo).



Agregar mapeo espacial


¡Casi todo está listo! Ahora necesitamos habilitar el mapeo espacial . La tecnología de imágenes espaciales proporciona una vista detallada de las superficies físicas en el entorno HoloLens, lo que permite a los desarrolladores crear aplicaciones de realidad mixta que son impresionantes con su probabilidad. En nuestro caso, el mapeo espacial permitirá al usuario colocar los altavoces de forma natural, para que no se vean oscurecidos por las superficies físicas.

Primero, asegurémonos de que los controles del objeto Bounding Box (cuadro delimitador) responsables del movimiento y la rotación no estén ocultos.

1. Localice el prefabricado AppBarCustom en la carpeta Activos -> Prefabricados en el panel Proyecto.

2. Establezca el valor 0 para la propiedad Hover Offset Y Scale (Hover Offset Scale).



Ahora agreguemos componentes de mapeo espacial a la escena.

3. Localice la prefabricación SpatialMapping en la carpeta Activos -> HoloTookit -> SpatialMapping -> Prefabs (Recursos -> HoloTookit -> Asignación espacial -> Prefabs).

4. Arrástrelo al panel Jerarquía de nuestra escena.



Gestos HoloLens


Hasta ahora, todos los tipos de interacción en nuestra aplicación se llevaban a cabo utilizando controladores de movimiento. Si la aplicación se ejecutará en el dispositivo HoloLens (o su emulador), debemos usar otra forma de mover el altavoz y cambiarlo en el código del programa. El método BoundingBox también se puede reutilizar para HoloLens, pero queremos optimizar la interacción haciendo algunos cambios.

1. Seleccione el altavoz prefabricado en el panel Proyecto.

2. Haga clic en Agregar componente -> Toque para colocar. Este es un script para HoloLens del MR Toolkit que permite al usuario tocar objetos u hologramas y moverlos fácilmente en el espacio.

3. Deshabilítelo para que no se inicie por defecto. Para deshabilitar un script, simplemente desmarque la casilla junto a su nombre en el panel Inspector. Este componente también agregará la secuencia de comandos del interpolador al prefabricado de altavoces.



4. Agregue la secuencia de comandos a la prefabricación de altavoces seleccionando Agregar componente -> Nueva secuencia de comandos y asigne a esta secuencia de comandos SpeakerMovement.

5. Edite la secuencia de comandos: haga doble clic en ella y reemplace el código de la secuencia de comandos con el siguiente código.

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.WSA; // namespace for the TwoHandManipulatable script using HoloToolkit.Unity.InputModule.Utilities.Interactions; // namespace for the TapToPlace script using HoloToolkit.Unity.SpatialMapping; public class SpeakerMovement : MonoBehaviour { void Start () { if(!HolographicSettings.IsDisplayOpaque){ GetComponent<TwoHandManipulatable>().enabled = false; GetComponent<TapToPlace>().enabled = true; } } } 

Al especificar el espacio de nombres para los escenarios utilizados, utilizaremos la misma prueba que se utilizó en el script GameManager para ocultar la sala. Esta vez, cuando se detecta un dispositivo HoloLens, la prueba apagará un script y encenderá otro. Como cambiamos la prefabricación de altavoces, este cambio afectará a todos los altavoces de la escena. Si cambió una de las instancias prefabricadas de altavoces, haga clic en Aplicar en la esquina superior derecha del panel Inspector para actualizar esta prefabricada.

Hecho Ahora puede compilar la aplicación y ejecutarla en un auricular o dispositivo HoloLens inmersivo, y luego colocar los altavoces en cualquier lugar de la habitación, rotarlos y controlarlos.

Gráficos (opcional)


Veamos cómo podemos mejorar el aspecto visual de nuestra aplicación, porque incluso una pequeña mejora puede cambiar significativamente su percepción. Si desea aprender cómo hacer que la aplicación sea aún más atractiva sin mucha dificultad, puede usar las instrucciones a continuación.

Agregar un skybox personalizado


1. En el menú superior, seleccione Ventana -> Iluminación -> Configuración (Ventana -> Iluminación -> Configuración).

2. Arrastre el skybox Cloudymorning.mat desde la carpeta Activos -> Texturas a la propiedad Material de Skybox.

Post procesamiento


Nota Las siguientes acciones se pueden realizar para cualquier cámara en la escena, pero no se pueden ver en el editor.

1. Seleccione el elemento MixedRealityCameraParent -> MixedRealityCamera en el panel Jerarquía de la escena.

2. Haga clic en Agregar componente -> Comportamiento posterior al procesamiento.

3. Localice el elemento CustomProfile.asset en la carpeta Activos -> Postproceso y arrástrelo a la propiedad Perfil del script de Comportamiento de procesamiento posterior.

Experimente con el perfil de posprocesamiento tanto como lo necesite, pero recuerde que el posprocesamiento consume recursos .

Felicidades Has completado esta práctica.

El original
Autores: Eric Ahlstrom, cbarkerms, Madison Hight

Source: https://habr.com/ru/post/es418665/


All Articles