Saltar al contenido principal

Guía Unity VR pantalla de carga SteamVR

Descripción de la problemática.

En VR, al tener un muy bajo frame rate, el visor de realidad virtual muestra una pantalla de carga mientras la computadora no le manda suficiente información al visor, esto suele ocurrir al cargar una nueva escena, aún haciéndolo de manera asíncrona. Lo anterior resulta molesto para la experiencia de usuario y puede llegar a interrumpir la inmersión. Además tal parece que actualmente no hay un modo de desactivar esta característica del visor que forma parte del “Compositor”, componente de SteamVR, ya que fue implementada con la finalidad de proteger al usuario del mareo causado por una tasa de frames baja transportandolo a una sala vacía en los casos antes mencionados.

[Sala vacía del Compositor que se muestra durante la pantalla de carga de SteamVR]

Solución:

En el caso de SteamVR, el plugin nos ofrece un script llamado SteamVR_LoadLevel que nos ofrece varias opciones para personalizar dicha pantalla de carga.

En general SteamVR_LoadLevel nos permite personalizar la pantalla de carga de las siguientes maneras:

  • agregando un Skybox personalizado: se deben agregar las 6 imágenes que lo componen.
  • cambiando el color del fondo: se puede elegir el color de fondo, el canal alpha también es tomado en cuenta.
  • agregando un logo: Puede configurarse su tamaño y distancia a la cámara.
  • agregando una barra de carga: consta de dos imágenes, una con la barra llena y otra con la barra vacía, automáticamente se hará la animación de rellenado, puede configurarse el tamaño de la barra.

Algunas líneas de código útiles para interactuar con este script:

       /* La recomendación es crear un script controlador que haga uso

* del patrón singleton desde el cual se disparen los cambios

* de escena y agregarlo al mismo objeto que contiene el

* componente SteamVR_LoadLevel previamente configurado. */

//Obtener el componente a utilizar

         SteamVR_LoadLevel SteamVRLoader = GetComponent<SteamVR_LoadLevel>();

//Hacer las configuraciones que hagan falta

         SteamVRLoader.levelName = "Scenes/Scene1";

//Disparar la transición del cambio de escena

         SteamVRLoader.Trigger();

Descripción del componente SteamVR_LoadLevel.

  • Level Name - La ruta de la escena a cargar.
  • Internal Process Path & Internal Process Args - En vez de una escena a cargar recibe la ruta de algún proceso y sus parámetros. Opcionales.
  • Load Additive & LoadAsync - Configuran el modo de carga de la escena.
  • Loading Screen - Textura que aparecerá frente al visor durante la pantalla de carga. Opcional.
  • Progress Bar Empty & Progress Bar Full - Texturas para una barra de carga que se irá rellenando durante el tiempo en que aparezca la pantalla de carga. Opcional.
  • Loading Screen Width In Meters & Progress Bar Width In Meters - Los tamaños del logo y de la barra de carga respectivamente.
  • Loading Screen Distance - La distancia a la cámara donde se posicionará el logo.
  • Loading Screen Transform & Progress Bar Transform - La posición donde se desea colocar el logo y la barra respectivamente, si no se especifica se usará el Transform del objeto actual. Opcionales.
  • Front, Back, Left, Right, Top, Bottom - Las texturas que componen el skybox que se quiere personalizar. Opcionales.
  • Background Color - Color de fondo de la sala durante la pantalla de carga, admite canal alpha.
  • Show Grid - Muestra u oculta la rejilla del “Chaperone”.

Creado por

Diego Alberto Tovar Razo.