Zmírnění Z-fightingu
Když se překrývají dva trojúhelníkové povrchy, není jasné, které z nich by se měly vykreslit na druhé straně. Výsledek se dokonce liší podle pixelů, což vede k artefaktům závislým na zobrazení fotoaparátu. Když se kamera nebo síť přesune, tyto vzory blikají výrazně. Tento artefakt se nazývá z-boj. U aplikací rozšířené reality a virtuální reality se problém zvětšuje, protože zařízení připojená k hlavě se přirozeně pohybují. Aby se zabránilo nepříjemnostem prohlížeče, nabízí Azure Remote Rendering funkce zmírnění rizik.
Poznámka:
Nastavení zmírnění rizik z-boj nemá žádný vliv na vykreslování cloudu bodů.
Režimy zmírnění rizik v boji proti Z
Situaci | Výsledek |
---|---|
Pravidelné boje proti z | |
Povoleno zmírnění rizik v boji proti Z | |
Zvýraznění kontrolního panelu je povolené |
Následující kód umožňuje zmírnění rizik z-boj:
void EnableZFightingMitigation(RenderingSession session, bool highlight)
{
ZFightingMitigationSettings settings = session.Connection.ZFightingMitigationSettings;
// enabling z-fighting mitigation
settings.Enabled = true;
// enabling checkerboard highlighting of z-fighting potential
settings.Highlighting = highlight;
}
void EnableZFightingMitigation(ApiHandle<RenderingSession> session, bool highlight)
{
ApiHandle<ZFightingMitigationSettings> settings = session->Connection()->GetZFightingMitigationSettings();
// enabling z-fighting mitigation
settings->SetEnabled(true);
// enabling checkerboard highlighting of z-fighting potential
settings->SetHighlighting(highlight);
}
Poznámka:
Zmírnění rizik v boji proti Z je globální nastavení, které ovlivňuje všechny vykreslené sítě.
Důvody z-boj
Z-boj se děje hlavně ze dvou důvodů:
- Pokud jsou povrchy daleko od kamery, přesnost jejich hloubkových hodnot se sníží a hodnoty se stanou nerozlišitelné.
- Když se povrchy v síti fyzicky překrývají
První problém může vždy nastat a je obtížné odstranit. Pokud k této situaci dojde ve vaší aplikaci, ujistěte se, že poměr vzdálenosti blízké roviny k vzdálenosti daleko je tak nízký jako praktický. Například blízký rovina ve vzdálenosti 0,01 a vzdálená rovina ve vzdálenosti 1000 vytváří tento problém mnohem dříve, než když je blízko letadla na 0,1 a na vzdálené rovině ve vzdálenosti 20.
Druhým problémem je označení špatně vytvořeného obsahu. Ve skutečném světě nemohou být dva objekty na stejném místě ve stejnou dobu. V závislosti na aplikaci můžou uživatelé chtít vědět, jestli existují překrývající se povrchy a kde se nacházejí. Například scéna CAD budovy, která je základem skutečné stavby, by neměla obsahovat fyzicky nemožné průsečíky povrchu. Aby bylo možné vizuální kontrolu, je k dispozici režim zvýraznění, který zobrazuje potenciální z-boj jako animovaný vzor checkerboardu.
Omezení
Poskytované zmírnění rizik z-boj je nejlepším úsilím. Není zaručeno, že odstraní všechny z-boj. Zmírnění také upřednostňuje jeden povrch před druhým. Když máte povrchy, které jsou příliš blízko sebe, skončí "špatná" plocha nahoře. Běžným problémem je použití textu a dalších obtisků na povrch. S povoleným zmírněním z-bojů by tyto podrobnosti mohly snadno zmizet.
Důležité informace o výkonu
- Povolení zmírnění rizik v boji proti z způsobuje malé až žádné režijní náklady na výkon.
- Navíc povolení překrytí z-boj způsobuje nevýkonnou režii na výkon, i když se může lišit v závislosti na scéně.
Dokumentace k rozhraní API
- Vykreslování jazyka C#Připojení ion ZFightingMitigation Nastavení vlastnost
- Vykreslování C++Připojení ion::ZFightingMitigation Nastavení()