Focus point in Unity

Obor názvů:UnityEngine.XR.WSA
Typ:HolographicSettings

Pomocí bodu zaměření můžete HoloLens informace o tom, jak nejlépe stabilizovat aktuálně zobrazené hologramy.

Pokud chcete nastavit focus point v Unity, je potřeba nastavit každý snímek pomocí HolographicSettings.SetFocusPointForFrame(). Pokud pro snímek není nastavený fokus, použije se výchozí rovina stabilizace.

Poznámka

Ve výchozím nastavení mají nové projekty Unity nastavenou možnost Povolit sdílení vyrovnávací paměti hloubky. Při použití této možnosti aplikace Unity spuštěná na imerzivní desktopové náhlavní soupravě nebo v HoloLens, na které běží aktualizace Windows 10 z dubna 2018 (RS4) nebo novější, odešle vyrovnávací paměť hloubky do Windows, aby se optimalizovala stabilita hologramu automaticky, aniž by vaše aplikace zaměřující bod:

  • Na imerzivní desktopové náhlavní soupravě to umožní přeprojektování na hloubku na pixelech.
  • Na počítači HoloLens běží aktualizace Windows 10 z dubna 2018 nebo novější, se tato vyrovnávací paměť hloubky analyzuje a automaticky se vybere optimální stabilizační rovina.

Každý z přístupů by měl poskytovat ještě lepší kvalitu obrázku, aniž by aplikace explicitně pracovala na výběru bodu zaměření pro každý snímek. Všimněte si, že pokud zadáte fokus ručně, přepíše se tím automatické chování popsané výše a obvykle se sníží stabilita hologramu. Obecně platí, že byste měli zadat pouze ruční fokus, pokud je vaše aplikace spuštěná v HoloLens, který ještě nebyl aktualizován na Windows 10 aktualizace z dubna 2018.

Příklad

Existuje mnoho způsobů, jak nastavit fokus, jak navrhuje přetížení dostupná ve statické funkci SetFocusPointForFrame. Níže je uveden jednoduchý příklad nastavení fokusu na zadaný objekt pro každý snímek:

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);
}

Poznámka

Jednoduchý kód uvedený výše může snížit stabilitu hologramu, pokud za uživatelem skončí zaměřený objekt. Obecně doporučujeme místo ručního zadávání fokusu nastavit Povolit sdílení vyrovnávací paměti hloubky.

Další vývojový kontrolní bod

Pokud postupujete podle cesty vývoje Unity, kterou jsme si nachysnuli, můžete se seznámení s funkcemi a rozhraními API Mixed Reality platformy. Tady můžete pokračovat k dalšímu tématu:

Nebo můžete přejít přímo k nasazení aplikace na zařízení nebo emulátor:

Kdykoli se můžete vrátit k vývojových kontrolních bodům Unity.

Viz také