Rastrování
Ve 2D počítačové grafice označuje rasterizace (z „rastru“: pravidelné vzory rozložené po povrchu), nazývaná také rendrování nebo skenování , převod vektoru na rastrovou grafiku .
Postup
Existuje řada algoritmů pro rastrování grafických primitiv , jako jsou čáry, mnohoúhelníky , kruhy a další geometrické tvary, viz:
Známým problémem screeningu je efekt schodiště . Pokud barevná hloubka větší než 1 bit na pixel je k dispozici pro tyto rastrový být generován , tento účinek může být snížen pomocí anti-aliasing . Existuje několik metod, z nichž některé fungují nevážené a některé používají speciální rekonstrukční filtr. Při rastrování textu existují speciální problémy, kterým lze zabránit pomocí nápovědy .
Screening tlustých primitiv
Při skríningu grafických primitiv určité tloušťky existuje několik možností , pokud již nejsou použity algoritmem vyhlazování - aliasing . V případě polygonů je třeba zohlednit také spojovací body mezi jednotlivými úsečkami, viz Rastrování polygonů .
- Opakování pixelů
- Jednou z metod je při rastrování nakreslit několik pixelů svisle nebo vodorovně namísto jednoho . Jedním z problémů je, že konce křivek se na silných křivkách objevují „odříznuté“. Kromě toho mohou být v místech, kde přepínáte z horizontálního na vertikální opakování nebo naopak, patrné mezery. Kromě toho , podobně jako tenké čáry, mají takové rastrované křivky jinou tloušťku v závislosti na místním sklonu .
- štětec
- Určitá rastrová grafika se přesune po křivce jako „štětec“, v nejjednodušším případě čtverec s požadovanou délkou hrany . I zde se tloušťka liší v závislosti na přechodu, ale na rozdíl od opakování pixelů je čára nejsilnější s úhlopříčnými kroky. Řešením je otočit čtverec podle místního sklonu křivky, ale je jednodušší použít kruh jako štětec. Nevýhodou metody je, že při rasterizaci narazíte na velké množství pixelů , které již byly vybarveny v předchozích krocích . Čím silnější je křivka, tím větší je tento efekt. Mnohoúhelníkové kartáče lze použít k vyřešení problému měnící se tloušťky křivky.
- Vyplňte mezi hranami
- Dalším způsobem, jak rastrovat silnou křivku, je nakreslit její dva okraje v určité vzdálenosti od sebe a vyplnit mezeru mezi nimi. Nevýhodou je, že u dvoubarevného rastru může křivka vypadat mírně posunutá kvůli chybám zaokrouhlování. V případě elips je třeba poznamenat, že mřížka nakreslením dvou konfokálních elips s poloosami různých délek není geometricky správná.
- Čáry
- Nakonec existuje možnost kreslení silných křivek spojováním krátkých úseček. Stejné speciální funkce jako při rastrování polygonů je třeba dodržovat, aby byly úsečky navzájem správně spojeny.
Vypuštění primitiv
Obrázky, které již byly nakresleny, lze selektivně odstranit opětovným nakreslením s barvou pozadí. To však nefunguje, pokud se překrývají s jinými čísly, protože lze také odstranit nechtěné části obrazu. Účinným způsobem, jak se tomu vyhnout, je testování minimaxem nebo boxem. Zde se nejprve zkontroluje, zda jsou v obdélníku překlenutém obrázkem, který má být odstraněn, další postavy. Pouze v tomto případě musíte otestovat křižovatky a v případě potřeby překreslit celou oblast.
3D projekce
Trasování paprsků a rastrování jsou dva zásadně odlišné přístupy k vykreslování obrázků ze 3D scén, i když pro primární paprsky počítají stejné výsledky. Rastrování promítá každý trojúhelník na rovinu obrazu a uvádí všechny pokryté pixely ve 2D , zatímco sledování paprsků se provádí ve 3D generováním paprsků přes každý pixel a následným nalezením nejbližšího průsečíku s trojúhelníkem.
Jeden se může vyhnout použití modelu nebo zobrazit transformaci tím, že místo toho transformuje generátor vzorkovače. Zatímco čísla s plovoucí desetinnou čárkou se obvykle používají při sledování paprsku, s jejich numerickými problémy lze 3D screening implementovat se stejnými pravidly konzistence jako 2D screening. Ve 3D rastrování jsou jedinými zbývajícími rozdíly mezi těmito dvěma přístupy křížení scén a výčet potenciálně pokrytých vzorků v rovině obrazu (viz binning ).
Výpočty
Chcete-li zjistit, zda je pixel v obrazové rovině je pokryta pomocí trojúhelníku , postačí ověřit, zda výstupek nosník (viz centrální výstupek ), který prochází protíná pixel trojúhelník.
Za předpokladu, že střed projekce na původu v trojrozměrném systému kartézských souřadnic , a odkazuje na rohy promítaného trojúhelníku , , (obrázek 1), pak se tyto podmínky za následek pro pixel v promítnuté trojúhelníku je umístěn (obrázek 3):
- Rovina, která prochází trojúhelníkem, rozděluje trojrozměrný prostor na dva poloprostory . Pixel obrazové roviny musí ležet v poloprostoru, ve kterém je bod umístěn. Také Pixel
- leží v poloprostoru definovaném trojúhelníkem, ve kterém je bod umístěn a
- leží v poloprostoru definovaném trojúhelníkem, ve kterém je bod umístěn.
Následující funkci lze použít ke kontrole, zda je bod umístěn v poloprostoru definovaném body , a :
kde je skalární součin z vektorů a . Normálový vektor je přes součin
definované a je kolmé k trojúhelníku . Tato funkce počítá objem o Tetra z S s rohy , , , . Pokud je bod nad trojúhelníkem , znaménko je kladné, pokud je níže, znaménko je záporné. Pokud leží v rovině trojúhelníku , je objem 0.
S funkcemi
lze formulovat následující prohlášení:
- Pixelové spočívá v promítá trojúhelník, pokud a i je.
Průsečík pixelu s původním trojúhelníku může také barycentrický souřadnice jednotlivých bodů , , jsou vyjádřeny (obrázek 4). Pak:
- S
kde a jsou reálná čísla . Barycentrické souřadnice jsou označeny.
Algoritmy
Jakmile je k vykreslení vybrán trojúhelník , je důležité efektivně identifikovat paprsky, které pokrývá. U tradičního trasování paprsků jsou uvedeny pouze trojúhelníky, u nichž je pravděpodobné, že budou protínány průchodem. U větších částí obrazu však trojúhelník může pokrýt pouze malou část pixelů a může být výhodné použít binning k urychlení hledání pokrytých pixelů. Ze stejného důvodu se při rasterizaci vždy používalo binování, aby se rychle zobrazily pokryté pixely na obrazovce .
Obecná formulace kombinovaného procházení a binování ukazuje následující rekurzivní funkci , která je reprezentována v pseudokódu :
funktion durchlaufen(bildausschnitt F, knoten N) falls istVerdeckt oder istAuszerhalb dann stop falls bildausschnittTeilen dann teile F in teilausschnitte F[i] für jeden teilausschnitt F[i] durchlaufen(F[i], N) ende sonst falls pixelErzeugen dann rastern(N, binning) sonst für jeden nachfolger_von_N durchlaufen(F, nachfolger_von_N) ende ende durchlaufen(F, nachfolger_von_N)
Zde F je obrazová část a N je uzel struktury prostorového indexu , který obvykle začíná celým výřezem nebo kořenovým uzlem. Psané kurzivou slova istVerdeckt, istAuszerhalb, bildausschnitt akcií , pixel generovat istAuszerhalb a Binning testovací funkce pro volání, chování algoritmu kontroly a nám umožňují vyrábět výše uvedených zobrazovacích algoritmů a objevovat nové cesty.
literatura
- James D. Foley et al: Počítačová grafika: Principy a praxe. Addison-Wesley, Reading 1995, ISBN 0-201-84840-6
- David F. Rogers: Procedurální prvky pro počítačovou grafiku. WCB / McGraw-Hill, Boston 1998, ISBN 0-07-053548-5
webové odkazy
- Základy počítačové grafiky - rasterizace. Archivovány od originálu 6. srpna 2016 ; Citováno 9. listopadu 2017 .
Individuální důkazy
- ^ Hans F. Ebel , Claus Bliefert : Přednášky z přírodních věd, technologií a medicíny. 1991; 2., upravené vydání 1994, VCH, Weinheim ISBN 3-527-30047-3 , s. 302.
- ^ John D. Hobby: Digitalizované stopy kartáčů. Dizertační práce, Stanford University, 1985 ( PDF, 30 MB ( Memento ze dne 26. října 2006 v internetovém archivu ))
- ↑ a b c 3D Rasterization: Most mezi Rasterization a Ray Casting