Version: 2017.3
XR
XR SDKs

Visión General de VR (Realidad Virtual)

Unity VR le permite apuntar a dispositivos de realidad virtual directamente desde Unity, sin ningún complemento externo en los proyectos. Proporciona una API base y un conjunto de características con compatibilidad para varios dispositivos. Ha sido diseñado para proporcionar compatibilidad para futuros dispositivos y software.

Nota: XR es un término general que abarca realidad virtual (VR), realidad aumentada (AR), and Realidad Mixta (MR). Estamos en el proceso de actualizar nuestra documentación de XR, pero por ahora esta documentación se refiere principalmente a solo VR.

El API de XR de Unity se ha actualizado para reflejar el término general más amplio “XR”, pero gran parte de la documentación actualmente todavía utiliza el término “VR”. El API XR API de la superficie es minima por diseño pero se va a expandir a medida que XR siga creciendo.

Al utilizar el soporte VR nativo en Unity, usted gana:

  • Versiones estables de cada dispositivo de VR
  • Una sola interfaz API para interactuar con diferentes dispositivos de VR
  • Una carpeta de proyecto limpia sin ningún plugin externo para cada dispositivo
  • La habilidad de incluir y cambiar entre varios dispositivos en sus aplicaciones
  • Mayor rendimiento (Las optimizaciones del motor de Unity de nivel bajo son posibles para dispositivos nativos) ot

Habilitando el Soporte VR de Unity

Para habilitar el soporte de VR nativo para sus compilaciones de juegos y el Editor, abrá Player Settings (menú: Edit > Project Settings > Player). Seleccione XR Settings y marque la casilla de verificación Virtual Reality Supported. Establezca esto para cada objetivo de construcción. Habilitar el soporte de realidad virtual en una compilación independiente no habilita también el soporte para Android (y viceversa).

Navegando a los Player Settings desde el Editor de Unity
Navegando a los Player Settings desde el Editor de Unity

Use la lista Virtual Reality SDKs que se muestra debajo de la casilla de verificación para agregar y eliminar dispositivos VR para cada objetivo de compilación. El orden de la lista es el orden en que Unity intenta habilitar los dispositivos VR en tiempo de ejecución. El primer dispositivo que se inicializa correctamente es el habilitado. Este orden de lista es el mismo en el jugador construido.

Habilitando Virtual Reality Support a través de los ajustes de XR
Habilitando Virtual Reality Support a través de los ajustes de XR

Aplicaciones construidas: Escogiendo un dispositivo de inicio

Su aplicación creada inicializa y habilita dispositivos en el mismo orden que la lista del __ SDK de Realidad Virtual__ en las__XR Settings__ (consulte Habilitación del soporte de VR, arriba). Los dispositivos que no están presentes en la lista en el momento de la compilación no están disponibles en la compilación final. El dispositivo None es equivalente a una aplicación que no es de realidad virtual (es decir, una aplicación normal de Unity) y se puede cambiar durante el tiempo de ejecución sin incluirlo en la lista; La excepción a esto es None.

La inclusión de None como dispositivo en la lista le permite usar de forma predeterminada una aplicación que no sea VR antes de intentar la inicialización de un dispositivo VR. Si coloca None en la parte superior de la lista, la aplicación se inicia con VR desactivado. Luego, puede habilitar y deshabilitar los dispositivos VR que están presentes en su lista a través del script usando XR.XRSettings.LoadDeviceByName.

Si la inicialización del dispositivo al que intenta cambiar falla, Unity deshabilita VR con ese dispositivo aún configurado como el dispositivo VR activo. Cuando cambia dispositivos (XRSettings.LoadDeviceByName) o habilita XR (XR.XRSettings-enabled), la aplicación construida intenta inicializarse. otra vez.

El argumento de la línea de comando utilizado para lanzar un dispositivo específico es:

-vrmode DEVICETYPE

donde DEVICETYPE es uno de los nombres de la lista de dispositivos compatibles con XR.

Ejemplo: MyGame.exe -vrmode oculus

Qué pasa cuando VR está habilitado

Cuando VR esté habilitado en Unity, unas pocas cosas suceden automáticamente:

Renderización automática a una pantalla montada a la cabeza (Head-mounted display)

Todas las cámaras de su escena pueden renderizarse directamente en la pantalla montada en la cabeza (HMD). Las matrices de vista y proyección se ajustan automáticamente para tener en cuenta el seguimiento de la cabeza, el seguimiento posicional y el campo de visión.

Es posible deshabilitar la renderización en el HMD utilizando la propiedad stereoTargetEye del componente de la cámara. Alternativamente, puede configurar la Cámara para que se renderice en una Render Texture utilizando la propiedad Target Texture.

  • Use la propiedad stereoTargetEye para configurar la cámara para que solo muestre un ojo específico al HMD. Esto es útil para efectos especiales como un visor de francotirador o videos estereoscópicos. Para lograr esto, agregue dos cámaras a la escena: una que apunte al ojo izquierdo y la otra que apunte al ojo derecho. Establezca las layer masks (máscaras de capa) para configurar lo que se envía a cada ojo.

Input automático de seguimiento de cabeza

El seguimiento de la cabeza y el campo de visión apropiado (FOV) se aplican automáticamente a la cámara si su dispositivo está montado en la cabeza. Puede configurar manualmente el FOV a un valor específico, pero no puede configurar los valores Transform de la cámara directamente. Consulte la sección a continuación en Comprender la cámara para obtener más información.

El seguimiento de cabeza y el seguimiento de posición se aplican automáticamente, para que la posición y orientación coincida en su mayoría con la posición y orientación del usuario antes de que cada frame sea renderizado. Esto da una experiencia de realidad virtual buena, y evita que el usuario experimente nauseas.

Entendiendo la cámara

El Camera Transform se anula con la pose rastreada por la cabeza. Para mover o rotar la cámara, adjúntela como un hijo de otro GameObject. Esto hace que todos los cambios del Transform en el padre de la Cámara afecten a la Cámara. Esto también se aplica a mover o rotar la cámara usando un script.

Colocando como hijo la Main Camera a un Gameobject
Colocando como hijo la Main Camera a un Gameobject

Piense en la posición y orientación de la cámara como donde el usuario está mirando en su posición neutral.

Hay diferencias entre experiencias sentadas y de escala a un cuarto:

  • Si su dispositivo admite una experiencia a escala de la habitación, la posición de inicio de la cámara es el centro del espacio de juego del usuario.
  • Usando la experiencia sentada, puede restablecer las cámaras a la posición neutral usando XR.InputTracking.Recenter().

Cada cámara que se está rindiendo al dispositivo reemplaza automáticamente el FOV de la cámara con el FOV que el usuario ingresa en la configuración del software para cada VR SDK. El usuario no puede cambiar el campo de visión durante el tiempo de ejecución, porque se sabe que este comportamiento induce el mareo por movimiento.

Modo del Editor

Si su dispositivo VR admite el modo Editor de Unity, presione Reproducir en el Editor para probar directamente en su dispositivo.

EL ojo izquierdo es renderizado a la ventana del Game View si usted tiene stereoTargetEye configurado a left or both. El ojo derecho es renderizado si usted tiene stereoTargetEye configurado a right.

No hay una vista automática de lado a lado de los ojos derecho e izquierdo. Para ver una vista de lado a lado en la Vista del juego, cree dos Cámaras, coloque una a la izquierda y otra al ojo derecho, y configure la ventana de visualización de forma que se muestren una al lado de la otra.

Tenga en cuenta que hay una sobrecarga para ejecutar en el Editor, porque Unity IDE necesita renderizar cada ventana, por lo que puede experimentar un retraso o una vibración. Para reducir la sobrecarga de representación del editor, abra la Vista de juegos y habilite__Maximize on Play__.

El Unity Profiler es una herramienta útil para tener una idea de cómo será su rendimiento cuando se ejecute fuera del Editor. Sin embargo, el propio profiler también tiene sobrecarga. La mejor manera de revisar el rendimiento del juego es crear una compilación en su plataforma objetivo y ejecutarla directamente. Puede ver el mejor rendimiento cuando se ejecuta una compilación que no es de desarrollo, pero las compilaciones de desarrollo le permiten conectar el perfilador de Unity para un mejor perfil de rendimiento.

Recomendaciones de hardware y software para el desarrollo VR en Unity

Hardware

Lograr un frame rate similar a su HMD destino es esencial para tener una buena experiencia VR. Este debe coincidir con el refresh rate (tasa de actualización) de la pantalla utilizada en el HMD. Si el frame rate cae debajo del refresh rate del HMD, esto se nota en particular y a menudo lleva a que cause nauseas al jugador.

La siguiente tabla enumera las tasas de actualización de dispositivos para auriculares VR comunes:

VR Device Refresh Rate
Gear VR 60hz
Oculus Rift 90hz
Vive 90hz

Software

  • Windows: Windows 7, 8, 8.1, y Windows 10 son todos compatibles.

  • Android: Android OS Lollipop 5.1 o superior.

  • OS X: OSX 10.9+ con Oculus 0.5.0.1 runtime. Sin embargo, Oculus ha pausado el desarrollo para OS X, entonces utilice Windows para una funcionalidad VR nativa en Unity.

  • Graphics card drivers: Asegúrese de que sus drivers (controladores) estén actualizados. Cada dispositivo se mantiene al día con los drives más nuevos, por lo que los drivers más viejos podrían no estar soportados.

Requisitos de tiempo de ejecución del dispositivo

Cada dispositivo VR requiere que tenga instalado el tiempo de ejecución adecuado en su máquina. Por ejemplo, para desarrollar y ejecutar Oculus en Unity, necesita tener instalado el tiempo de ejecución de Oculus (también conocido como Oculus Home) en su máquina. Para Vive, necesitas tener Steam y SteamVR instalados.

Dependiendo de la versión de Unity que esté utilizando, las versiones de tiempo de ejecución para cada dispositivo específico compatible con Unity pueden diferir. Puede encontrar versiones en tiempo de ejecución en las notas de la versión de cada versión principal y secundaria de Unity.

Con algunas actualizaciones de versión, las versiones anteriores en tiempo de ejecución ya no son compatibles. Esto significa que el soporte nativo de Unity VR no funciona con versiones anteriores en tiempo de ejecución, pero continúa trabajando con nuevas versiones en tiempo de ejecución.

El soporte VR nativo de Unity no lee plug-ins desde la carpeta de su proyecto, por lo que incluir versiones anteriores del plug-in con soporte nativo fallará si tiene habilitado el soporte VR. Si desea usar una versión anterior con una versión de Unity que ya no es compatible con esa versión, desactive Native VR Support (vaya a XR Settings y desmarque Virtual Reality Supported). Luego puede acceda al plug-in como cualquier otro plug-in de terceros. Consulte la sección anterior sobre Habilitación del soporte de Unity VR para obtener más detalles.

XR
XR SDKs