Sdílet prostřednictvím


Fokus v Unity

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

Pomocí fokusu můžete poskytnout HoloLensu nápovědu k tomu, jak nejlépe stabilizovat aktuálně zobrazené hologramy.

Pokud chcete nastavit fokus v Unity, je potřeba nastavit každý rámec pomocí HolographicSettings.SetFocusPointForFrame(). Pokud fokus není nastavený pro rámec, 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. Díky této možnosti odešle aplikace Unity spuštěná na imerzivní desktopové náhlavní soupravě nebo HoloLens se systémem Windows 10 April 2018 Update (RS4) nebo novějším, aby se do Windows automaticky optimalizovala stabilita hologramu, aniž by vaše aplikace určila fokus:

  • Na imerzivní stolní náhlavní soupravě to umožní přeprojektování na pixelech.
  • Na HoloLensu se systémem Windows 10 April 2018 Update nebo novějším se tím analyzuje hloubková vyrovnávací paměť a automaticky vybere optimální stabilizační rovinu.

Oba přístupy by měly poskytovat ještě lepší kvalitu obrázků bez explicitní práce vaší aplikace a vybrat si pro každý snímek fokus. Všimněte si, že pokud ručně zadáte fokus, přepíše se automatické chování popsané výše a obvykle sníží stabilitu hologramu. Obecně platí, že byste měli zadat jenom ruční fokus, když je vaše aplikace spuštěná na HoloLensu, která ještě nebyla aktualizována na Aktualizaci Windows 10 z dubna 2018.

Příklad

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

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:

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

Kontrolní bod dalšího vývoje

Pokud sledujete cestu vývoje Unity, kterou jsme probrali, jste uprostřed zkoumání možností a rozhraní API platformy hybridní reality. Odsud můžete pokračovat k dalšímu tématu:

Nebo přejděte přímo k nasazení aplikace do zařízení nebo emulátoru:

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

Viz také