Fokuspunkt in Unity

Namespace:UnityEngine.XR.WSA
Typ:HolographicSettings

Verwenden Sie den Fokuspunkt, HoloLens einen Hinweis darauf zu geben, wie die aktuell angezeigten Hologramme am besten stabilisiert werden können.

Wenn Sie den Fokuspunkt in Unity festlegen möchten, muss er mithilfe von HolographicSettings.SetFocusPointForFrame()für jeden Frame festgelegt werden. Wenn der Fokuspunkt nicht für einen Frame festgelegt ist, wird die Standardmäßige Stabilitätsebene verwendet.

Hinweis

Für neue Unity-Projekte ist standardmäßig die Option "Tiefenpufferfreigabe aktivieren" festgelegt. Mit dieser Option übermittelt eine Unity-App, die entweder auf einem immersiven Desktop-Headset oder einem HoloLens ausgeführt wird, auf dem das 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 angeben muss:

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

Beide Ansätze sollten eine noch bessere Imagequalität bieten, ohne dass Ihre App explizit einen Fokuspunkt für jeden Frame auswählen muss. Beachten Sie, dass, wenn Sie einen Fokuspunkt manuell bereitstellen, das oben beschriebene automatische Verhalten außer Kraft setzt und in der Regel die Hologrammstabilität reduziert. Im Allgemeinen sollten Sie nur einen manuellen Fokuspunkt angeben, wenn Ihre App auf einem HoloLens ausgeführt wird, der noch nicht auf das Update vom Windows 10 April 2018 aktualisiert wurde.

Beispiel

Es gibt viele Möglichkeiten zum Festlegen des Fokuspunkts, wie von den Überladungen vorgeschlagen, die für die statische SetFocusPointForFrame-Funktion verfügbar sind. 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 oben genannte einfache Code kann die Hologrammstabilität reduzieren, wenn das fokussierte Objekt hinter dem Benutzer endet. Im Allgemeinen wird empfohlen, die Einstellung Tiefenpufferfreigabe aktivieren festzulegen, anstatt manuell einen Fokuspunkt anzugeben.

Nächster Entwicklungsprüfpunkt

Wenn Sie den weg zur Unity-Entwicklung gehen, den wir entwickelt haben, sind Sie gerade dabei, die Funktionen und APIs Mixed Reality Plattform 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