Punto de enfoque en UnityFocus point in Unity

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

Use el punto de enfoque para proporcionar a HoloLens una sugerencia sobre cómo estabilizar mejor los hologramas que se muestran actualmente.Use the focus point to provide HoloLens with a hint about how to best stabilize the holograms currently being displayed.

Si desea establecer el punto de enfoque en Unity, debe establecer cada fotograma mediante HolographicSettings. SetFocusPointForFrame ().If you want to set the Focus Point in Unity, it needs to be set every frame using HolographicSettings.SetFocusPointForFrame(). Cuando no se establece el punto de enfoque para un marco, se utiliza el plano de estabilización predeterminado.When the Focus Point isn't set for a frame, the default stabilization plane is used.

Nota

De forma predeterminada, los nuevos proyectos de Unity tienen establecida la opción "habilitar el uso compartido del búfer de profundidad".By default, new Unity projects have the "Enable Depth Buffer Sharing" option set. Con esta opción, una aplicación de Unity que se ejecute en un casco de escritorio envolvente o en una HoloLens que ejecute la actualización 2018 de abril 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:With this option, a Unity app running on either an immersive desktop headset or a HoloLens running the Windows 10 April 2018 Update (RS4) or later will submit your depth buffer to Windows to optimize hologram stability automatically, without your app specifying a focus point:

  • En un casco de escritorio envolvente, esto habilitará la Reproyección basada en profundidad por píxel.On an immersive desktop headset, this will enable per-pixel depth-based reprojection.
  • En una HoloLens que ejecute la actualización de abril de 2018 de Windows 10 o posterior, se analizará el búfer de profundidad para elegir un plano de estabilización óptimo automáticamente.On a HoloLens running the Windows 10 April 2018 Update or later, this will analyze the depth buffer to pick an optimal stabilization plane automatically.

Cualquier enfoque debe proporcionar una calidad de imagen incluso mejor sin que la aplicación proporcione un trabajo explícito para seleccionar un punto de enfoque para cada fotograma.Either approach should provide even better image quality without explicit work by your app to select a focus point for each frame. Tenga en cuenta que si proporciona un punto de enfoque manualmente, se invalidará el comportamiento automático descrito anteriormente y se reducirá la estabilidad del holograma.Note that if you do provide a focus point manually, that will override the automatic behavior described above, and will usually reduce hologram stability. Por lo general, solo debe especificar un punto de enfoque manual cuando la aplicación se ejecuta en una HoloLens que todavía no se ha actualizado a la actualización 2018 de abril de Windows 10.Generally, you should only specify a manual focus point when your app is running on a HoloLens that has not yet been updated to the Windows 10 April 2018 Update.

EjemploExample

Hay muchas maneras de establecer el punto de enfoque, como se sugiere por las sobrecargas disponibles en la función estática SetFocusPointForFrame .There are many ways to set the Focus Point, as suggested by the overloads available on the SetFocusPointForFrame static function. A continuación se muestra un ejemplo sencillo para establecer el plano de enfoque en el objeto proporcionado para cada fotograma:Presented below is a simple example to set the focus plane to the provided object for each frame:

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 más anterior puede reducir la estabilidad de los hologramas si el objeto que tiene el foco termina detrás del usuario.The simple code above may reduce hologram stability if the focused object ends up behind the user. Por lo general, se recomienda establecer Habilitar el uso compartido del búfer de profundidad en lugar de especificar manualmente un punto de enfoque.We generally recommend setting Enable Depth Buffer Sharing instead of manually specifying a focus point.

Siguiente punto de control de desarrolloNext Development Checkpoint

Si está siguiendo el viaje de desarrollo de Unity que hemos diseñado, está a la mitad de explorar las API y funcionalidades de la plataforma de realidad mixta.If you're following the Unity development journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. Desde aquí, puede continuar con el siguiente tema:From here, you can continue to the next topic:

O bien puede ir directamente a la implementación de la aplicación en un dispositivo o emulador:Or jump directly to deploying your app on a device or emulator:

Puede volver a los puntos de control de desarrollo de Unity en cualquier momento.You can always go back to the Unity development checkpoints at any time.

Consulte tambiénSee also