Focuspunt in Unity

Naamruimte:UnityEngine.XR.WSA
Type: HolographicSettings

Gebruik het focuspunt om een HoloLens te geven over hoe u de hologrammen die momenteel worden weergegeven het beste kunt stabiliseren.

Als u het focuspunt in Unity wilt instellen, moet dit elk frame worden ingesteld met holographicSettings.SetFocusPointForFrame(). Wanneer het focuspunt niet is ingesteld voor een frame, wordt het standaardvlak voor stabiliseren gebruikt.

Notitie

Voor nieuwe Unity-projecten is standaard de optie 'Dieptebuffer delen inschakelen' ingesteld. Met deze optie verstuurt een Unity-app die wordt uitgevoerd op een immersive desktop headset of een HoloLens met de update van Windows 10 april 2018 (RS4) of hoger uw dieptebuffer naar Windows om hologram-stabiliteit automatisch te optimaliseren, zonder dat uw app een focuspunt opgeeft:

  • Op een immersive desktop headset maakt dit reprojectie op basis van diepte per pixel mogelijk.
  • Op een HoloLens met de update Windows 10 april 2018 of hoger, wordt de dieptebuffer geanalyseerd om automatisch een optimaal stabiliserend vlak te kiezen.

Beide benaderingen moeten nog betere afbeeldingskwaliteit bieden zonder expliciet werk van uw app om een focuspunt voor elk frame te selecteren. Houd er rekening mee dat als u handmatig een focuspunt op geeft, dit het hierboven beschreven automatische gedrag overschrijft en meestal de stabiliteit van hologrammen vermindert. Over het algemeen moet u alleen een handmatig focuspunt opgeven wanneer uw app wordt uitgevoerd op een HoloLens die nog niet is bijgewerkt naar de update Windows 10 april 2018.

Voorbeeld

Er zijn veel manieren om het focuspunt in te stellen, zoals voorgesteld door de overloads die beschikbaar zijn op de statische functie SetFocusPointForFrame . Hieronder wordt een eenvoudig voorbeeld weergegeven om het focusvlak in te stellen op het opgegeven object voor elk 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);
}

Notitie

De bovenstaande eenvoudige code kan de stabiliteit van hologrammen verminderen als het gerichte object achter de gebruiker eindigt. Over het algemeen raden we u aan Dieptebuffer delen in te stellen in plaats van handmatig een focuspunt op te geven.

Volgende controlepunt voor ontwikkeling

Als u het Unity-ontwikkelingstraject volgt dat we hebben verkend, bent u bezig met het verkennen van de mogelijkheden Mixed Reality platform en API's. Hier kunt u doorgaan naar het volgende onderwerp:

Of ga rechtstreeks naar het implementeren van uw app op een apparaat of emulator:

U kunt altijd op elk moment teruggaan naar de Controlepunten voor Unity-ontwikkeling .

Zie ook