Fokus v Unity

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

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

Pokud chcete nastavit zaostřovací bod v Unity, je potřeba nastavit každý snímek pomocí HolographicSettings.SetFocusPointForFrame(). Pokud není pro rámeček nastavený detailní bod, použije se výchozí stabilizační rovina.

Poznámka

Ve výchozím nastavení mají nové projekty Unity nastavenou možnost Povolit sdílení hloubkové vyrovnávací paměti. Při použití této možnosti odešle aplikace Unity spuštěná na imerzivní stolní náhlavní soupravě nebo HoloLensu s aktualizací Windows 10 z dubna 2018 (RS4) nebo novější vaši hloubkovou vyrovnávací paměť do Windows, aby se automaticky optimalizovala stabilita hologramu, aniž by aplikace určila bod fokusu:

  • U imerzivních sluchátek s mikrofonem pro stolní počítače to umožní reprojekci na základě hloubky podle pixelů.
  • Na HoloLensu s aktualizací Windows 10 z dubna 2018 nebo novější se tato akce provede analýzou hloubkové vyrovnávací paměti, aby se automaticky vybrala optimální stabilizační rovina.

Oba přístupy by měly poskytovat ještě lepší kvalitu obrazu, aniž by aplikace explicitně pracovala na výběru fokusu pro každý snímek. Všimněte si, že pokud zadáte fokus ručně, přepíše se automatické chování popsané výše a obvykle se sníží stabilita hologramu. Obecně platí, že byste měli zadat ručně aktivní bod pouze v případě, že vaše aplikace běží na HoloLensu, který ještě nebyl aktualizován na aktualizaci Windows 10 z dubna 2018.

Příklad

Existuje mnoho způsobů, jak nastavit zaostřovací bod, jak to navrhují přetížení dostupná ve statické funkci SetFocusPointForFrame . Níže je uveden jednoduchý příklad nastavení roviny 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 výše může snížit stabilitu hologramu, pokud objekt s fokusem skončí za uživatelem. Obecně doporučujeme nastavit možnost Povolit sdílení hloubkové vyrovnávací paměti místo ručního zadávání fokusu.

Další vývojový kontrolní bod

Pokud sledujete cestu vývoje Unity, kterou jsme si vytyčili, jste uprostřed zkoumání Mixed Reality funkcí platformy a rozhraní API. Odtud můžete pokračovat k dalšímu tématu:

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

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

Viz také