Stanovení skrytého povrchu - Hidden-surface determination

Ve 3D počítačové grafice je stanovení skrytého povrchu (známé také jako stanovení zobrazeného povrchu , odstranění skrytého povrchu ( HSR ), odstranění okluze ( OC ) nebo stanovení viditelného povrchu ( VSD )) proces identifikace toho, jaké povrchy a části povrchy lze vidět z určitého úhlu pohledu. Algoritmus pro stanovení skrytého povrchu je řešením problému viditelnosti , který byl jedním z prvních hlavních problémů v oblasti 3D počítačové grafiky. Proces stanovení skrytého povrchu se někdy nazývá skrývání a takový algoritmus se někdy nazývá hider . Když se odkazuje na vykreslování řádků, je to známé jako odstranění skrytých řádků . Pro správné vykreslení scény je nutné určení skrytého povrchu, aby člověk nemusel prohlížet prvky skryté za samotným modelem, což umožňuje viditelnost pouze přirozeně viditelné části grafiky.

Pozadí

Stanovení skrytého povrchu je proces, při kterém je zabráněno vykreslení povrchů, které by pro uživatele neměly být viditelné (například proto, že leží za neprůhlednými objekty, jako jsou stěny). I přes pokrok v hardwarových schopnostech stále existuje potřeba pokročilých vykreslovacích algoritmů . Odpovědností vykreslovacího modulu je umožnit velké světové prostory a jak se světová velikost blíží nekonečnu, motor by neměl zpomalit, ale zůstat konstantní rychlostí. Optimalizace tohoto procesu závisí na schopnosti zajistit nasazení co nejméně prostředků k vykreslení povrchů, které se nakonec nezobrazí uživateli.

Existuje mnoho technik pro stanovení skrytého povrchu. Jsou v zásadě cvičením třídění a obvykle se liší v pořadí, v jakém se třídění provádí, a v tom, jak je problém rozdělen. Třídění velkého množství grafických primitiv se obvykle dělí rozdělením a dobýváním .

Algoritmy

Vzhledem k vykreslovacímu potrubí jsou projekce , ořezávání a kroky rasterizace zpracovány odlišně pomocí následujících algoritmů:

Z-pufrování
Během rasterizace se hloubka / hodnota Z každého pixelu (nebo vzorek v případě vyhlazování, ale bez ztráty obecnosti se použije termín pixel ) porovná s existující hodnotou hloubky. Pokud je aktuální pixel za pixelem v Z-bufferu, pixel je odmítnut, jinak je zastíněn a jeho hodnota hloubky nahradí ten v Z-bufferu. Z-buffering podporuje dynamické scény snadno a je aktuálně efektivně implementován v grafickém hardwaru. Toto je aktuální standard. Náklady na použití Z-bufferingu spočívají v tom, že používá až 4 bajty na pixel a že rastrový algoritmus potřebuje zkontrolovat každý rastrovaný vzorek proti Z-bufferu. Z-buffer může také trpět artefakty kvůli chybám v přesnosti (také známým jako Z-fighting ).
Vyrovnávací pufry ( C-pufr ) a povrchový pufr ( S-pufr )
Rychlejší než Z-buffery a běžně používané ve hrách v Quake I éry. Namísto ukládání hodnoty Z na pixel ukládají seznam již zobrazených segmentů na řádek obrazovky. Nové polygony jsou poté vyříznuty proti již zobrazeným segmentům, které by je skryly. S-buffer může zobrazit netříděné polygony, zatímco C-buffer vyžaduje zobrazení polygonů od nejbližších po nejvzdálenější. Protože technika C-bufferu nevyžaduje vykreslení pixelu více než jednou, proces je o něco rychlejší. To se běžně používalo u stromů dělení binárních prostorů (BSP), které zajišťovaly třídění polygonů.
Seřazený seznam aktivních hran
Použito v Quake 1, to bylo uložení seznamu okrajů již zobrazených polygonů (viz vykreslování scanline ). Mnohoúhelníky se zobrazují od nejbližších po nejvzdálenější. Nové polygony jsou oříznuty proti již zobrazeným hranám polygonů, čímž se vytvoří nové polygony, které se zobrazí, a poté se uloží další hrany. Je to mnohem těžší implementovat než S / C / Z-buffery, ale škálování je mnohem lepší se zvýšením rozlišení.
Painterův algoritmus
Seřadí polygony podle barycentra a přitáhne je zpět dopředu. To vytváří několik artefaktů, když se aplikuje na scény s polygony podobné velikosti, které vytvářejí hladké sítě a zapínají utrácení zadního obličeje . Cena zde je krok třídění a skutečnost, že mohou nastat vizuální artefakty. Tento algoritmus je rozbit podle návrhu pro obecné scény, protože nedokáže zpracovat polygony v různých běžných konfiguracích, jako jsou povrchy, které se navzájem protínají.
Rozdělení binárního prostoru (BSP)
Rozdělí scénu podél rovin odpovídajících hranic polygonů. Pododdělení je konstruováno takovým způsobem, aby poskytovalo jednoznačné uspořádání hloubky z libovolného bodu ve scéně při procházení stromu BSP. Nevýhodou je, že strom BSP je vytvořen s nákladným předzpracováním. To znamená, že je méně vhodný pro scény sestávající z dynamické geometrie. Výhodou je, že data jsou předtříděna a bezchybná, připravená pro dříve zmíněné algoritmy. Všimněte si, že BSP není řešením HSR, pouze pomůckou.
Sledování paprsku
Pokusy modelovat cestu světelných paprsků k pohledu sledováním paprsků z pohledu do scény. Ačkoli nejde o algoritmus odstraňování skrytého povrchu jako takový, implicitně řeší problém s odstraněním skrytého povrchu hledáním nejbližšího povrchu podél každého pozorovacího paprsku. Účinně to odpovídá třídění veškeré geometrie na základě jednotlivých pixelů.
Algoritmus Warnock
Rozdělí obrazovku na menší oblasti a roztřídí v nich trojúhelníky. Pokud existuje nejednoznačnost (tj. Polygony se v těchto oblastech do hloubky překrývají), dochází k dalšímu dělení. Při limitu může dojít k dalšímu rozdělení až na úroveň pixelu.

Vyřazení a stanovení viditelného povrchu

Související oblastí s určením viditelného povrchu (VSD) je utracení , což se obvykle děje před VSD ve vykreslovacím kanálu. Primitiva nebo dávky primitiv lze odmítnout jako celek, což obvykle snižuje zátěž dobře navrženého systému.

Výhodou včasného utracení v potrubí je, že celé objekty, které jsou neviditelné, nemusí být načteny, transformovány, rastrovány nebo stínovány. Zde jsou některé typy vyřazovacích algoritmů:

Prohlížení-frustum utracení

Prohlížení komolý kužel je geometrická reprezentace objemu viditelné na virtuální kamery . Přirozeně nebudou objekty mimo tento svazek viditelné na konečném obrázku, takže jsou zahozeny. Objekty často leží na hranici pozorovacího komolého prostoru. Tyto objekty jsou rozřezány na kousky podél této hranice v procesu zvaném ořezávání a kousky, které leží mimo komolení, jsou zahozeny, protože je není kam nakreslit.

Utracení zadní strany

U 3D objektů je část povrchu objektu otočena směrem k fotoaparátu a zbytek směřuje od kamery, tj. Je na zadní straně objektu a brání mu přední strana. Pokud je objekt zcela neprůhledný, tyto povrchy se nikdy nemusí kreslit. Jsou určeny podle pořadí navíjení vrcholů: pokud má nakreslený trojúhelník své vrcholy ve směru hodinových ručiček na projekční rovině, když je otočený směrem k fotoaparátu, přepne se proti směru hodinových ručiček, když se povrch odvrátí od kamery.

Mimochodem, také to činí objekty zcela průhlednými, když je v nich umístěna kamera pohledu, protože pak všechny povrchy objektu směřují od kamery a jsou vykreslovány rendererem. Aby se tomu zabránilo, musí být objekt nastaven jako oboustranný (tj. Neprovádí se žádné utržení zadní strany) nebo musí mít oddělené vnitřní povrchy.

Odstraňování příspěvků

Objekty jsou často tak daleko, že významně nepřispívají k výslednému obrazu. Tyto objekty jsou vyhozeny, pokud je jejich projekce příliš malá. Viz Ořezová rovina .

Zabíjení okluze

Mohou být odstraněny objekty, které jsou zcela za jinými neprůhlednými objekty. Jedná se o velmi populární mechanismus k urychlení vykreslování velkých scén, které mají složitost střední až vysoké hloubky . Existuje několik typů přístupů zabraňujících okluzi:

  • Vykreslování potenciálně viditelné sady ( PVS ) rozděluje scénu na regiony a předem pro ně počítá viditelnost. Tyto sady viditelnosti jsou poté indexovány za běhu, aby se rychle získaly vysoce kvalitní sady viditelnosti (účtující složité interakce okluzorů).
  • Vykreslení portálu rozdělí scénu na buňky / sektory (místnosti) a portály (dveře) a vypočítá, které sektory jsou viditelné, a to tak, že je ořízne proti portálům.

Disertační práce Hansong Zhanga „Efektivní odstranění okluze pro interaktivní zobrazení libovolných modelů“ popisuje přístup k odstranění okluze.


Rozděl a panuj

Populární téma v literatuře VSD je rozděl a panuj . Warnock algoritmus propagoval rozdělení obrazovky. Sledování paprsků je přístup sledování paprsků, který rozděluje viditelné objemy na paprsky. Různé přístupy k dělení prostoru na obrazovce snižují počet primitiv uvažovaných v každé oblasti, např. Obklady nebo ořez BSP na obrazovce. Obklady mohou být použity jako předzpracování jiných technik. Hardware Z-bufferu může obvykle obsahovat hrubé „hi-Z“, proti kterému lze primitiva brzy odmítnout bez rasterizace, jedná se o formu utajení okluze.

Hraniční hierarchie svazků (BVHs) are often used to subdivide the scene's space (examples are the BSP tree , the octree and the kd-tree ). To umožňuje, aby bylo určování viditelnosti provedeno hierarchicky: efektivně, pokud je uzel ve stromu považován za neviditelný , pak jsou také neviditelné všechny jeho podřízené uzly a není nutné žádné další zpracování (všechny mohou být vykreslovačem odmítnuty). Pokud je uzel považován za viditelný , je třeba vyhodnotit každé z jeho podřízených položek. Tento průchod je ve skutečnosti procházka stromem, kde neviditelnost / okluze nebo dosažení uzlu listu určuje, zda se má zastavit, nebo zda se má opakovat.

Viz také

Zdroje