Sdílet prostřednictvím


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 Screenshot shows no deterministic precedence between red and green quads.
Povoleno zmírnění rizik v boji proti Z Screenshot displays the red quad precedence with a solid red rectangle.
Zvýraznění kontrolního panelu je povolené Screenshot shows red and green quad toggle preference with a checkerboard pattern rectangle.

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

Další kroky