Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

ALGORITMY ZOBRAZOVÁNÍ 3D SCÉNY JANA ŠTANCLOVÁ Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK.

Podobné prezentace


Prezentace na téma: "ALGORITMY ZOBRAZOVÁNÍ 3D SCÉNY JANA ŠTANCLOVÁ Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK."— Transkript prezentace:

1 ALGORITMY ZOBRAZOVÁNÍ 3D SCÉNY JANA ŠTANCLOVÁ Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK

2 cíl – nalézt ty části scény, které jsou viditelné z místa pozorovatele algoritmy orientované na obrazovku –hlavní cyklus probíhá obrazovkou (pixely) vrhání paprsku, Watkinson algoritmy orientované přes prostor –průchod scénou bez uspořádání Z-buffer, Appelův algoritmus –průchod scénou zepředu dozadu algoritmus plovoucího horizontu –průchod zezadu dopředu malířův algoritmus Klasifikace algoritmů 2/93 Jana Štanclová,

3 Obsah VRHÁNÍ PAPRSKU (ray casting) 3/93 Jana Štanclová,

4 algoritmus orientovaný přes obrazovku –každým pixelem obrazovky vržen paprsek pixel obrazovky a oko pozorovatele –hledání průsečíků paprsku se scénou –zobrazení průsečíků na průmětnu (obrazovka) použití –pro vykreslování CSG scény scéna složená z těles a operací nad nimi Vrhání paprsku (ray casting) 4/93 Jana Štanclová,

5 každým pixelem obrazovky vržen paprsek –hledání průsečíků se scénou Zobrazování vrháním paprsku 5/93 Jana Štanclová,

6 elementární tělesa –snadné spočtení průsečíků –zjištění začátku a konce průniku paprsku s tělesem (konvexní tělesa) množinové operace –na polopřímce paprsku –obecný průnik paprsku se scénou → množina intervalů geometrické transformace –na paprsek aplikovány inverzní transformace Průsečík paprsku s CSG scénou 6/93 Jana Štanclová,

7 1.průsečík paprsku s elementárními tělesy 2.aplikování množinových operací –např. P ∩ (A – B) Průsečík paprskus tělesy 7/93 Jana Štanclová,

8 Množinové operace na paprsku 8/93 Jana Štanclová,

9 Množinové operace na paprsku 9/93 Jana Štanclová,

10 barva pixelu na základě průniku paprsku se scénou –prázdný průnik paprsku s CSG scénou → ?? –neprázdný průnik → ?? Určení barvy pixelu 10/93 Jana Štanclová,

11 barva pixelu na základě průniku paprsku se scénou –prázdný průnik paprsku s CSG scénou → barva pozadí –neprázdný průnik → barva prvního tělesa, které paprsek protne Určení barvy pixelu 11/93 Jana Štanclová,

12 Z-buffer Z-BUFFER (paměť hloubky) 12/93 Jana Štanclová,

13 z-buffer –algoritmus orientovaný přes prostor průchod scénou bez uspořádání –nejznámější a nejefektivnější metoda řešení viditelnosti ve většině grafických akcelerátorů –výhody vysoká rychlost zpracování lze vyplňovat plochy i stínovat není třeba třídit plošky správné vykreslení i nestandardních situací –prosekávání ploch, cyklické zákryty,... –nevýhody velké nároky na paměť Z-buffer 13/93 Jana Štanclová,

14 paměť hloubky (z-buffer) –dvojrozměrné pole –rozměry totožné s rozměry obrazovky –prvek z-bufferu = souřadnice bodu nejblíže pozorovateli na odpovídajícím pixelu obrazovky není nutné ukládat všechny 3 souřadnice daného bodu x a y... indexy v z-bufferu z... uložena v z-bufferu → vzdálenost od pozorovatele = hloubka Paměť hloubky 14/93 Jana Štanclová,

15 pixel obrazovky –barva uložena v Video-RAM –hloubka = vzdálenost od pozorovatele uložena do z-bufferu z-buffer... typicky bitů pro jeden pixel Paměť hloubky 15/93 Jana Štanclová,

16 1.inicializace Video-RAM := „barva pozadí“ Z-buffer := „nekonečno“ 2.zápis všech objektů do z-bufferu –každý objekt rozložen na jednotlivé pixely rozklad lze provést v libovolném pořadí –pro každý pixel proveden test hloubky WritePixel (x, y, z, barva : integer); if z < Zbuf[x,y] then begin Zbuf[x,y] := z; PutPixel(x,y,barva); end; testovaný pixel p ř ed doposud nejbližším pixelem → překreslení Algoritmus z-buffer 16/93 Jana Štanclová,

17 výhody –vysoka rychlost zpracování každá ploška zpracovávána jen jednou lineární nárůst doby zpracování s počtem plošek –není třeba třídit plošky zpracování tak, jak přicházejí na vstup není potřeba pomocných datových struktur –plošky nemusí být rovinné lze kreslit libovolné objekty rozložení objektu na pixely → triviální –správné vykreslení i nestandardních situací prosekávání ploch, cyklické zákryty,... –vyplňování ploch i stínování Výhody z-bufferu 17/93 Jana Štanclová,

18 nevýhody –velká spotřeba paměti (kdysi) 800 × 600 × 16 bitů = 937 kB 1024 × 768 × 24 bitů = 2,25 MB –několikanásobné překreslování některých pixelů ve Video-RAM Nevýhody z-bufferu 18/93 Jana Štanclová,

19 Algoritmus plovoucího horizontu ALGORITMUS PLOVOUCÍHO HORIZONTU 19/93 Jana Štanclová,

20 algoritmus orientovaný přes prostor –průchod scénou odpředu dozadu pouze pro vykreslování funkcí dvou proměnných plocha tvaru z = f (x, y) kde x  y  generování čárové kresby Algoritmus plovoucího horizontu 20/93 Jana Štanclová,

21 idea algoritmu –vykreslování jednotlivých povrchových křivek plochy zafixování proměnné x → nakreslení jedné povrchové křivky –povrchové křivky se kreslí odpředu dozadu objekt zakryt pouze objekty nakreslenými dříve –z povrchové křivky se vykreslí jen viditelné části nejsou zakryty Algoritmus plovoucího horizontu 21/93 Jana Štanclová,

22 kreslení porchových křivek odpředu dozadu –vykreslení viditelných částí Algoritmus plovoucího horizontu 22/93 Jana Štanclová,

23 princip algoritmu –jednotlivé povrchové křivky se kreslí odpředu dozadu objekt zakryt pouze objekty nakreslenými dříve –udržuje se obrys dosud nakreslené části roviny funkce dvou proměnných → obrys určen dvěmi křivkami (resp. lomenými čarami) → horní a dolní horizont –viditelné části křivek → ?? Princip algoritmu plovoucího horizontu 23/93 Jana Štanclová,

24 princip algoritmu –jednotlivé povrchové křivky se kreslí odpředu dozadu objekt zakryt pouze objekty nakreslenými dříve –udržuje se obrys dosud nakreslené části roviny funkce dvou proměnných → obrys určen dvěmi křivkami (resp. lomenými čarami) → horní a dolní horizont –viditelné části křivek → mimo aktuální obrys Princip algoritmu plovoucího horizontu 24/93 Jana Štanclová,

25 obrys určen dvěmi křivkami (lomenými čarami) → horní a dolní horizont viditelné části křivek → mimo aktuální obrys –„nad“ nebo „pod“ již vykreslenou oblastí Výpočet viditelnosti 25/93 Jana Štanclová,

26 po vykreslení povrchové křivky → oprava horizontu –zvětšení horizontu Oprava obrysových křivek 26/93 Jana Štanclová,

27 1.lomená čára: [x 1,y 1 ], [x 2,y 2 ],..., [x n,y n ] kde x i < x i+1 –vektorový výstup –výhody: ?? –nevýhody: ?? 2.pole mezních hodnot: y min [i], y max [i] kde 0 ≤ i < x res –rastrový výstup –omezená přesnost –výhody: ?? –nevýhody: ?? Implementace horizontu 27/93 Jana Štanclová,

28 1.lomená čára: [x 1,y 1 ], [x 2,y 2 ],..., [x n,y n ] kde x i < x i+1 –vektorový výstup –velká přesnost –nutnost počítat průsečíky lomených čar při opravě horizontu 2.pole mezních hodnot: y min [i], y max [i] kde 0 ≤ i < x res –rastrový výstup –omezená přesnost –testování na úrovni pixelů (efektivnější pro menší rozlišení) –snadnější implementace Implementace horizontu 28/93 Jana Štanclová,

29 horizont pole mezních hodnot i y min y max Implementace horizontu (pole mezních hodnot) 29/93 Jana Štanclová,

30 dvě sítě křivek Dvě sítě povrchových křivek 30/93 Jana Štanclová,

31 Obsah WARNOCKŮV ALGORITMUS (rekurzivní dělení obrazovky) 31/93 Jana Štanclová,

32 Warnockův algoritmus –složitý problém → rozdělení na řadu menších, snáze řešitelných metoda rozděl a panuj –J. Warnock, 1969 –vyplňování ploch v rastrovém prostředí každý pixel kreslen jen jednou lze i stínovat –scéna složená z rovinných plošek plošky se mohou prosekávat Warnockův algoritmus 32/93 Jana Štanclová,

33 metoda rozděl a panuj –jednoduché případy → kreslí se přímo –složitejší situace → rekurzivní dělení idea algoritmu –jak vyplnit obdélníkové okno na obrazovce –rozhodnutí příliš složité → rozdělení okna dva kolmé řezy v polovině → čtyři menší části –rekurzivní opakování algoritmu na menší části Warnockův algoritmus 33/93 Jana Štanclová,

34 1. stěna pokrývá okno stěna okno 2. stěna zasahuje do okna 3. stěna nezasahuje do okna Poloha plošky vzhledem k oknu 34/93 Jana Štanclová,

35 1.žádná ploška nezasahuje ani nepokrývá okno –?? 2.jediná ploška pokrývá okno, ostatní plošky do něj nezasahují –?? 3.pouze jedna ploška zasahuje do okna –?? Výpočet viditelnosti v okně - I 35/93 Jana Štanclová,

36 1.žádná ploška nezasahuje ani nepokrývá okno –okno se vyplní barvou pozadí 2.jediná ploška pokrývá okno, ostatní plošky do něj nezasahují –okno se vyplní barvou této plošky 3.pouze jedna ploška zasahuje do okna –okno se vyplní barvou pozadí –pak se nakreslí ploška (ořezaná vzhledem k oknu) Výpočet viditelnosti v okně - I 36/93 Jana Štanclová,

37 4.několik plošek zasahuje nebo pokrývá okno, jedna z pokrývajících plošek leží před všemi ostatními –?? 5.nenastává žádný z předchozích případů –?? Výpočet viditelnosti v okně - II 37/93 Jana Štanclová,

38 4.několik plošek zasahuje nebo pokrývá okno, jedna z pokrývajících plošek leží před všemi ostatními –každou ploškou se proloží rovina –porovnávají se hloubky rovin v rozích okna → okno se vyplní barvou přední plošky 5.nenastává žádný z předchozích případů –okno se rozdělí na čtyři (shodné) části –rekurzivní volání algoritmu –v případě potřeby se dělí až na úroveň pixelů → pixel se nakreslí barvou nejbližší plošky Výpočet viditelnosti v okně - II 38/93 Jana Štanclová,

39 Rekurzivní dělení okna 39/93 Jana Štanclová,

40 implementace pomocí dvou seznamů –pro každé okno seznam plošek, které okno pokrývají seznam plošek, které do okna zasahují –seznamy se aktualizují při dělení okna pokrývající plošky → zděděny beze změny zasahující plošky → testovány proti novému oknu Implementace algoritmu 40/93 Jana Štanclová,

41 Malířův algoritmus MALÍŘŮV ALGORITMUS 41/93 Jana Štanclová,

42 malířův algoritmus –algoritmus orientovaný přes prostor –průchod scénou odzadu dopředu –umí vyplňovat plochy i stínovat idea algoritmu –všechny plochy scény se kreslí postupně odzadu dopředu „malíř nanáší na obraz nejprve barvy pozadí a přes ně kreslí objekty v popředí“ překreslování dříve nakreslených objektů → viditelnost ploch = problém uspořádání podle vzdálenosti od pozorovatele Malířův algoritmus 42/93 Jana Štanclová,

43 hloubkové třídění („depth sort“) –setřídění plošek podle z-ové souřadnice střed nebo těžiště plošky –po setřídění: kreslení plošek od největší z-ové souřadnice výhody –?? nevýhody –?? Zjednodušená varianta 43/93 Jana Štanclová,

44 hloubkové třídění („depth sort“) –setřídění plošek podle z-ové souřadnice střed nebo těžiště plošky –po setřídění: kreslení plošek od největší z-ové souřadnice výhody –dobré na scénách složených z velkého množství malých plošek nevýhody –nesprávné vykreslení velkých ploch např. velká stolní deska s malými objekty Zjednodušená varianta 44/93 Jana Štanclová,

45 předpoklady algoritmu 1.scéna složena z rovinných plošek 2.plošky mají společné body pouze na obvodu → nesmí se prosekávat nepřípustné Korektní algoritmus 45/93 Jana Štanclová,

46 problém –plošky = trojrozměrné objekty → není jednoznačné uspořádání podle jedné souřadnice Krok 1 –setřídění plošek vzestupně podle minimální z-ové souřadnice podle bodu v plošce s nejmenším z –vložení setříděných plošek do vstupního seznamu S v S plošky setříděny odzadu dopředu → nejvzdálenější ploška od pozorovatele = ?? Krok 1 – třídění plošek 46/93 Jana Štanclová,

47 problém –plošky = trojrozměrné objekty → není jednoznačné uspořádání podle jedné souřadnice Krok 1 –setřídění plošek vzestupně podle minimální z-ové souřadnice podle bodu v plošce s nejmenším z –vložení setříděných plošek do vstupního seznamu S v S plošky setříděny odzadu dopředu → nejvzdálenější ploška od pozorovatele = nejmenší z = první v seznamu S Krok 1 – třídění plošek 47/93 Jana Štanclová,

48 Krok 1 – třídění plošek 48/93 Jana Štanclová,

49 takto vzniklý seznam zatím nelze vykreslovat → plošk a s menší souřadnicí z může zakrývat plo šku s vĕtší m z Krok 1 – třídění plošek 49/93 Jana Štanclová,

50 Krok 2 –ze seznamu S vybrána první ploška P kandidát na vykreslení –ploška P podrobena několika testům zakrývání vůči ostatním ploškám ploška P za všemi ostatními ploškami → vykreslení (a vyjmuta ze seznamu) jinak → hledání jiného kandidáta na vykreslení –test plošky P s ploškami Q, které s ní mohou kolidovat netestují se všechny plošky scény → zbytečné plošky Q... minimální z-ová souřadnice ∈ plošky P Krok 2 – kontrola pořadí 50/93 Jana Štanclová,

51 Krok 2 –test plošky P s ploškami Q, které s ní mohou kolidovat plošky Q... minimální z-ová souřadnice ∈ plošky P Krok 2 – kontrola pořadí 51/93 Jana Štanclová,

52 Krok 2 –test plošky P s ploškami Q, které s ní mohou kolidovat plošky Q... minimální z-ová souřadnice ∈ plošky P nutné otestovat Q 1, Q 2, Q 3 Krok 2 – kontrola pořadí 52/93 Jana Štanclová,

53 Krok 2a – „minimax test“ –nejjednodušší test –plošky P a Q → promítnutí do průmětu → porovnání obdélníků opsaných ploškám –obdélníky nemají společný bod → ?? –obdélníky mají společný bod → ?? průmětna = rovina xy = obrazovka Krok 2a – „minimax test“ 53/93 Jana Štanclová,

54 Krok 2a – „minimax test“ –nejjednodušší test –plošky P a Q → promítnutí do průmětu → porovnání obdélníků opsaných ploškám –obdélníky nemají společný bod → konec testování plošky Q → Q nekoliduje s P → test další možné kolizní plošky Q –obdélníky mají společný bod → další test (Krok 2b) → zatím nelze nic říct o kolizi plošek P a Q průmětna = rovina xy = obrazovka Krok 2a – „minimax test“ 54/93 Jana Štanclová,

55 Krok 2b – „P versus rovina Q “ –test, zda ploška P celá za rovinou plošky Q –P leží celá za rovinou Q → ?? –P není celá za rovinou Q → ?? Krok 2b – „P versus rovina Q“ 55/93 Jana Štanclová,

56 Krok 2b – „P versus rovina Q “ –test, zda ploška P celá za rovinou plošky Q –P leží celá za rovinou Q → konec testování plošky Q → Q nekoliduje s P → test další možné kolizní plošky Q –P není celá za rovinou Q → další test (Krok 2c) → zatím nelze nic říct o kolizi plošek P a Q Krok 2b – „P versus rovina Q“ 56/93 Jana Štanclová,

57 Krok 2c – „Q versus rovina P “ –test, zda ploška Q celá před rovinou plošky P –Q leží celá před rovinou P → konec testování plošky Q → Q nekoliduje s P → test další možné kolizní plošky Q’ –Q není celá před rovinou P → další test (Krok 2d) → zatím nelze nic říct o kolizi plošek P a Q Krok 2c – „Q versus rovina P“ 57/93 Jana Štanclová,

58 Krok 2d – „úplný test v průmětu“ –předchozí testy neuspěly → úplný test plošek P a Q v průmětu –test, zda některá část Q překrytá ploškou P –část Q překrytá P → nelze nakreslit P před Q OK KO Krok 2d – „úplný test v průmětu“ 58/93 Jana Štanclová,

59 Krok 2d – „úplný test v průmětu“ –jak zjistit, že některá část Q překryta ploškou P ?? Krok 2d – „úplný test v průmětu“ 59/93 Jana Štanclová,

60 Krok 2d – „úplný test v průmětu“ –jak zjistit, že některá část Q překryta ploškou P ?? –nalezení průsečíků a porovnání v nich souřadnic z –P je vždy za Q → Q nekoliduje s P –P není vždy za Q → nelze nakreslit P před Q → Q koliduje s P OKKO Krok 2d – „úplný test v průmětu“ 60/93 Jana Štanclová,

61 Krok 2d – „úplný test v průmětu“ –není žádný průsečík hran P a Q ?? Krok 2d – „úplný test v průmětu“ 61/93 Jana Štanclová,

62 Krok 2d – „úplný test v průmětu“ –není žádný průsečík hran P a Q ?? → test, zda ploška P celá uvnitř Q nebo naopak → porovnání souřadnic z –P je za Q → Q nekoliduje s P –P není za Q → nelze nakreslit P před Q → Q koliduje s P OK KO Krok 2d – „úplný test v průmětu“ 62/93 Jana Štanclová,

63 Krok 2 – změna pořadí –detekce kolize během testů → nelze nakreslit P před Q –přesun plošky Q na začátek seznamu S před plošku P –pro plošku Q zopakovány všechny testy Kroku 2 testy nového kandidáta Q proti P... z velké části provedeny stačí doplnit obrácené testy 2b a 2c Krok 2 – změna pořadí 63/93 Jana Štanclová,

64 Krok 2 – zacyklení –kandidát testován podruhé → zacyklení –detekce zacyklení → kandidát označen zvláštním příznakem příznak... kandidát již testován Krok 2 - zacyklení 64/93 Jana Štanclová,

65 Krok 2 – řešení zacyklení –co dělat při zacyklení ?? Krok 2 – řešení zacyklení 65/93 Jana Štanclová,

66 Krok 2 – řešení zacyklení –co dělat při zacyklení ?? –cyklus lze odstranit rozštěpením některé plošky správné pořadí plošek: A 1, B, C, A 2 Krok 2 – řešení zacyklení 66/93 Jana Štanclová,

67 Appelův algoritmus APPELŮV ALGORITMUS 67/93 Jana Štanclová,

68 algoritmus orientovaný přes prostor –průchod scénou bez uspořádání generování vektorové čárové kresby –např. pro výstup na plotter –velká přesnost výstupu (možnost škálování) –algoritmus neumí vyplňovat Appelův algoritmus 68/93 Jana Štanclová,

69 předpoklad –scéna složena z (uzavřených) mnohostěnů princip algoritmu –odstranění odvrácených hran před počátkem algoritmu nekreslí se –uvažují se jen potencionálně viditelné hrany viditelnost těchto hran mohou změnit jen obrysové hrany Appelův algoritmus 69/93 Jana Štanclová,

70 obrysová hrana –hrana mezi přivrácenou a odvrácenou stěnou –hrana nesousedící se dvěma stěnami Obrysová hrana 70/93 Jana Štanclová,

71 předpoklad –scéna složena z (uzavřených) mnohostěnů princip algoritmu –odstranění zadních hran nekreslí se –uvažují se jen potencionálně viditelné hrany viditelnost těchto hran mohou změnit jen obrysové hrany –potenciálně viditelné hrany rozděleny pomocí obrysových hran na elementární úseky s neměnnou viditelností pro každý bod potencionálně viditelné hrany → koeficient zakrytí Princip algoritmu 71/93 Jana Štanclová,

72 koeficient zakrytí bodu –počet přivrácených stěn, které daný bod zakrývají potencionálně viditelná hrana AB → spočten koeficient zakrytí pro všechny body na hraně AB Koeficient zakrytí 72/93 Jana Štanclová,

73 koeficient zakrytí bodu –počet přivrácených stěn, které daný bod zakrývají potencionálně viditelná hrana AB → spočten koeficient zakrytí pro všechny body na hraně AB Koeficient zakrytí 73/93 Jana Štanclová,

74 1.výpočet koeficientu zakrytí dosud nezpracovaného vrcholu A –„hrubou silou“ (podle definice) Výpočet viditelnosti I 74/93 Jana Štanclová,

75 1.výpočet koeficientu zakrytí dosud nezpracovaného vrcholu A –„hrubou silou“ (podle definice) 2.výpočet viditelnosti hrany AB –zobrazení úsečky AB i tělesa v průmětu –v průmětu: nalezení průsečíků s obrysovými hranami ležících před úsečkou AB –uspořádání průsečíků –po uspořádání průsečíků: zjištění příspěvků +1 / -1 obrysové hrany tělesa tvoří orientované smyčky –spočtení koeficientů zakrytí koeficient zakrytí se mění při protnutí obrysové hrany –úsek s koeficientem zakrytí 0 → viditelný úsek 75/93 Jana Štanclová, Výpočet viditelnosti I

76 postup –průsečíky s obrysovými hranami → příspěvky +1 / úsečka vstupuje do tělesa – 1... úsečka opouští těleso –koeficient zakrytí se mění při protnutí obrysové hrany koeficient zakrytí 0 → viditelný úsek Koeficient zakrytí na úsečce 76/93 Jana Štanclová,

77 3.opakování Kroku 2 pro všechny potencionálně viditelné hrany –potencionálně viditelná hrana = hrana sousedící alespoň s jednou přivrácenou stěnou –spočtené koeficienty zakrytí vrcholových bodů propagovány do dalších hran –pokud koeficient zakrytí vrcholu není spočten → Krok 1 nevýhoda algoritmu –ošetření mnoha singulárních případů např. obrysový vrchol, kde některé hrany viditelné a jiné zakryty přivrácenou stěnou 77/93 Jana Štanclová, Výpočet viditelnosti II

78 možný konflikt –obrysový vrchol, kde některé hrany viditelné a jiné zakryty přivrácenou stěnou Konflikt v obrysovém vrcholu 78/93 Jana Štanclová,

79 Watkinsonův algoritmus WATKINSONŮV ALGORITMUS ŘÁDKOVÉHO ROZKLADU 79/93 Jana Štanclová,

80 Watkinsonův algoritmus –algoritmus orientovaný přes obrazovku výhody algoritmu –žádné pixely se nekreslí zbytečně nepřekresluje se –není potřeba pomocný výstupní buffer rastrový výstup generován po jednotlivých řádcích –vyplňuje plochy lze i stínovat Watkinsonův algoritmus 80/93 Jana Štanclová,

81 předpoklady –scéna složená z rovinných plošek –ploška = posloupnost svých vrcholů 3D souřadnice z... hloubka zjednodušení –plošky mají společné body jen na obvodu plošky se nesmějí prosekávat Předpoklady algoritmu 81/93 Jana Štanclová,

82 předzpracování scény –1. odstranění odvrácených plošek normálový vektor odvrácené plošky svírá se směrem pohledu ostrý úhel –2. přivrácené plošky rozloženy na jednotlivé hrany –3. odstranění vodorovných hran –4. pro ostatní (zbylé) hrany vytvořeny pracovní záznamy Krok 1 - Předzpracování 82/93 Jana Štanclová,

83 pracovní záznam pro hranu - I –x : real x-ová souřadnice horního koncového bodu později: souřadnice průsečíku s aktuální řádkou –y : integer y-ová souřadnice horního koncového bodu –z : real z-ová souřadnice horního koncového bodu –dy : integer výška hrany v pixelech –dxy : real změna x při posunutí na následující řádku (směrnice pro x) –dzy : real změna z při posunutí na následující řádku (směrnice pro z) –dzx : real změna z při posunutí na následující pixel (směrnice pro z) Pracovní záznam pro hranu 83/93 Jana Štanclová,

84 pracovní záznam pro hranu - II –st : ^stena odkaz na stěnu, do které hrana patří –barva : barvy barva –... další pomocné údaje pro výpočet viditelnosti Pracovní záznam pro hranu 84/93 Jana Štanclová,

85 setřídění hran do vstupního seznamu S podle kritérií: –1. vzestupně podle y stejné y → pokračovat bodem 2 –2. vzestupně podle x stejné x → pokračovat bodem 3 –3. vzestupně podle dxy určete pořadí hran Krok 2 – Inicializace seznamu S 85/93 Jana Štanclová,

86 setřídění hran do vstupního seznamu S podle kritérií: –1. vzestupně podle y stejné y → pokračovat bodem 2 –2. vzestupně podle x stejné x → pokračovat bodem 3 –3. vzestupně podle dxy Krok 2 – Inicializace seznamu S 86/93 Jana Štanclová,

87 vykresluje se daná řádka → aktuální seznam hran A –hrany protínající aktuální řádku aktuální seznam A setříděný –1. vzestupně podle x stejné x → pokračovat bodem 2 –2. vzestupně podle dxy začátek vykreslování → do A zařazen počáteční úsek S –hrany se stejným (minimálním) y Krok 3 – Inicializace seznamu A 87/93 Jana Štanclová,

88 průchod seznamem A a určení viditelnosti –určení viditelnosti → pomocný seznam plošek H setříděný podle hloubky –průchod seznamem A 1.pro hranu h nalezena její ploška s 2.ploška s je v seznamu H → odstraněna z H –řádku protíná hrana h, která je „koncem“ plošky 3.ploška s není v seznamu H → vložena do H –řádku protíná hrana h, která je „začátkem“ plošky 4.při zatřiďování plošky s do H se zatřiďuje podle z a dzy –první prvek H → viditelná ploška seznam H prázdný → barva pozadí Krok 4 – Výpočet viditelnosti na řádce 88/93 Jana Štanclová,

89 –první prvek H → viditelná ploška daný úsek řádky → barva plošky –seznam H prázdný daný úseku řádky → barva pozadí Krok 4 – Výpočet viditelnosti na řádce 89/93 Jana Štanclová,

90 aktualizace seznamu A při přechodu na další řádku obrazovky 1.dy := dy – 1; 2.if dy = 0 then „odstranit hranu ze seznamu A“; 3.x := x + dxy; 4.z := z + dzy; Krok 5 – Přechod na další řádku 90/93 Jana Štanclová,

91 aktualizace seznamu A při přechodu na další řádku obrazovky 1.dy := dy – 1; 2.if dy = 0 then „odstranit hranu ze seznamu A“; 3.x := x + dxy; 4.z := z + dzy; přechod na další řádku → snížení výšky hrany o 1 vykreslena celá hrana aktualizace souřadnic x a z na nové řádce Krok 5 – Přechod na další řádku 91/93 Jana Štanclová,

92 aktualizace seznamu A při přechodu na další řádku obrazovky 1.dy := dy – 1; 2.if dy = 0 then „odstranit hranu ze seznamu A“; 3.x := x + dxy; 4.z := z + dzy; kontrola setřídění aktualizovaného seznamu A zatřídění nových hran ze seznamu S do seznamu A –hrany začínající na nové řádce přechod na další řádku → snížení výšky hrany o 1 vykreslena celá hrana aktualizace souřadnic x a z na nové řádce Krok 5 – Přechod na další řádku 92/93 Jana Štanclová,

93 alespoň jeden ze seznamů A a S neprázdný –není vykreslena celá obrazovka –zopakuje se Krok 4 seznamy A i S prázdné –konec algoritmu případný nedokreslený zbytek obrazovky → barva pozadí Krok 6 – Podmínka ukončení 93/93 Jana Štanclová,


Stáhnout ppt "ALGORITMY ZOBRAZOVÁNÍ 3D SCÉNY JANA ŠTANCLOVÁ Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK."

Podobné prezentace


Reklamy Google