Configuración recomendada para Unity

Unity proporciona un conjunto de opciones predeterminadas que suelen ser el caso medio de todas las plataformas. Sin embargo, Unity ofrece algunos comportamientos específicos de la realidad mixta que se pueden alternar a través de la configuración del proyecto.

Configuración del entorno de rendimiento

Configuración de baja calidad

Es importante modificar la configuración de calidad de Unity a Muy baja para que la aplicación se ejecute y funcione bien con la velocidad de fotogramas adecuada, especialmente para el desarrollo de HoloLens. Para el desarrollo en cascos envolventes, dependiendo de las especificaciones del escritorio que alimenta la experiencia de VR, todavía se puede lograr la velocidad de fotogramas sin los parámetros de calidad más bajos.

En Unity 2019 LTS+, puede establecer el nivel de calidad del proyecto; para ello, vaya a Editar> calidadde configuración> delproyecto y establezca el valor predeterminado haciendo clic en la flecha hacia abajo hasta el nivel **Muy baja calidad.

Configuración de iluminación

De forma similar a la configuración de la escena de calidad, es importante establecer una configuración de iluminación óptima para la aplicación de Mixed Reality. En Unity, la configuración iluminación que normalmente tendrá el mayor impacto en el rendimiento de la escena es Iluminación global en tiempo real. Para desactivar la iluminación global, vaya aConfiguración de iluminaciónderepresentación> de ventanas>>Iluminación global en tiempo real.

Hay otro ajuste de iluminación, Iluminación global horneada. Esta configuración puede proporcionar resultados eficaces y visualmente sorprendentes en cascos envolventes, pero no es aplicable para el desarrollo de HoloLens. La iluminación global horneada solo se calcula para gameObjects estáticos, que no se encuentran en las escenas de HoloLens debido a la naturaleza de un entorno desconocido y cambiante.

Lea Iluminación global de Unity para obtener más información.

Nota

La iluminación global en tiempo real se establece por escena y, por tanto, los desarrolladores deben guardar esta propiedad para cada escena de Unity en su proyecto.

Ruta de acceso de representación de creación de instancias de paso único

En Mixed Reality aplicaciones, la escena se representa dos veces: una para cada ojo. En comparación con el desarrollo 3D tradicional, esto duplica eficazmente la cantidad de trabajo que se debe calcular. Es importante seleccionar la ruta de acceso de representación más eficaz de Unity para ahorrar en el tiempo de CPU y GPU. La representación con instancia de paso único optimiza la canalización de representación de Unity para aplicaciones de realidad mixta; se recomienda habilitar esta configuración de forma predeterminada para cada proyecto.

Para habilitar esta característica en el proyecto de Unity

  1. Abra Configuración de OpenXR (vaya a Editar>Configuración del proyecto>Administración del complemento XR>OpenXR).
  2. Seleccione Instancia de un solo paso en el menú desplegable Modo de representación.

Lea los siguientes artículos de Unity para obtener más detalles con este enfoque de representación.

Nota

Un problema común con la representación con instancia de un solo paso se produce si los desarrolladores ya tienen sombreadores personalizados no escritos para la creación de instancias. Después de habilitar esta característica, los desarrolladores pueden observar que algunos objetos GameObjects solo se representan en un ojo. Esto se debe a que los sombreadores personalizados asociados no tienen las propiedades adecuadas para la creación de instancias.

Consulta Representación en estéreo de un solo paso para HoloLens de Unity para solucionar este problema.

Habilitación del uso compartido de búferes de profundidad

Para lograr una mejor estabilidad de hologramas a partir de la percepción del usuario, se recomienda habilitar la propiedad Uso compartido del búfer de profundidad en Unity. Al activar esto, Unity compartirá el mapa de profundidad generado por la aplicación con la plataforma Windows Mixed Reality. A continuación, la plataforma puede optimizar mejor la estabilidad del holograma específicamente para la escena para cualquier fotograma determinado que represente la aplicación.

Para habilitar esta característica en el proyecto de Unity

  1. Abra Configuración de OpenXR (vaya a Editar>Configuración del proyecto>Administración del complemento XR>OpenXR).
  2. Seleccione Profundidad de 16 bits en el menú desplegable Modo de envío de profundidad .

La configuración del búfer de profundidad de 16 bits se recomienda especialmente para el desarrollo de HoloLens. La selección de 16 bits en comparación con 24 bits reducirá significativamente los requisitos de ancho de banda, ya que será necesario mover o procesar menos datos. Dicho esto, la optimización viene con cierto costo. Asegúrese de comprender las implicaciones mencionadas en los cuadros Importantes que se indican a continuación.

Para que la plataforma de Windows Mixed Reality optimice la estabilidad del holograma, se basa en el búfer de profundidad para que sea preciso y coincida con los hologramas representados en pantalla. Por lo tanto, con el uso compartido del búfer de profundidad activado, es importante al representar el color para representar también la profundidad. En Unity, la mayoría de los materiales opacos o TransparentCutout representarán la profundidad de forma predeterminada, pero los objetos transparentes y de texto no representarán la profundidad, aunque esto depende de los sombreadores y otros factores.

Si usa el sombreador estándar de Mixed Reality Toolkit, para representar la profundidad de los objetos transparentes:

  1. Seleccione el material transparente que usa el sombreador MRTK Standard y abra la ventana Editor del inspector.
  2. Seleccione el botón Corregir ahora dentro de la advertencia de uso compartido del búfer de profundidad. Esto también se puede realizar manualmente estableciendo el Modo de representación en Personalizado; a continuación, establezca Modo en Transparente y, por último, establezca Escritura de profundidaden Activado.

Importante

Los desarrolladores deben tener cuidado con la lucha Z al cambiar estos valores junto con la configuración del plano cercano o lejano de la cámara. Z-Fighting se produce cuando dos objetos de juego intentan representarse en el mismo píxel y debido a limitaciones en la fidelidad del búfer de profundidad (es decir, la profundidad z), Unity no puede distinguir qué objeto está delante del otro. Los desarrolladores observarán un parpadeo entre dos objetos de juego a medida que luchan por el mismo valor de profundidad z. Esto se puede resolver cambiando al formato de profundidad de 24 bits, ya que habrá un rango mayor de valores para cada objeto para calcular según su profundidad z de la cámara.

Sin embargo, se recomienda, especialmente para el desarrollo de HoloLens, modificar los planos cercanos y lejanos de la cámara a un rango más pequeño en su lugar y conservar el formato de profundidad de 16 bits. La profundidad z se asigna de forma no lineal al intervalo de valores a lo largo de los planos de cámara cercanos y lejanos. Esto se puede modificar si selecciona la cámara principal en la escena y, en Inspector, cambia los valores del plano de recorte cercano & lejos para reducir su intervalo (es decir, de 1000m a 100m u otro valor x, etc.).

Importante

Unity no crea un búfer de galería de símbolos cuando se usa el formato de profundidad de 16 bits. Por lo tanto, algunos efectos de la interfaz de usuario de Unity y otros efectos necesarios para la galería de símbolos no funcionarán a menos que se seleccione el formato de profundidad de 24 bits que creará un búfer de galería de símbolos de 8 bits.

Compilación para IL2CPP

Unity ha dejado de usar la compatibilidad con el back-end de scripting de .NET y, por tanto, recomienda que los desarrolladores usen IL2CPP para sus compilaciones de Visual Studio para UWP. Aunque esto aporta varias ventajas, la compilación de la solución de Visual Studio desde Unity para IL2CPP puede ser más lenta que el método de .NET anterior. Por lo tanto, se recomienda encarecidamente seguir los procedimientos recomendados para compilar IL2CPP para ahorrar en el tiempo de iteración de desarrollo.

  1. Aproveche la compilación incremental mediante la compilación del proyecto en el mismo directorio cada vez, reutilizando los archivos creados previamente allí.
  2. Deshabilitar exámenes de software antimalware para el proyecto & carpetas de compilación
    • Abra la protección contra amenazas de virus & en la aplicación de configuración de Windows 10
    • Seleccione Manage Settings (Administrar configuración) en Virus & threat protection settings (Configuración de protección contra amenazas de Virus &).
    • Seleccione Agregar o quitar exclusiones en la sección Exclusiones .
    • Seleccione Agregar una exclusión y seleccione la carpeta que contiene el código del proyecto de Unity y las salidas de compilación.
  3. Uso de un SSD para compilar

Lea Optimización de tiempos de compilación para IL2CPP para obtener más información.

Nota

Además, puede resultar útil configurar un servidor de caché, especialmente para los proyectos de Unity con una gran cantidad de activos (sin contar con los archivos de script), o que cambien constantemente de escenas o activos. Al abrir un proyecto, Unity almacena los activos aplicables en un formato de la memoria caché interna en la máquina del desarrollador. Los elementos se tienen que volver a importar y, por tanto, volver a procesar cuando se modifican. Este proceso se puede realizar una vez y guardar en un servidor de caché, de esta forma se comparte con otros desarrolladores, lo que ahorra tiempo al evitar que cada desarrollador tenga que procesar localmente los nuevos cambios que reimporte.

Propiedades de publicación

Pantalla de presentación holográfica

HoloLens tiene una CPU y GPU de clase móvil, lo que significa que las aplicaciones pueden tardar un poco más en cargarse. Mientras se carga la aplicación, los usuarios solo verán negro y, por lo tanto, pueden preguntarse qué está pasando. Para asegurarlos durante la carga, puedes agregar una pantalla de presentación holográfica.

Para alternar la pantalla de presentación holográfica:

  1. Vaya a la página Editar>reproductorde configuración del> proyecto.
  2. Seleccione la pestaña Tienda Windows y abra la sección Imagen de presentación .
  3. Aplique la imagen en la propiedad Windows Holographic Holographic > Splash Image .
    • Al alternar la opción Mostrar pantalla de presentación de Unity , se habilitará o deshabilitará la pantalla de presentación de marca de Unity. Si no tiene una licencia de Unity Pro, siempre se mostrará la pantalla de presentación de la marca unity.
    • Si se aplica una imagen de presentación holográfica , siempre se mostrará si la casilla Mostrar pantalla de presentación de Unity está habilitada o deshabilitada. Especificar una imagen de presentación holográfica personalizada solo está disponible para los desarrolladores con una licencia de Unity Pro.
Mostrar pantalla de presentación de Unity Imagen de presentación holográfica Comportamiento
Activado None Muestra la pantalla de presentación predeterminada de Unity durante 5 segundos o hasta que se cargue la aplicación, lo que sea más largo.
Activado Personalizado Muestra la pantalla de presentación personalizada durante 5 segundos o hasta que se cargue la aplicación, lo que sea más largo.
Desactivado None Mostrar negro transparente (nada) hasta que se cargue la aplicación.
Desactivado Personalizado Muestra la pantalla de presentación personalizada durante 5 segundos o hasta que se cargue la aplicación, lo que sea más largo.

Lea la documentación de la pantalla de presentación de Unity para obtener más información.

Pérdida de seguimiento

Un casco de realidad mixta depende de ver el entorno que lo rodea para construir sistemas de coordenadas bloqueados por el mundo, lo que permite que los hologramas permanezcan en posición. Cuando los auriculares no se pueden encontrar en el mundo, se dice que los auriculares han perdido el seguimiento. En estos casos, la funcionalidad depende de los sistemas de coordenadas bloqueados por el mundo, como las fases espaciales, los anclajes espaciales y la asignación espacial, no funcionan.

Si se produce una pérdida de seguimiento, el comportamiento predeterminado de Unity es detener la representación de hologramas, pausar el bucle del juego y mostrar una notificación perdida de seguimiento que sigue cómodamente la mirada de los usuarios. También se pueden proporcionar notificaciones personalizadas en forma de imagen de pérdida de seguimiento. En el caso de las aplicaciones que dependen del seguimiento de toda su experiencia, es suficiente permitir que Unity controle todo esto hasta que se recupere el seguimiento. Los desarrolladores pueden proporcionar una imagen personalizada que se mostrará durante la pérdida de seguimiento.

Para personalizar la imagen perdida de seguimiento:

  1. Vaya a la página Editar>reproductorde configuración del> proyecto.
  2. Seleccione en la pestaña Tienda Windows y abra la sección Imagen de presentación .
  3. Aplique la imagen en la propiedad Windows Holographic > Tracking Loss Image .

No participar en la pausa automática

Es posible que algunas aplicaciones no requieran seguimiento (por ejemplo, aplicaciones de solo orientación como visores de vídeo de 360 grados) o que necesiten continuar procesando sin interrupciones mientras se pierde el seguimiento. Puede no participar en la pérdida predeterminada del comportamiento de seguimiento, pero es responsable de ocultar o deshabilitar los objetos, lo que no se representaría correctamente en un escenario de pérdida de seguimiento. En la mayoría de los casos, el único contenido que se recomienda representar en ese caso es contenido bloqueado por el cuerpo, centrado alrededor de la cámara principal.

Para no participar en el comportamiento de pausa automática:

  1. Vaya a la página Editar>reproductorde configuración del> proyecto.
  2. Seleccione la pestaña Tienda Windows y abra la sección Imagen de presentación .
  3. Modifique la casilla Windows Holographic > On Tracking Loss Pause (Pausar y mostrar imagen ).

Seguimiento de eventos de pérdida

Para definir el comportamiento personalizado cuando se pierde el seguimiento, controle los eventos de pérdida de seguimiento global.

Funcionalidades

Para que una aplicación aproveche ciertas funcionalidades, debe declarar las funcionalidades adecuadas en su manifiesto. Las declaraciones de manifiesto se pueden realizar en Unity para que se incluyan en todas las futuras exportaciones de proyectos.

Las funcionalidades se pueden habilitar para una aplicación de Mixed Reality mediante:

  1. Vaya a la página Editar>reproductorde configuración del> proyecto.
  2. Seleccione la pestaña Tienda Windows , abra la sección Configuración de publicación y busque la lista Funcionalidades .

Las funcionalidades aplicables para habilitar las API usadas habitualmente para las aplicaciones holográficas son:

Capacidad API que requieren funcionalidad
SpatialPerception SurfaceObserver
WebCam PhotoCapture y VideoCapture
PicturesLibrary/VideosLibrary PhotoCapture o VideoCapture, respectivamente (al almacenar el contenido capturado)
Micrófono VideoCapture (al capturar audio), DictationRecognizer, GrammarRecognizer y KeywordRecognizer
InternetClient DictadoRecognizer (y para usar Unity Profiler)

Consulte también