Fokuspunkt in Unity
Namespace: UnityEngine.XR.WSA
Typ: HolographicSettings
Verwenden Sie den Fokuspunkt , um HoloLens einen Hinweis zur optimalen Stabilisierung der derzeit angezeigten Hologramme zu geben.
Wenn Sie den Fokuspunkt in Unity festlegen möchten, muss er mit HolographicSettings.SetFocusPointForFrame()jeden Frame festgelegt werden. Wenn der Fokuspunkt nicht für einen Frame festgelegt ist, wird die Standardstabilisierungsebene verwendet.
Hinweis
Standardmäßig haben neue Unity-Projekte die Option "Tiefenpufferfreigabe aktivieren" festgelegt. Mit dieser Option sendet eine Unity-App, die entweder auf einem immersiven Desktop-Headset oder einer HoloLens ausgeführt wird, die das Windows 10 April 2018 Update (RS4) ausführt, oder höher Ihren Tiefenpuffer an Windows, um die Hologrammstabilität automatisch zu optimieren, ohne dass Ihre App einen Fokuspunkt angibt:
- Auf einem immersiven Desktop-Headset wird dies pro Pixel tiefenbasierte Neuprojektion aktiviert.
- Auf einer HoloLens, die das Windows 10 April 2018 Update oder höher ausführt, analysiert dies den Tiefenpuffer, 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. Beachten Sie, dass bei manueller Bereitstellung eines Fokuspunkts das oben beschriebene automatische Verhalten überschrieben wird und in der Regel die Stabilität des Hologramms verringert wird. 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 April 2018 Update aktualisiert wurde.
Beispiel
Es gibt viele Möglichkeiten, den Fokuspunkt festzulegen, wie von den Überladungen vorgeschlagen, die in der statischen Funktion SetFocusPointForFrame verfügbar sind. Nachfolgend sehen Sie ein einfaches Beispiel, um die Fokusebene für jeden Frame auf das angegebene Objekt festzulegen:
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 beschriebene einfache Code kann die Hologrammstabilität verringern, wenn das fokussierte Objekt hinter dem Benutzer liegt. Im Allgemeinen wird empfohlen, die Tiefenpufferfreigabe zu aktivieren, anstatt manuell einen Fokuspunkt anzugeben.
Nächster Entwicklungsprüfpunkt
Wenn Sie die Von uns bereitgestellte Unity-Entwicklungsreise folgen, befinden Sie sich mitten in der Erkundung der Mixed Reality-Plattformfunktionen und APIs. 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.