Fokuspunkt in Unity

Namespace:UnityEngine.XR.WSA
Typ: HolographicSettings

Verwenden Sie den Fokuspunkt , um HoloLens einen Hinweis zur optimalen Stabilisierung der derzeit angezeigten Hologramme bereitzustellen.

Wenn Sie den Fokuspunkt in Unity festlegen möchten, muss er mit HolographicSettings.SetFocusPointForFrame()für jeden Frame festgelegt werden. Wenn der Fokuspunkt für einen Frame nicht festgelegt ist, wird die Standardstabilisierungsebene verwendet.

Hinweis

Standardmäßig ist für neue Unity-Projekte die Option "Tiefenpufferfreigabe aktivieren" festgelegt. Mit dieser Option übermittelt eine Unity-App, die entweder auf einem immersiven Desktop-Headset oder einer HoloLens mit dem Windows 10 Update vom April 2018 (RS4) oder höher ausgeführt wird, Ihren Tiefenpuffer an Windows, um die Hologrammstabilität automatisch zu optimieren, ohne dass Ihre App einen Fokuspunkt angibt:

  • Auf einem immersiven Desktop-Headset ermöglicht dies die tiefenbasierte Neuprojektion pro Pixel.
  • Auf einer HoloLens, die das Windows 10 Update vom April 2018 oder höher ausführt, wird der Tiefenpuffer analysiert, um automatisch eine optimale Stabilisierungsebene zu wählen.

Beide Ansätze sollten eine noch bessere Bildqualität ohne explizite Arbeit Ihrer App bieten, um einen Fokuspunkt für jeden Frame auszuwählen. Wenn Sie einen Fokuspunkt manuell angeben, überschreibt dies das oben beschriebene automatische Verhalten und verringert in der Regel die Stabilität des Hologramms. Im Allgemeinen sollten Sie nur einen manuellen Fokuspunkt angeben, wenn Ihre App auf einer HoloLens ausgeführt wird, die noch nicht auf das Windows 10 Update vom April 2018 aktualisiert wurde.

Beispiel

Es gibt viele Möglichkeiten, den Fokuspunkt festzulegen, wie dies in den Überladungen der statischen Funktion SetFocusPointForFrame vorgeschlagen wird. Im Folgenden finden Sie ein einfaches Beispiel zum Festlegen der Fokusebene auf das bereitgestellte Objekt für jeden 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);
}

Hinweis

Der einfache Code oben kann die Stabilität des Hologramms verringern, wenn das fokussierte Objekt hinter dem Benutzer landet. Es wird im Allgemeinen empfohlen, die Option Tiefenpufferfreigabe aktivieren festzulegen, anstatt einen Fokuspunkt manuell anzugeben.

Nächster Entwicklungsprüfpunkt

Wenn Sie die von uns beschriebene Unity-Entwicklungsreise befolgen, sind Sie gerade dabei, die Mixed Reality Plattformfunktionen und APIs zu erkunden. Von hier aus können Sie mit dem nächsten Thema fortfahren:

Oder wechseln Sie direkt zur Bereitstellung Ihrer App auf einem Gerät oder Emulator:

Sie können jederzeit zu den Prüfpunkten für die Unity-Entwicklung zurückkehren.

Siehe auch