Stabilizace hologramů

Výkon

Aby mohla základní hybridní platforma realit a zařízení dosáhnout nejlepších výsledků, je důležité dosáhnout sazeb snímků. Cílový snímkový kmitočet (např. 60 FPS nebo 90 FPS) se bude lišit pro různé platformy a zařízení. V případě hybridních aplikací pro realitu, které vyhovují snímkování, se ale budou používat i kvalitní hologramy a také efektivní sledování hlav, sledování a další.

Sledování prostředí

Stabilní holografické vykreslování intenzivně spoléhá na hlavní vysledování pozice zařízení & platformou. Unity vykreslí scénu každý snímek z fotoaparátu, který je odhadovaný a dodaný základní platformou. Pokud toto sledování správně nedodržuje skutečný pohyb, budou se zdát hologramy vizuálně nepřesné. to je obzvláště zjevné a důležité pro zařízení AR, jako je HoloLens, kde se uživatelé můžou spojit s virtuálními hologramy na reálném světě. Výkon je důležitý pro sledování spolehlivých hlav, ale může to být i pro jiné důležité funkce. Typy prvků prostředí, které mají vliv na činnost koncového uživatele, budou záviset na cílové konkrétní platformě.

Windows Mixed Reality

platforma Windows Mixed Reality poskytuje referenční materiál pro stabilizaci hologramů na platformě. Existuje několik klíčových nástrojů, ale vývojáři můžou využít ke zlepšení vizuálního zážitku na hologramech pro uživatele.

Sdílení vyrovnávací paměti hloubky

Vývojáři Unity mají možnost sdílet v této platformě vyrovnávací paměť hloubky aplikace. To poskytuje informace o tom, kde hologramy existují pro aktuální rámec, které může platforma využít ke stabilizaci hologramů prostřednictvím procesu s podporou hardwaru označovaného jako reprojekce Late-Stage.

Reprojekce v pozdní fázi

na konci vykreslování snímku převezme Windows Mixed Reality platforma barvy & vykreslování s hloubkou barev, kterou vytvořila aplikace, a převede konečný výstup obrazovky na účet pro jakékoli mírné posunutí vedoucí od poslední předpovědi pozice. Spuštění smyčky aplikace trvá déle. Například při 60 FPS to znamená, že aplikace při vykreslování snímku přebírá ~ 16.667 MS. I když se to může zdát jako minisculeá doba, poloha a orientace uživatele se změní na nové matrice projekce pro kameru při vykreslování. Reprojekce v pozdní fázi transformuje pixely v konečné imagi na účet pro tuto novou perspektivu.

LSR na pixel a stabilizace roviny

v závislosti na koncovém bodu zařízení a verzi operačního systému spuštěné na zařízení Windows Mixed Reality se algoritmus Late-Stage reprojekce buď provede za pixel, nebo přes ustálenou rovinu.

Na základě hloubky v pixelech

Opětovné prokládání na základě hloubky v pixelech zahrnuje použití vyrovnávací paměti hloubky k úpravě výstupu obrazu na pixel, a proto stabilizovat hologramy v různých vzdálenostech. Například koule 1m může být mimo pilíř, který je 10 milionů. Pixely, které představují koule, budou mít jinou transformaci než zcela pryč pixelů představující pilíř, pokud uživatel rozklonuje jeho hlavu mírně. Reprojekce po pixelech bude brát v úvahu tento rozdíl vzdálenosti v každém pixelu pro přesnější reprojekci.

Stabilizace roviny

Pokud není možné vytvořit přesnou vyrovnávací paměť s hloubkou pro sdílení s platformou, další forma LSR využívá stabilizacovou plochu. Všechny hologramy ve scéně obdrží určitou stabilizaci, ale hologramy ležící v požadované rovině získají maximální stabilizaci hardwaru. Bod a normální pro rovinu se dají dodávat platformě přes rozhraní API HolographicSettings. SetFocusPointForFrame , které poskytuje Unity.

Formát vyrovnávací paměti hloubky

pokud cílíte HoloLens pro vývoj, důrazně se doporučuje použít 16bitový formát vyrovnávací paměti hloubky v porovnání s 24 bity. To může ušetřit obrovský výkon, i když hodnoty hloubky budou mít nižší přesnost. Chcete-li kompenzovat nižší přesnost a vyhnout se z bojeproti neopatrnosti, doporučuje se zmenšit plochu klipartu z výchozí hodnoty 1000M nastavené pomocí Unity.

Poznámka

Pokud používáte 16bitové formáty hloubky, požadované efekty vyrovnávací paměti vzorníku nebudou fungovat, protože Unity nevytvoří v tomto nastavení vyrovnávací paměť vzorníku . Výběr 24bitového formátu hloubky bude obecně vytvářet 8bitové vyrovnávací paměti vzorníku(Pokud je to možné) na platformě grafiky koncového bodu.

Sdílení vyrovnávací paměti hloubky v Unity

Aby bylo možné využívat LSR založené na hloubce, existují dva důležité kroky, které vývojáři potřebují.

  1. v části upravit > Project Nastavení > Player > XR Nastavení > Virtual Reality sady sdk > povolit sdílení vyrovnávací paměti pro hloubku
    1. pokud cílíte HoloLens, doporučuje se také vybrat 16bitový formát hloubky .
  2. Při vykreslování barev na obrazovce, také hloubka vykreslování

Neprůhledná GameObjects v Unity budou obvykle automaticky zapisovat do hloubky. Transparentní & textové objekty se ale většinou nebudou ve výchozím nastavení zapisují do hloubky. pokud používáte MRTK standardní Shader nebo textovou Pro mřížku, můžete to snadno odstranit.

Poznámka

chcete-li rychle určit, které objekty ve scéně nezapisovat do vyrovnávací paměti hloubky vizuálně, jedna může použít nástroj pro vyrovnávací paměť hloubky vykreslení v editoru Nastavení v profilu konfigurace MRTK.

Transparentní shader MRTK úrovně Standard

U průhledných materiálů pomocí MRTK standardního shaderuvyberte materiál, který chcete zobrazit v okně inspektora . Pak klikněte na tlačítko opravit a převeďte materiál tak, aby se zapsaly na hloubku (tj. Z-Write on).

Před

Vyrovnávací paměť hloubky před opravou standardní shader MRTK

Po

Standardní shader MRTK vyrovnávací paměti s hloubkou

Pro mřížka textu

pro textovou mřížku Pro objekty vyberte GameObject TMP a zobrazte ji v inspektoru. V části materiálová komponenta přepněte shader přiřazeného materiálu na použití shaderu TextMeshPro MRTK.

oprava vyrovnávací paměti hloubky Pro mřížky textu

Vlastní shader

Při psaní vlastního shaderu přidejte příznak ZWrite do horní části definice Pass Block ke konfiguraci shaderu pro zápis do vyrovnávací paměti hloubky.

Shader "Custom/MyShader"
{
    SubShader
    {
        Pass
        {
            ...
            ZWrite On
            ...
        }
    }
}
Neprůhledná zálohování

Pokud výše uvedené metody nefungují pro daný scénář (tj. pomocí uživatelského rozhraní Unity) je možné, že do vyrovnávací paměti pro hloubku zapíše jiný objekt. Běžným příkladem je použití textu uživatelského rozhraní Unity na plovoucím panelu scény. Nastavením panelu na neprůhledný nebo alespoň na jeho hloubku bude text & panelu stabilizovat platformou, protože jejich hodnoty z jsou tak blízko sebe.

WorldAnchors (HoloLens)

Spolu s tím, že jsou splněné správné konfigurace, aby se zajistila její vizuální stabilita, je důležité zajistit, aby hologramy zůstaly stabilní na správném fyzickém místě. Pro informování platformy na důležitých místech ve fyzickém prostoru můžou vývojáři využít WorldAnchors v GameObjects, které musí zůstat na jednom místě. WorldAnchor je komponenta přidaná k GameObject, která při transformaci tohoto objektu přebírá absolutní kontrolu.

na zařízeních, jako je HoloLens, se neustále vyhledávají a učí prostředí. proto když HoloLens sleduje přesun & pozice v prostoru, jeho odhady se aktualizují a přizpůsobí se systém souřadnic Unity. například pokud je GameObject umístěn 1 milion z kamery na začátku, protože HoloLens sleduje prostředí, může to mít fyzický bod, ve kterém je GameObject umístěný, je ve skutečnosti 1,1. To by vedlo k posunu hologramu. Použití WorldAnchor na GameObject umožní kotvě řídit transformaci objektu tak, že objekt zůstane ve správném fyzickém umístění (tj. Aktualizujte na 1,1 m, nikoli 1 milion za běhu. K zachování WorldAnchors napříč relacemi aplikací můžou vývojáři využít WorldAnchorStore k ukládání a načítání WorldAnchors.

Poznámka

Po přidání komponenty WorldAnchor do GameObject není možné tuto transformaci GameObject změnit (tj. Transforming. Position = x). Vývojář musí odebrat WorldAnchor, aby bylo možné transformaci upravit.

WorldAnchor m_anchor;

public void AddAnchor()
{
    this.m_anchor = this.gameObject.AddComponent<WorldAnchor>();
}

public void RemoveAnchor()
{
    DestroyImmediate(m_anchor);
}

Pokud chcete, aby byla alternativa k ruční práci s kotvami, podívejte se na nástroje pro uzamykání světa společnosti Microsoft.

Viz také