Focuspunt in Unity
Naamruimte: UnityEngine.XR.WSA
Type: HolographicSettings
Gebruik het focuspunt om HoloLens een hint te geven over het beste stabiliseren van de hologrammen die momenteel worden weergegeven.
Als u het focuspunt in Unity wilt instellen, moet elk frame worden ingesteld met behulp van HolographicSettings.SetFocusPointForFrame(). Wanneer het focuspunt niet is ingesteld voor een frame, wordt het standaardstabilisatievlak gebruikt.
Notitie
Nieuwe Unity-projecten hebben standaard de optie 'Dieptebuffer delen inschakelen' ingesteld. Met deze optie verzendt een Unity-app die wordt uitgevoerd op een insluitende desktopheader of een HoloLens met de Update van Windows 10 april 2018 (RS4) of hoger uw dieptebuffer naar Windows om de stabiliteit van hologram automatisch te optimaliseren, zonder dat uw app een focuspunt opgeeft:
- Op een insluitende desktopheader zorgt dit voor een nieuwe projectie op basis van diepte per pixel.
- Op een HoloLens waarop de Update van Windows 10 april 2018 of hoger wordt uitgevoerd, wordt de dieptebuffer geanalyseerd om automatisch een optimaal stabilisatievlak 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 opgeeft, dat het automatische gedrag overschrijft dat hierboven wordt beschreven 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 van Windows 10 april 2018.
Opmerking
Er zijn veel manieren om het focuspunt in te stellen, zoals wordt voorgesteld door de overbelastingen die beschikbaar zijn voor de statische functie SetFocusPointForFrame . Hieronder ziet u een eenvoudig voorbeeld 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 zich achter de gebruiker bevindt. Over het algemeen wordt u aangeraden Dieptebuffer delen in te schakelen in plaats van handmatig een focuspunt op te geven.
Volgend controlepunt voor ontwikkeling
Als u het Unity-ontwikkeltraject volgt dat we hebben opgesteld, bevindt u zich midden in het verkennen van de mogelijkheden en API's van het Mixed Reality-platform. 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 gewenst moment teruggaan naar de Unity-ontwikkelingscontrolepunten .