očítačová grafika Viditelnost Jana Dannhoferová (jana.dannhoferova@pef.mendelu.c) Ústav informatik, EF MZLU roblém viditelnosti naleení těch objektů a jejich částí, které jsou viditelné určitého místa algoritm pro řešení viditelnosti jsou vžd spjat s konkrétní repreentací prostorových objektů metod určování viditelnosti: a) vektorové (liniové) výstupem je soubor geometrických prvků (např. úseček) představujících viditelné části objektů vhodnocená data le opakovaně vkreslovat v libovolném rolišení další výstup: soubor akrtých částí objektů technické výkres (výstup např. na plotrech) HLE (Hidden Line Elimination) alg., které vracejí poue úsečk HSE (Hidden Surface Elimination) alg., které vracejí ploch roblém viditelnosti Tříd algoritmů viditelnosti b) rastrové pracují poue v rastru výsledkem je obra složený pielů, které obsahují barvu odpovídající vbarvení viditelných ploch vdnešní době převažují výhod: umožňují práci s barvou a jejími odstín dokáží vkreslit osvětlené a stínované ploch posktují přesvědčivý obra prostorové scén nevýhod: pevný roměr výsledného obráku objektově orientované rchlost výpočtu ávisí na počtu objektů ve scéně ákladem je porovnávání vájemných poloh těles (případně jejich částí jako jsou ploch a hran) pro každý objekt jisti, která jeho část je vidět obraově orientované doba výpočtu ávisí na počtu objektů a počtu pielů rastru ákladem jsou test určující pro každý piel obraovk, která část promítnutého objektu je v tomto pielu nejblíže poorovateli (viditelná) pro každý piel jisti, který objekt je v něm vidět 3 Vlastnosti obraovaných dat Určování viditelnosti drátový model přivrácené stěn obrsové hran viditelné hran počet ploch le snížit vloučením odvrácených stěn 6 1
Liniové algoritm viditelnosti Rastrové algoritm viditelnosti 1. Roděl hran na adní, obrsové a přední (adními se neabývej). Vtvoř prádný senam V potenciálně viditelných hran 3. ro všechn obrsové a přední hran H i dělej: a. řidej hranu H i do senamu V potenciálně viditelných hran b. ro vš. mnohostěn M j dělej: I. ro vš. Hran H k e senamu V dělej: A. Vjmi hranu Hk e senamu V B. Testuj hranu Hk na akrtí mnohostěnem Mj C. okud jsou na hraně naleen jeden nebo dva neakrté úsek, ařaď úsek do senamu V D. okud mnohostěn celou hranu akrývá, dále se jí nebývej c. Vkresli všechn hran e senamu V a vprádni jej 7 rasteriace ploch je prováděna současně s řešením viditelnosti (na rodíl od liniových algoritmů) paměť hloubk (-buffer, depth-buffer) nejnámější a nejefektivnější metoda všší nárok na paměť, ale vsoká rchlost pracování standardní prostředek pro řešení viditelnosti u většin grafických procesorů tvoří dvouroměrné pole s roměr totožnými s velikostí obrau (obraovkou) každá položka paměti hloubk obsahuje souřadnici toho bodu, který leží nejblíže poorovateli a jehož průmět leží v odpovídajícím pielu v rastru 8 Z-buffer Z-buffer kreslení do bufferu kreslení do video-ram (rastrová tiskárna s bufferem) výhod: každá plocha je pracovávána poue jednou správné vkreslování nestandardních situací není třeba třídit vplňování jednoduchost výpočtů pro každý piel ukládám: souřadnici (paměť hloubk) barvu (obraová paměť video-ram) 1. inicialiace vplň obraovou paměť barvou poadí vplň Z-buffer hodnotou - ( nekonečno ). ápis všech objektů do Z-bufferu každou plochu rolož na piel a pro každý její piel o souřadnicích [ i, i ] stanov hloubku i má-li i větší hodnotu než položka [ i, i ] v Z-bufferu, pak: obarvi piel [ i, i ]v obraové paměti barvou této ploch položku [ i, i ]v paměti hloubk aktualiuj hodnotou i 9 10 Řádkový roklad paměť hloubk je rodělena na pruh (řádk) každá plocha je pracovávána několikrát (nižší rchlost alg.) 1. Vplň daný řádek v obraové paměti barvou poadí. Vplň řádek hloubk hodnotou - 3. Každou plochu, která je protínána daným řádkem, rolož na piel a pro každý její piel o souřadnici i stanov hloubku i. Je-li i větší než položka i v řádku hloubk, pak: a. obarvi piel o souřadnici i na odpovídajícím řádku v obraové paměti barvou této ploch b. položku i v řádku hloubk aktualiuj hodnotou i 11 přímé vkreslování ploch na obraovku v pořadí od nejvdálenějších k nejbližším vůči poorovateli ploch bližší k poorovateli jsou vkreslován poději (překrjí adní ploch) viditelnost vřešena přiroeným působem řešení viditelnosti je převedeno na úlohu seřaení ploch podle vdálenosti od poorovatele předpoklad: rovinné ploch se navájem neprotínají! fáe: třídění podle hloubk odstranění nejasností v pořadí řádkový roklad a obraení 1
1. Třídění podle hloubk ploch setřídíme podle minimální souřadnice vestupně (tj. odadu dopředu) vtvoříme tak vstupní senam S. Kontrola pořadí e ačátku senamu S vbereme plochu (kandidáta na kresbu) proti otestujeme ostatní ploch, které s ní mohou kolidovat (právě testovanou plochu onačíme ) 1 3 1 = aktivní plocha (je podrobována několika testům akrývání vhledem k ostatním plochám) 3 13 1. A) Minima test nejprve provedeme nejjednodušší test v průmětu porovnáme obdélník opsané oběma plochám jestliže nemají společný bod, testování končí jinak pokračujeme dalším testem a. B) versus rovina testujeme, da plocha neleží celá a rovinnou danou ploškou v kladném případě testování končí jinak pokračujeme dalším testem a 1 16. C) versus rovina testujeme, da plocha neleží celá před rovinou danou plochou v kladném případě testování končí jinak pokračujeme dalším testem a. D) Úplný test v průmětu pokud předchoí test neuspěl, musíme provést úplný test ploch a v průmětu je potřeba jistit, da není některá část překrtá ploškou v takovém případě b nešlo nakreslit před! 17 18 3
. D) Úplný test v průmětu testujeme proti sobě všechn hran a najdeme-li průsečík, porovnáme v nich souřadnice je-li vžd a, test končí jinak nele nakreslit před! <. D) Úplný test v průmětu jestliže neeistuje průsečík hran a, je třeba ještě kontrolovat, da neleží ploška celá uvnitř nebo naopak v takovém případě opět porovnáme souřadnice < 19 0. Změna pořadí jestliže nele nějakého důvodu nakreslit před, kusíme přesunout plošku na ačátek senamu S (před ) pro budeme opět provádět všechn test. fáe (jak jsme je popsali s plochou ) test nového kandidáta proti už bl velké části proveden, stačí poue doplnit obrácené test B a C kvůli acklení se musí každý kandidát onačit vláštním přínakem. Zacklení jestliže je testován některý kandidát podruhé, došlo k acklení cklus le odstranit rostřižením některé ploch (pořadí A 1 B C A ) 3. Vkreslení kandidáta 1 Dělení obraovk Dělení obraovk předpoklad: složitý problém le rodělit na řadu menších, snáe řešitelných jak má být vplněno dané obdélníkové okno obraovk? při vplňování okna mohou nastat následující možnosti: pokud do okna neasahuje žádný objekt, ůstává vplněné barvou poadí pokud do okna asahuje právě jedna plocha, bude tato plocha uvnitř okna vplněna, btek íská barvu poadí pokud do okna asahuje více ploch, ale plocha nejbližší poorovateli je cela překrývá, pak je okno vplněno barvou této ploch pokud okno obsahuje komplikovanější část scén, pak je roděleno na čtři menší okna a algoritmus je opakován pro každé nich 3
Literatura Beneš, B., Felkel,., Sochor, J., Žára, J. Moderní počítačová grafika. Computer ress: Brno, 00. Beneš, B., Sochor, J., Žára, J. Algoritm počítačové grafik. ČVUT: raha, 1996. Sochor, J.: Základ počítačové grafik. FI MU: Brno, 001.