Punto de enfoque en Unity

Espacio de nombres:UnityEngine.XR.WSA
Tipo: HolographicSettings

Use el punto de enfoque para proporcionar a HoloLens una sugerencia sobre cómo estabilizar mejor los hologramas que se muestran actualmente.

Si desea establecer el punto de enfoque en Unity, debe establecerse cada fotograma con HolographicSettings.SetFocusPointForFrame(). Cuando el punto de enfoque no está establecido para un marco, se usa el plano de estabilización predeterminado.

Nota

De forma predeterminada, los nuevos proyectos de Unity tienen establecida la opción "Habilitar uso compartido de búferes de profundidad". Con esta opción, una aplicación de Unity que se ejecuta en un casco de escritorio envolvente o holoLens que ejecuta la actualización de abril de 2018 de Windows 10 (RS4) o posterior enviará el búfer de profundidad a Windows para optimizar la estabilidad del holograma automáticamente, sin que la aplicación especifique un punto de enfoque:

  • En un casco de escritorio inmersivo, esto habilitará la reproyecto basado en profundidad por píxel.
  • En un dispositivo HoloLens que ejecuta la actualización de abril de 2018 de Windows 10 o posterior, esto analizará el búfer de profundidad para elegir automáticamente un plano de estabilización óptimo.

Cualquiera de los enfoques debe proporcionar una mejor calidad de imagen sin un trabajo explícito por la aplicación para seleccionar un punto de enfoque para cada fotograma. Tenga en cuenta que si proporciona manualmente un punto de enfoque, que invalidará el comportamiento automático descrito anteriormente y normalmente reducirá la estabilidad del holograma. Por lo general, solo debes especificar un punto de enfoque manual cuando la aplicación se ejecuta en un HoloLens que aún no se ha actualizado a la actualización de abril de 2018 de Windows 10.

Ejemplo

Hay muchas maneras de establecer el punto de enfoque, como sugieren las sobrecargas disponibles en la función estática SetFocusPointForFrame . A continuación se muestra un ejemplo sencillo para establecer el plano de enfoque en el objeto proporcionado para cada fotograma:

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

Nota

El código simple anterior puede reducir la estabilidad del holograma si el objeto centrado termina detrás del usuario. Por lo general, se recomienda establecer Habilitar uso compartido de búferes de profundidad en lugar de especificar manualmente un punto de enfoque.

Siguiente punto de control de desarrollo

Si sigue el recorrido de desarrollo de Unity que hemos diseñado, se encuentra en medio de la exploración de las funcionalidades y las API de la plataforma de Mixed Reality. Desde aquí, puede continuar con el siguiente tema:

O bien puede ir directamente a la implementación de la aplicación en un dispositivo o emulador:

Puede volver a los puntos de control de desarrollo de Unity en cualquier momento.

Consulte también