ANIMOVANÝ SKYBOX V OPENGL ANIMATED SKYBOX USING OPENGL
|
|
- Marie Müllerová
- před 8 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA ANIMOVANÝ SKYBOX V OPENGL ANIMATED SKYBOX USING OPENGL BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR VÍT PAVLÍK Ing. TOMÁŠ MILET BRNO 2013
2 Abstrakt Bakalářská práce se zabývá tvorbou animovaného skyboxu. Cílem práce je demonstrovat metody vytváření skyboxů, především pak metody procedurální. V hlavní části práce jsou rozebrány techniky potřebné pro vykreslení jednotlivých prvků skyboxu. Zaměřuje se na tvorbu barevných přechodů, funkce šumu a na jejich aplikaci. Závěr práce se věnuje rozboru experimentů s nastavením parametrů vykreslování grafického obsahu a implementačním podrobnostem. Abstract The Bachelor s diploma thesis addresses the operation of generating an animated skybox. The thesis was intended to demonstrate the methods, especially the procedural methods, for generating skybox applications. The main deal of the paper is devoted to an analysis of fundamental techniques for rendering particular components within a skybox application. The utmost focus is put on processes of generating colour gradients, noise functions and ways of applying thereof. Concluding part comprises an analysis of study trials to investigate different graphics content generating settings, and implementation details. Klíčová slova animovaný skybox, OpenGL, generování šumu, deterministický generátor, Perlinův šum, bump mappping, Blinn-Phongův osvětlovací model, barevný přechod, obloha, mraky, hvězdy, hvězdná obloha, textura, GLSL, shader Keywords animated skybox, OpenGL, noise generation, deterministic generator, Perlin noise, bump mapping, Blinn-Phong shading model, color gradient, sky, clouds, stars, starry sky, texture, GLSL, shader Citace Vít Pavlík: Animovaný skybox v OpenGL, bakalářská práce, Brno, FIT VUT v Brně, 2013
3 Animovaný skybox v OpenGL Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Tomáše Mileta. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal Vít Pavlík 15. května 2013 Poděkování Na tomto místě bych rád poděkoval vedoucímu práce panu Ing. Tomáši Miletovi za jeho podporu, rady a trpělivost při tvorbě práce. Dále bych rád poděkoval své kamarádce Marcele Maškové za odbornou korekturu některých částí práce. c Vít Pavlík, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
4 Obsah 1 Úvod Skybox OpenGL Prvky skyboxu Slunce a Měsíc Hvězdy Mraky Generovaní skyboxu Barevné přechody Funkce šumu Generování mraků Bump mapping Generování oceánu Hvězdná obloha Experimenty FPS Vrstvy mraků Oceán Implementační podrobnosti Použité knihovny Generování textury normálové mapy Výpočet aktuální konfigurace barev GLSL Závěr 30 A Obsah CD 33 B Plakat 34 1
5 Kapitola 1 Úvod Real-time aplikace (aplikace jejichž simulace probíhá v reálném čase) virtuální reality, jako například hry, stále více využívají venkovní prostředí jako okolí vytvářené scény. Důvodem je snaha v těchto aplikacích vytvořit reálně vypadající nebe v závislosti na fyzikálních i obrazových vlastnostech. Programovatelný grafický hardware umožnuje vytvářet reálně vypadající animované scény pomocí efektivních algoritmů s minimálními nároky na výkon [11]. Cílem této práce je vytvoření právě takového okolí scény, jež zachycuje oblohu v průběhu dne, tak aby součástí scény byly animované mraky, hvězdy atd. Převážná část práce pojednává o technikách vytváření funkcí šumu a jejich použití při vykreslování prvků oblohy. Teoretická část se zaměřuje na důležité vlastnosti těchto prkvů vzhledem k jejich simulaci ve virtuální realitě. Ve třetí kapitole jsou popsány algoritmy použité při tvorbě aplikace, vytváření barevných přechodů, výpočet osvětlovacího modelu a bump mappingu. V závěru této kapitoly jsou podrobně popsány postupy pro vytvoření jednotlivých částí skyboxu. Následuje sekce, kde jsou zmíněny experimenty s nastavením parametrů vykreslování. V poslední implementační kapitole je popsáno generování textur a programování shaderů. 1.1 Skybox Skyboxem se v počítačové grafice označuje metoda vytváření okolí scény, pomocí níž se docílí iluze, kdy se zobrazená scéna v porovnání se skutečnou velikostí jeví jako větší. Základní myšlenkou je vykreslení vzdálených objektů, například hor, mračen, ale třeba také budov a jiných objektů v závislosti na vytvářené scéně, kterých by při pohybu scénou nemohlo být nikdy dosaženo. Podstatné je, že tyto objekty nejsou ve skutečnosti složeny z polygonů, ale jejich obraz je obvykle namapován na krychli nebo kvádr (dnes se v aplikacích častěji využívájí takzvané skydomy), jenž je vykreslen kolem scény. Jedná se o metodu mapování textury cube mapping, která využívá 3D směrový vektor pro naindexování šesti čtvercových 2D textur uspořádaných tak, že tvoří plochu rozložené krychle. Kamera je umístěna uprostřed scény a její pozice se vůči skyboxu nemění ani při pohybu virtuálním světem. Při vytváření skyboxů lze využít dvou přístupů. U prvního z nich se využije předpřipravená textura, která se následně namapuje metodou cube mappingu, jejíž princip je popsán výše. Je důležité vytvářet texturu pro skybox tak, aby na sebe jednotlivé obrázky navazovaly. Jako obrázky mohou být použity například fotografie reálné scény pořízené z jednoho místa, kdy každá z fotografií je v ortogonální pozici vůči fotografiím, s nimiž sousedí. Na obrázku 2.1 je vidět výsledná textura pro skybox zobrazující denní oblohu. Tímto způsobem 2
6 je možné vytvářet jednoduché statické skyboxy. Obrázek 1.1: Textura reprezentující skybox denní oblohy nad oceánem Se zvýšením výpočetního výkonu počítačů a především díky pokroku ve výkonosti grafických karet se začalo při vytváření skyboxu využívat procedurálního přístupu. Okolí scény není tvořeno předpřipravenou texturou, ale barva jednotlivých bodů plochy krychle je vypočtena zvlášť. Pro každý pixel se určí paprsek ze středu krychle. Smícháním barev prvků skyboxu, jež tento paprsek protne, se určí výsledná barva v daném bodě. Barva pixelu se počítá znovu při každém překreslení scény, díky čemuž lze snadno měnit vzhled scény v reálném čase. Přávě popsaného postupu bylo využito k vytvoření aplikace skyboxu, jež je předmětem této práce. 1.2 OpenGL OpenGL (Open Graphics Library) je možné definovat jako softwarové rozhraní ke grafickému hardwaru. Využíva se při tvorbě různých 3D grafických aplikací například počítačových her, vědeckotechnických vizualizací, architektonických aplikací a mnoha dalších aplikací. Multiplatformní knihovna OpenGL, již vyvinula společnost SGI (Silicon Graphics, Inc.), byla představena v lednu roku Specifikace OpenGL je spravována průmyslovým konsorciem známým pod zkratkou ARB (Architecture Review Board), ve kterém jsou zastoupeny velké firmy počítačového průmyslu jako AMD/ATI, Apple Inc, Nvidia a jiné. Od verze OpenGL 2.0 je podporována programovatelná kreslicí pipeline, čehož bylo využito také při vývoji aplikace skyboxu. V roce 2012 byla vydána prozatím poslední verze OpenGL
7 Kapitola 2 Prvky skyboxu Tato kapitola je zaměřena na teoretický úvod do problematiky skyboxu. Představeny jsou jednotlivé prvky, jež jsou součástí skyboxu. Jejich popis se soustředí především na jejich vzhled a další vlastnosti, které ovlivní postup při vytváření aplikace. Jak již bylo zmíněno v úvodní kapitole 1.1, pojem skybox se používá jako označení pro vzdálené okolí scény. Nemusí se pokaždé jednat o oblohu, ovšem v této sekci budeme předpokládat právě skybox, na němž je vyobrazena obloha v průběhu dne. 2.1 Slunce a Měsíc Slunce je hvězda ve středu naší sluneční soustavy. Jedná se kouli žhavého plazmatu s přibližně krát větší hmotností, než je hmotnost Země. Jakožto hvězda nejblíže zemi představuje Slunce nejjasnější objekt na obloze její hvězdná velikost je -26,6 m. To je více než dvojnásobek v porovnání s Měsícem, jehož hvězdná velikost je -12,6 m [6]. Hvězdná velikost, neboli magnituda (zkrácenthe Fractal Geometry of Natureě m), je jednotka zářivosti objektu pozorovaného ze Země. Tvar Slunce připomíná téměř dokonalou kouli. Při východu nebo západu se může jevit větší než v průběhu dne. To je způsobeno tím, že světlo prochází hustší atmosférou. Zemská atmosféra má vliv také na barvu Slunce. Panuje všeobecné přesvědčení, že Slunce má žlutou barvu, ve skutečnosti má však Slunce bílou barvu. Právě průchod paprsků skrz naší atmosféru mění jejich barvu na žlutou. V průběhu dne má Slunce z pohledu pozorovatele na Zemi spíše bílou barvu, kdežto při západu a východu převažuje žlutá barva. Posledním podstatným faktorem, na který má Slunce vliv a se kterým je potřeba počítat při vývoji aplikace skyboxu, je barva oblohy. Modré zbarvení oblohy je způsobeno průchodem slunečního světla naší atmosférou. Jev, který dané zbarvení vyvolává, je znám jako Rayleighův rozptyl [9]. Jedná se o rozptyl světla na molekulách plynu. Při výskytu drobných částeček v atmosféře je možné při východu nebo západu Slunce zpozorovat jev nazývaný jako červánky, tedy červené, oranžové nebo růžové zbarvení oblohy. Měsíc je jediná přirozená družice Země, tj. kosmické těleso pohybující se po oběžné dráze jiného většího tělesa. Je k Zemi natočen stále stejnou stranou, označovanou jako přivrácená strana Měsíce. Opačná strana se nazývá odvrácená, někdy temná, strana Měsíce. I přesto, že povrch Měsíce odráží velmi málo světla, jedná se o druhý nejjasnější objekt na obloze. Nejlépe je viditelný v noci, ve fázi úplňku. Občasně je možné jej pozorovat i ve dne. Povrch měsíce je pokryt desítkami tisíc kráterů. Opticky tmavší místa, pozorovatelná z povrchu 4
8 Země, jsou takzvaná měsíční moře. 2.2 Hvězdy Hvězdy můžeme na obloze pozorovat jako zářivé body. Jas jednotlivých hvězd se liší, jak již bylo zmíněno v podkapitole o Slunci 2.1, měříme jej takzvanou hvězdnou vzdáleností (magnituda). Nejjasnější hvězda noční oblohy Sirius má magnitudu -1,6 m. Pouhým okem je možné vidět hvězdy do hvězdné vzdálenosti 6 m, což zahrnuje přibližně hvězd. Při pozorování ze Země se zdá, že se hvězdy nepohybují. Zdánlivá nehybnost hvězd je způsobena jejich vzdáleností, ačkoli se hvězdy pohybují poměrně rychle. Gravitační síla spojuje hvězdy do galaxií, v nichž se hvězdy váží do měnších skupin nazývaných hvězdokupy. 2.3 Mraky Oblak, jinak také mrak, je útvar nepravidelného tvaru, složený z malých částic vody nebo ledu, nacházející se v atmosféře. Kromě vody mohou obsahovat také jiné častice, například různé chemické zplodiny vznikající při průmyslové výrobě, prachové částice a další. Mračna vznikají kondenzací vzdušné vlhkosti. Tento proces je ovlivněn vzestupným pohybem teplého vlhkého vzduchu. Stoupající vzduch se ochlazuje, dokud nedosáhne hranice, při které se přemění na malé kapičky nebo ledové krystalky. Tato teplotní hranice je označována jako rosný bod. Mračna jsou neustále v pohybu a jejich tvar se mění. Je to způsobeno několika faktory: Gravitací, která působí na částice, jimiž jsou mraky tvořeny. Vlivem větru, který vzniká při proudění vzduchu z místa s vyšším atmosférickým tlakem do místa s nižším atmosférickým tlakem. Teplotou, protože teplejší vzduch se tlačí vzhůru, a tím vzniká vzdušné proudění. Mraky dělíme do několika základních kategorií v závislosti na jejich vzhledu, vlatnostech a na tom, v jaké výšce se nachází: Cirrus (řasa) jemná vlákna bílých, někdy až hedvábně lesklých oblak obsahujících ledové krystalky, tvořících se ve velkých výškách (8 13 km). Cirrocumulus (řasová kupa) čistě bílá oblaka složená z ledových krystalků nebo podchlazených kapek vody. Tvoří malé kulovité skupiny obláčků, které nevrhají stíny. Cirrostratus (řasová sloha) bílý závoj oblaků. Díky nízké hustotě je skrze vrstvu oblak vidět Slunce nebo Měsíc. Stejně jako předchozí skupiny je tvořen ledovými krystalky. Jejich výskyt bývá doprovázen halovými jevy. Altocumulus (vysoká kupa) tvoří menší nebo větší skupiny, někdy i vrstvy mraků, s nepravidelným tvarem, občas připomínajícím vlny. Skládá se z vodních kapek, takže kromě čistě bílé barvy obsahuje částečně i nádech šedé. Vyskytuje se ve výškách 1,5 7 km. Altostratus (vysoká sloha) šedavá nebo modravá oblačná opona, většinou úplně pokrývá oblohu. Místy tak tenká, že může propouštět sluneční světlo. 5
9 Stratocumulus (slohokupa) tvarem podobný altocumulu, ovšem s většími oblaky, protože se nachází v menších výškách. Tvořen převážně vodními kapkami. Oblaka bývají bělavá s tmavšími šedými odstíny. Stratus (sloha) jednolitá šedavá vrstva mračen připomínajících mlhu. Vyskytuje se v malých výškách. Cumulus (kupa) obvykle osamocené, husté mraky, převážně s ostrými konturami. Část mraků, jež je osvícena slunečními paprsky, nabývá výrazně bílé barvy. Základna mraků má téměř vodorovný tvar, většinou tmavší šedé barvy. Horní část oblaku, rozvíjející se do výšky, mívá špíše bělavou barvu. Nimbostratus (deštová sloha) jednolitá hustá vrstva mračen šedé, olovnaté bavy. Přes jejich velkou mohutnost nelze vůbec pozorovat polohu Slunce. Cumulonimbus (dešťová kupa) bouřkový mrak, tvarem i barvou připomínající Cumulus, je však mohutnější a dosahuje velkých výšek. Horní část je zploštělá a podobná kovadlině. Popis druhů mraků je zaměřen převážně na jejich barvu a tvar. Srážkové vlastnosti pro dané účely nejsou podstatné, protože v aplikaci není simulován déšt ani sněžení. Obrázek 2.1: Zleva fotky mraků Stratus a Cumulus, jež jsou vzorem pro mračna v aplikaci skyboxu 6
10 Kapitola 3 Generovaní skyboxu V této kapitole jsou nejprve představeny algoritmy a techniky potřebné k vykreslení prvků skyboxu, jejichž popisem se zabývá předchozí kapitola. Jsou zde uvedeny informace o funkcích šumu a to, jak se liší od běžných kongruentních generátorů šumu. V dalších částech jsou popsány způsoby tvorby gradientů a metoda bump mappingu. Nakonec jsou ke každému prvku skyboxu uvedeny potřebné kroky k jeho úspěšné vizualizaci. Popis vizualizace je zaměřen na definici matematických vztahů a na grafické znázornění jednotlivých kroků. 3.1 Barevné přechody Barevný přechod, neboli gradient, je složen z plynulého přechodu mezi kontrolními barvami podél daného vektoru. Barevný přechod mezi dvěma sousedícími barvami je počítán jako lineární interpolace mezi jednotlivými barevnými kanály, případně také alfa kanálem. Rozlišujeme dva druhy gradientů: Obrázek 3.1: Ukázka lineárního a radiálního gradientu [15] Lineární gradient je definován několika body a kontrolní barvou u každého z nich. Barva přechodu se získá interpolací mezi jednotlivými sousedícími body. 7
11 Úhlový gradient je definován jako kruh, určený barvou ve svém středu a okrajovou barvou. Barva přechodu se vypočte na základě vzdálenosti od středu. Hlavní výhodou barevných přechodů je nízká paměťová náročnost, jelikož stačí uchovávat pouze kontrolní barvy. Barevné přechody jsou použity jako základ aplikace skyboxu při vykreslování oblohy i oceánu. Gradient oblohy se skládá z barvy horizontu, počáteční, základní a koncové barvy oblohy a barvy Slunce [14] Gradient oblohy Vytvoření gradientu oblohy se provede v několika krocích postupným smícháním jednotlivých barevných přechodů: 1. Nejprve nastavíme barvu celé scény skyboxu na základní hodnotu c 0 = (0, 0, 0). 2. Jako první se vytvoří barevný přechod pro horizont, jenž je určen dvěma kontrolními barvami a vektorem závislým na pozici Slunce. Gradient horizontu se mění v závisloti na směru pohybu Slunce. Pokud by se Slunce pohybovalo ve směru osy x, byl by vektor gradientu definován jako g = ( s x, 0, 0). Výslednou barvu horizontu v daném bodě vypočeteme jako c h = f(c h1, c h2, g x), kde x je vektor pixelu a f reprezentuje funkci lineární interpolace 3.1. V pravé poledne, kdy je vektor ke Slunci roven s = (0, 1, 0), má gradient horizontu všude stejnou barvu. f(x) = f(x 0 ) + f(x 1) f(x 0 ) x 1 x 0 (x x 0 ) (3.1) Obrázek 3.2: Znázornění vektoru gradientu oblohy 8
12 3. Dále je potřeba vypočítat přechody mezi barvami oblohy. U oblohy počítáme se třemi kontrolními barvami: základní barvou c oz, počáteční barvou c op a koncovou barvou c ok. Nejprve určíme přechod mezi počáteční a koncovou barvou. Počáteční barva je barva blízko Slunce a koncová je barva na opačném konci oblohy, než se Slunce nachází. Výsledná barva je tedy dána vztahem c opk = f(c op, c ok, s x). 4. V dalším kroku vytvoříme přechod mezi výslednou barvou horizontu c h a základní barvou oblohy c ob. Barva přechází od horizontu vzhůru, ve směru osy y. Vektor gradientu je tedy g = (0, 1, 0). Výsledná barva je dána rovnicí c hob = f(c h, c ob, ( g x) e ), kde exponent e určuje, jak vysoko dosahuje barva horizontu. 5. Nakonec se smíchá přechod barev horizontu k obloze c hob s gradientem oblohy c opk. Stejně jako v předchozím kroku je vektor gradientu roven g = (0, 1, 0). Konečná barva gradientu oblohy pro daný pixel se vypočte jako c o = f(c hob, c opk, ( g x) e ). Obrázek 3.3: Znázornění vektorů gradientů oblohy Barevné přechody oblohy jsou závislé převážně na pozici Slunce. Slunce je reprezentováno taktéž pomocí gradientu, přesněji pomocí úhlového gradientu. U Slunce je zapotřebí určit následující vlastnosti: vektor jeho pozice s, barvu c s, velikost a velikost okolní záře. Smíchání barvy Slunce a konečné barvy gradientu oblohy je řízeno následnující rovnicí c os = f(c o, c s, ( s x) e ) k. Jedná se v podstatě o stejnou rovnici jako u vztahu mezi počáteční a koncovou barvou oblohy, rozdíl je ve velikosti exponentu e. Při vytváření Slunce bude jeho hodnota značně větší než v případě barev oblohy. Změnou velikosti exponentu se 9
13 mění také velikost Slunce. Čím je menší hodnota exponentu, tím větší je Slunce. Konstanta k určuje hranici mezi plnou barvou Slunce a okolní září. Čím vyšší hodnota konstanty k se zvolí, tím je tento přechod ostřejší. Obrázek 3.4: Původní e i k Obrázek 3.5: Menší e Obrázek 3.6: Menší k Nakonec je zapotřebí definovat, jakým způsobem se získají kontrolní barvy. Bylo by obtížné vytvořit konfigurační tabulku, kde by byly určeny všechny kontrolní barvy pro oblohu v průběhu dne. Z toho důvodu se zadefinují pouze kontrolní barvy v několika podstatných bodech například při východu Slunce, v pravé poledne, při západu Slunce a o půlnoci. Kontrolní barvy v reálném čase se pak vypočtou interpolací mezi těmito styčnými body. Postup výpočtu těchto přechodů mezi kontrolními barvami je popsán v implementační části v sekci Gradient oceánu Barevný přechod oceánu je tvořen přechodem mezi barvou horizontu c h a základní barvou moře c s. Vektor gradientu oceánu směřuje opačně, než je tomu u vektoru přechodu barev od horizontu směrem k obloze. Vektor gradientu je tedy g = (0, 1, 0). Výsledná barva je dána rovnicí c hs = f(c h, c s, ( g x) e ), kde exponent e určuje, jak daleko ještě barva horizontu ovlivňuje barvu oceánu. 3.2 Funkce šumu Funkcí šumu se v počítačové grafice využívá k dosažení realistického zobrazení některých efektů, zejména přírodních úkazů, jako například simulaci ohně, kouře, mraků, vlnění oceánu, vytváření horských výběžků atd. Nejedná se o běžné generátory náhodných čísel 3.2, jichž se využívá v mnoha oblastech informatiky. Jejich použití ke grafické vizualizaci výše zmíněných jevů není vhodné. Problematický aspekt aplikace generátorů náhodných čísel spočívá v tom, že pro stejné vstupní hodnoty nevygenerují totožný výstup. Tedy při opakovaném vykreslení scény bychom vždy dostali jiný výsledek. Takové chování není mnohdy žádoucí. Navíc prudké střídání hodnot na výstupu těchto generátorů má za příčinu nepřirozený vzhled. Příklad kongruentního generátoru čísel generujícího pseudonáhodná čísla z intervalu 0, m, jenž je definován následujícím rekurentním vztahem: x n = (a 1 x n a k x n k + b) mod m; n 0 (3.2) 10
14 Kde x 0,..., x k jsou počáteční hodnoty, a 1,..., a k multiplikativní členy, b aditivní člen a m celočíselné modulo [16]. V přírodě mnoho objektů vykazuje fraktální vlastnosti; podrobnější informace je možné nalézt v knize The Fractal Geometry of Nature [7]. Tyto objekty na první pohled vypadají složitě. Pokud bychom však prozkoumali jejich strukturu detailněji, zjistili bychom, že se skládají ze stále se opakujících vzorů invariantních vůči změně měřítka. Tato vlastnost je partná na obrázku 3.7. Obrázek 3.7: Ukázka fraktálních vlastností: Mandelbrotova množina Vhodnou metodu pro počítačovou vizualizaci podobných jevů představuje Perlinův šum. Tato funkce byla představena v roce 1985 Kenem Perlinem na Konferenci o počítačové grafice a interaktivních technikách v New Yorku [8]. V aplikaci bylo využito upravené verze Perlinova šumu, někdy označované jako Pink noise. Výpočet původní funkce šumu, jež byla prezentována Kenem Perlinem, je založen na mírně odlišných principech. U funkce Pink noise je simulace fraktálních vlastností dosaženo pomocí sloučení několika funkcí šumu o různé frekvenci. Perlinův šum je možné nahradit například funkcí šumu Simplex noise, jejímž autorem je rovněž Ken Perlin. Funkce Simplex noise byla navržena s ohledem na vyřešení daných omezení klasické funkce šumu. Její hlavní výhodou je menší počet hodnot, mezi kterými se interpoluje, potřebných k výpočtu hodnoty šumu v daném bodě. Výraznější zrychlení výpočtů je možné zaznamenat u většího počtu dimenzí. Tento šum je rovněž izotropní, tedy nezávislý na směru, což je vlastnost, která by mohla řešit problém s aliasingem, jenž nastane například při simulaci mraků s použití Perlinova šumu, viz
15 3.2.1 Perlinův šum Metodika Perlinova šumu je obdobná jako u generátoru náhodných čísel. Vstupní hodnotou funkce je reálná hodnota, na jejímž základě je vrácena pseudonáhodná hodnota. Odlišné chování funkce se projeví ve chvíli, kdy jsou funkci opakovaně předány tytéž vstupní hodnoty. Výstupem funkce je poté vždy stejný výsledek. Taktéž budou-li rozdíly mezi čísly, které jsou funkci předány, malé, i výstupní hodnoty si budou podobné. Rozdíl mezi generátorem náhodných čísel a funkcí šumu je patrný na obrázcích 3.8 a 3.9. Obrázek 3.8: Koherentní šum [1] Obrázek 3.9: Nekoherentní šum Základem Perlinova šumu je deterministický generátor pseudonáhodných čísel. Je deterministický, protože vrací stejný výsledek při totožných hodnotách předaných na vstup, čímž splňuje jeden z požadavků zmíněných výše. Jeho výstupem jsou hodnoty v intervalu 1, 1. Generátor je definován následujícím vztahem: G(x, y, z) = ((x 61 + y 89 + z 57) 13) (x 61+y 89+z 57) (3.3) Noise(x, y, z) = 1 (G(G2 s 1 + s 2 ) + s 3 ) & maska Kde značí bitový posun doleva a & je bitový operátor logického součinu. Hodnoty s 1, s 2, s 3 nahrazují prvočísla pohybující se řádově v rozsahu 10 2, 10 3, respektive 10 4, 10 5, respektive 10 8, Provedením bitové operace součinu s maskou, odpovídající maximální hodnotě 32bitového čísla, je zabráněno případnému přetečení hodnoty [12]. Obrázek 3.10: Výstup generátoru definovaného vztahem 3.3 Je možné nalézt různé definice takového generátoru. Čísla použitá v první části definice 3.3 nejsou striktně dána. Je však nezbytné, aby se jednalo o podobně velká prvočísla. A zároveň 12
16 aby zůstaly zachovány určené vlastnosti generátoru. Takto definovaný generátor je základem pro tvorbu 3D šumu. V případě jiného počtu dimenzí postačí upravit výpočet hodnoty G, zbytek definice zůstane stejný. Dalším krokem k vytvoření funkce Perlinova šumu je provedení interpolace mezi hodnotami získanými z generátoru 3.3. S ohledem na lepší vizualizaci je však nejprve vhodné provést vyhlazení vygenerovaných dat. Při vyhlazení je pro hodnotu v daném bodě použita průměrná hodnota příslušné hodnoty a hodnot sousedních. Dojde tak k odstanění zrnitosti původního šumu, což je patrné z obrázku. Obrázek 3.11: Výstup po vyhlazení šumu Protože generátor 3.3 generuje hodnoty na základě celých čísel, je hodnota mezi nimi nedefinovaná. Interpolace slouží k výpočtu ostatních hodnot funkce z příslušné diskrétní množiny. Existuje několik druhů interpolací, které se liší ve složitosti výpočtu a výsledné kvalitě. V aplikaci skyboxu byla vyzkoušena lineární a kosinová interpolace, z nichž byla nakonec zvolena kosinová interpolace. Výpočet kosinové interpolace není o mnoho složitější než lineární a výsledná kvalita šumu je vyhovující. Další možností je například kubická interpolace. Ačkoli lze pomocí této metody dosáhnout velmi dobrých výsledků, výrazně poklesne rychlost výpočtu. Výpočet kosinové interpolace: f(x) = (1 cos(x π)) 1 2 I cos (a, b, x) = a(1 f(x)) + b f(x) (3.4) Posledním krokem je sloučení několika interpolovaných funkcí dohromady. Každá postupně přidávaná funkce se nazývá oktáva. Každá z oktáv má jinou amplitudu a frekvenci Frekvence je definována jako 1/vlnová délka, kde vlnová délka je vzdálenost mezi vrcholy funkce. Amplitudou se rozumí rozdíl mezi maximální a minimální hodnotou, jichž daná funkce nabývá. Většinou se využívá šumu, kde každá oktáva má dvojnásobnou frekvenci a poloviční amplitudu. Při vizualizaci některých objektů je však vhodnější vztah mezi nimi měnit. Proto se do definice Perlinova šumu zavádí pojem perzistence. Pojem perzistence použil ve své práci o fraktální geometrii [7] francouzský matematik Benoît Mandelbrot. Vztah perzistence vůči frekvenci a amplitudě lze vyčíst z definice Z obrázku 3.23 lze vypozorovat vliv hodnoty perzistence na výsledný šum. Výslednou hodnotu Perlinova šumu 13
17 získáme následovně: P erlinnoise(x, y, z) = n p i InterpolatedNoise(2 i x, 2 i y, 2 i z) i=0 frekvence = 2 i amplituda = perzistence i (3.5) Obrázek 3.12: Vysoká amplituda a nízká frekvence [4] Obrázek 3.13: Nízká amplituda a vysoká frekvence Obrázek 3.14: Perlinův šum čtyři oktávy; vlevo: persistence = 0,5; vpravo: persistence = 0, Generování mraků Existuje několik různých technik, jak v počítačové grafice generovat mraky. Zvolení vhodné techniky vytváření mraků pro danou aplikaci je velice důležité. Je potřeba se zamyslet nad tím, jakou míru realističnosti mračen v aplikaci vyžadujeme. Například při vývoji leteckého simulátoru bude určitě zapotřebí namodelovat 3D mračna, která i při průletu skrz ně budou působit reálně. V aplikaci skyboxu, kde je kamera umístěna ve středu scény, postačí 2D mračna. Ušetří se tak výpočetní výkon a při vykreslení více vrstev mraků nad sebou, volbě vhodného osvětlení a úpravě dalších vlastností lze dosáhnout dobrých výsledků. Mraky jsou reprezentovány nekonečnou rovinou s Perlinovým šumem, definovaným v podsekci Rovina je umístěna nad scénu skyboxu. Změny tvaru mračen v reálném čase lze docílit použitím 3D šumu, kde právě čas tvoří třetí rozměr. Hodnota Perlinova šumu daného pixelu se zjistí tak, že se dohledá průsečík P (x, y) směrového normalizovaného vektoru 14
18 Obrázek 3.15: Příklad mračen reprezentovaných nekonečnou rovinou s naneseným šumem [3] u tohoto pixelu a roviny v daném čase. Souřadnice I(x, y, t) se poté použijí jako vstupní hodnoty funkce šumu [14]. Přičtením směrového vektoru k těmto souřadnicím ovlivníme pohyb mraků. Výpočet průsečíku pixelu určeného směrovým vektorem u = (x, y, z) a roviny ve výšce h je definován nasledujícím vztahem: t = h u z P (x, y) = u(x, y) t (3.6) Vypočtená hodnota Perlinova šumu je následně použita při smíchání barvy gradientu oblohy, jejíž výpočet je popsán v sekci 3.1.1, a barvy mraků. Rovnice míchání výsledné barvy vypadá následovně: c = c 1 (1 a) + c 2 a (3.7) Proměnná a, v tomto případě návratová hodnota Perlinova šumu, určuje poměr mezi barvami c 1 a c 2. Takto vytvořená mračna pokrývají celou plochu oblohy. Jejich vzhled je ovlivněn barvou a parametry funkce šumu: amplitudou, frekvencí, perzistencí a počtem oktáv. Oblaka s těmito vlastnostmi jsou nejvíce podobná mrakům typu Stratus. K reprezentaci oblak typu Cumulus je zapotřebí výstup funkce šumu ošetřit vhodným filtrem. Odlišnosti jednotlivých typů mračen jsou popsány v podsekci 2.3. Při vytváření vrstvy mraků Cumulus tedy není zapotřebí definovat novou funcki šumu s jinými parametry, ale upraví se výstup té stávající tak, aby se zmenšila plocha pokrytá mračny a zvýšila se hustota těchto mraků. Díky tomu se redukuje počet výpočtů, který by s každým voláním nové funkce šumu značně narůstal. Úprava se provede ve dvou krocích, kdy se na výstup fukce šumu aplikují různé filtry: V prvním kroku se zvolí konstantní hodnota c z intervalu 0, 255 (rozsah hodnot osmibitového obrazu v odstínech šedi), která bude hranicí pro odstíny šedi, jež se 15
19 Obrázek 3.16: Vrstva mračen Stratus vykreslená v aplikaci. Použité parametry: 2D Perlinův šum, 4 oktávy, persistence = U horizontu je patrný mírný aliasing. propustí filtrem. Pokud hodnota šumu daného bodu bude menší než konstanta c, obarví se tento pixel barvou gradientu oblohy. Tímto se redukuje oblast oblohy pokrytá mračny. Druhým krokem je přeměna mlhy připomínající oblak na mraky s vyšší hustotou. Toho lze docílit aplikací filtru definovaného vztahem fh = hmax (sc hmax ). Konstanta s, vybraná z intervalu h0, 1i, udává, jak hustá výsledná mračna budou. Hodnota hmax představuje maximální hustotu mraků. Pokud se hodnota konstanty s blíží jedné, výsledná mračna jsou řidší, jak je patrné z obrázku 3.17, 3.18 a Obrázek 3.17: s = 0, 83 Obrázek 3.18: s = 0, 65 Obrázek 3.19: s = 0, 35 Výsledek po sloučení několika vrstev mraků, které se liší barvou a parametry aplikovaných filtrů, je vidět na obrázku Mraky nedosahují až k hranici horizontu, protože se směrem k horizontu zvyšuje jejich průhlednost. Důvodem je odstranění aliasingu, který vznikne při použití Perlinova šumu. Barva mraků je závislá na jejich sytosti a na pozici vůči Slunci. Předpokládáme, že mraky osvětlují pouze paprsky pocházející přímo ze Slunce. Slunce neovlivňuje přímo barvu mraků, ale pouze jejich jas. Nejjasnější budou mraky v blízkosti Slunce a naopak. Hodnota jasu 16
20 daného pixelu se určí podle hodnoty skalárního součinu směrového vektoru tohoto bodu a vektoru ke Slunci. Obrázek 3.20: Výsledná mračna po sloučení několika vrstev a přidání osvětlení 3.4 Bump mapping Bump mapping, případně normal mapping, je technika nanášení textury takovým zbůsobem, že dochází k vytvoření iluze nerovnosti povrchu. Dosáhneme tak zvýšení úrovně detailů, a to beze změny geometrie povrchu. S příchodem moderních grafických karet se začala využívat také technika mapování textur zvaná displacement mapping, při které se zasahuje přímo do geometrie povrchu. Takové operace ovšem přispívají ke zvyšování výpočetních nároků. K vytvoření efektu vln oceánu 3.5, nad nímž je vykreslen skybox, bylo využito techniky bump mappingu. Základem bump mappingu je bump mapa 3.21, někdy nazývaná jako výšková mapa. Jedná se typicky o texturu, kde všechny složky RGB barvy pixelu mají stejnou hodnotu. Obsahuje tedy pouze odstíny šedi. Světlost pixelu pak určuje, nakolik má daný bod vystupovat z povrchu. Z takto definované výškové mapy je zapotřebí získat informaci o naklonění povrchu v daném bodě, neboli modifikovaný normálový vektor. Při jeho určení je zapotřebí pro daný pixel vypočítat gradient v osách x a y (výpočet gradientu je znázorněn v rovnicích 3.8). Posuneme se o určitou vzdálenost fe v osách x, respektive y, a zjistíme hodnoty z výškové mapy v daných bodech. Rozdíl mezi těmito hodnotami je hledaný gradient. GradX = h(x + fe, y) h(x fe, y) GradY = h(x, y + fe) h(fe, y fe) (3.8) S pomocí gradientů následně upravíme původní normálový vektor polygonu v daném bodě. Modifikovaný normálový vektor lze dopočítat následovně: 17
21 mn = N + U ( GradX) + V ( GradY ) (3.9) Obrázek 3.21: Ukázka bump mapy N je původní normála. U a V jsou vektory rovnoběžné s osami bump mapy, jak je vidět na obrázku Takto získané modifikované normály tvoří takzvanou normal mapu. Podobně jako u výškové mapy se jedná o texturu, která má v texelech uloženou normálu místo barvy. Získanou normal mapu lze poté použít při výpočtu Blinn-Phongova osvětlovacího modelu. Obrázek 3.22: Znázornění vektorů U a V [2] 3.5 Generování oceánu Aby ve scéně se skyboxem bylo vidět, v jaké pozici je pozorovatel, jak vzdálený je horizont a jak vysoko nad zemí se nachází kamera, je do scény přidána jednoduchá animace hladiny oceánu. Oceán je určen svou barvou, směrem pohybu vln, výškou vln a množstvím odráženého slunečního světla. 18
22 Výsledné barvy oceánu je dosaženo smícháním základní barvy oceánu a barvy gradientu horizontu v daném čase na základě vzdálenosti od horizontu. Směr pohybu vln lze ovlivnit přičtením směrového vektoru k souřadnicím textury oceánu. Složkou takového vektoru je čas t, upravený podle požadované rychlosti a směru pohybu. K výpočtu slunečního záření odráženého od hladiny oceánu slouží Blinn-Phongův osvětlovací model. K výpočtu je potřeba znát normovaný normálový vektor N. Postup jeho výpočtu je popsán zde 3.4. Jak lze vidět na obrázku 5.1, nejvýraznější barevnou složkou v normálové mapě je zelená. Světlo se podle Blinn-Phongova modelu skládá ze tří složek: ambientní složka zbytkové světlo, rozptýlené mnoha odrazy; difúzní světlo světlo, jež se po dopadu na povrch rozptýlí do všech směrů; zrcadlový odraz (spekulární složka) světlo odrážející se od povrchu v určitém směru. Ambientní světlo A se vypočte pomocí vzorce A = Ai Ac, kde Ai je konstatní ambientní složka světla a Ac je ambientní složka barvy oceánu. Difúzní složku D světla lze získat jako součin konstatní difúzní složky světla Di, difúzní složky barvy oceánu Dc a skalárního součinu normálového vektoru N a vektoru směřujícího z bodu na hladině oceánu ke Slunci L. Množství odráženého světla je tedy závislé na velikosti úhlu mezi normálou povrchu a vektorem světla. Tento jev popisuje Labertův zákon. Výsledná intenzita difúzní složky světla se vypočte pomocí vzorce D = Di Dc (N L), kde značí skalární součin. Obrázek 3.23: Vlevo: oceán pouze s ambientní sloužkou světla. Uprostřed: oceán s přidanou difúzní složkou světla. Už je patrný 3D efekt. Vpravo: plné osvětlení hladiny oceánu. Spekulární složku S lze vypočítat pomocí vztahu S = Si Sc (N H) α. Hodnota Si je konstatní spekulární složka světla a Sc zastupuje spekulární složku barvy oceánu. Vektor H je takzvaný půlicí vektor (halfway vector). Nachází se mezi normalizovaným vektorem pozorovatele V a vektorem ke Slunci L, je definován následujícím vztahem: H = (L + V ) L + V (3.10) 19
23 Vektor pozorovatele V lze získat odečtením souřadnice daného bodu na hladině od souřadnic pozice kamery. Exponent α určuje ostrost zrcalového odrazu. Čím je vyšší, tím jsou odlesky směřovány do menší oblasti a jsou intenzivnější. Výsledná intenzita osvětlení v daném bodě je definována jako součet všech tří složek I = A + D + S. K vytvoření animovaného oceánu je zapotřebí 3D textura obsahující normály bodů na hladině oceánu (vytvoření takové textury je popsáno zde 5.2). Vektor souřadnic do této textury I(x, y, t) obsahuje souřadnice průsečíku P (x, y), průsečík polopřímky (směrový vektor daného bodu) a roviny (hladina oceánu) a čas t. Postup zjištění souřadnic průsečíku P je definován zde 3.6. Pozice pozorovatele (kamery) je závislá na tom, do jaké výšky vůči scéně je umístěna rovina oceánu, jak je patrné z obrázku Obrázek 3.24: Rovina oceánu umístěná v různých výškách 3.6 Hvězdná obloha Na noční obloze lze pozorovat širokou škálu hvězd s různou intenzitou záření, jež jsou na první pohled rozmístěny zcela náhodně. Stejně jako Slunce, tak i hvězdy a Měsíc se zdánlivě pohybují po obloze, což je způsobeno rotací Země kolem vlastní osy. Hvězdná obloha je reprezentována kulovou plochou o poloměru r, jež je umístěna kolem scény. Obdobně jako u mraků je potřeba zjistit průsečík P (x, y, z) směrového vektoru u = (x, y, z) daného bodu a kulové plochy. Průsečík je poté použit při výpočtu šumu. Výpočet půsečíku je definován následovně: t = u x + u y + u z + r P (x, y, z) = u(x, y, z) t (3.11) Tím, že použijeme takto definovaný průsečík při výpočtu 3D šumu, získáme sférickou mapu šumu. Na rozdíl od mraků, které jsou vytvořeny za pomoci funkce Perlinova šumu, je k vytvoření hvězd potřeba nekoherentního šumu. Vhodný je například generátor pseudonáhodných čísel podobný tomu, jenž je definován zde 3.3. Důležité je, že se jedná o deterministický generátor. 20
24 K reprezentaci hvězd jsou zapotřebí dvě kulové plochy. Každá z ploch má jiný poloměr. První plocha slouží k určení pozice, velikosti a počtu hvězd. Velikost hvězd se mění tím, jak velký je poloměr kulové plochy. Řádově je poloměr plochy mnohem větší než výška, v jaké je umístěna rovina reprezentující mraky, z toho důvodu, aby velikost jednotlivých zrnek šumu přibližně odpovídala velikosti hvězd na noční obloze. Pixely určující hvězdy se z původní funkce šumu získají přefiltrováním jejích výstupních hodnot. Zvolí se číslo z intervalu 0, 1 určující hranici hodnot šumu, jež se nakonec vykreslí na noční obloze. Pokud se zvolí nižší hranice, propustí se filtrem více hodnot šumu a bude vykresleno více hvězd. Obrázek 3.25: Znázornění průsečíku směrového vektoru bodu na obloze a kulových ploch reprezentujících hvězdnou oblohu Druhá kulová plocha má menší poloměr než ta první a slouží k určení hvězdé velikosti hvězd (popsáno v sekci 2.2). Protože intenzita hodnot šumu, pomocí nichž jsou hvězdy reprezentovány, je omezena hranicí zmíněnou výše, je zapotřebí jejich intenzitu upravit jinou funkcí šumu. Jinak bychom neobsáhli celé spektrum hvězd, které je možné pozorovat na noční obloze. První kulová plocha šumu tedy určuje pozici hvězdy a druhá intenzitu v daném bodě. Na následujících obrázcích je vidět přeměna původní funkce šumu na hvězdnou oblohu. Tím, že je šum mapován na kulovou plochu, narozdíl od mračen, kdy je šum mapován na nekonečnou rovinu, nedochází k efektu aliasingu. Taktéž se liší způsob, jakým se hvězdy pohybují po obloze. Hvězdy se pohybují podobně jako Slunce nebo Měsíc, jejich pohyb je možné definovat jako rotaci kolem určené osy. Rotace hvězd je dosaženo otočením směrového vektoru u, jímž je hvězda určena. Tedy téhož vektoru, jehož průsečík s kulovou plochou je počítán v rovnici Před výpočtem průsečíku je směrový vektor vynásoben následující rotační maticí: cos(ϕ) sin(ϕ) 0 R = sin(ϕ) cos(ϕ) 0 (3.12)
25 Obrázek 3.26: Postupná přeměna nekoherentního šumu na hvězdnou oblohu: na prvním obrázku je základní šum, na druhém obrázku jsou pouze přefiltrované hodnoty určující pozici hvězd, na posledním obrázku je výsledná podoba hvězd s určenou hvězdnou velikostí. 22
26 Kapitola 4 Experimenty Aplikace skyboxu byla vyvíjena s cílem dosáhnout dobrých výsledků ve výsledném vzhledu vykreslené scény, pokud možno s co nejmenšími výpočetními nároky. Určitě by bylo možné dále redukovat počet výpočtů například použitím předpřipravených textur nebo prováděním více výpočtů na procesoru místo toho, aby se využívalo výkonu GPU (grafický procesor, graphic processing unit). V této kapitole jsou zmíněny experimenty s nastavením vykreslování prvků skyboxu. Dále je uvedeno, jak jednotlivé úpravy ovlivnily výkonostní nároky. 4.1 FPS FPS (frame per second), neboli snímek za sekundu, je jednotka snímkové frekvence. Jedná se o frekvenci, s jakou vykreslovací zařízení zobrazuje jednotlivé na sebe navazující snímky. Pomocí hodnot FPS jsou v následujících pokusech demonstrovány výsledné výpočetní nároky jednotlivých variant řešení. 4.2 Vrstvy mraků K vytvoření lepší iluze realných mračen, která jsou vykreslena dvourozměrně, je zapotřebí vykreslit oblaka v několika vrstvách. U vrstev se mění nastavení šumu, parametry filtru šumu a barva mračen. Důležité je však zvolit dobrý kompromis mezi kvalitou výsledného vzhledu a zpomalením simulace. Při prvních pokusech bylo vykresleno několik vrstev oblak v různé výšce. Využilo se tedy několika rovin a vícero volání funkce Perlinova šumu. Výhoda toho přistupu spočívá v tom, že vrstva mraků definovaná rovinou umístěnou v malé výšce tvoří podlouhlé pásy mračen v blízkosti horizontu. Naopak vrstvou mraků reprezentovaných rovinou umístěnou výše nad scénou jsou vykreslena dobře vypadající oblaka výše od horizontu. Spojením těchto vrstev jsou vytvořena mračna souvisle pokrývající celou plochu oblohy. Problematickým aspektem v tomto ohledu je animace takto definovaných mračen a několikanásobné volání funkce šumu, jež zpomaluje vykreslování. Mraky nelze animovat jako celek a jejich výsledný pohyb tedy vypadá nepřirozeně. Pokud by v aplikaci nebyly vyžadovány animované mraky, postačil by k jejich vykreslení 2D šum, a mohlo by se tedy jednat o použitelné řešení. Jak je popsáno v kapitole 3.3, k vytvoření vícevrstvých mraků stačí upravit parametry filtru použitého na výstup funkce šumu. Taková úprava by byla dostatečná i na vytvoření vstrvy mračen typu Stratus. Problémem je, že u takto vytvořených mračen lze jen velmi těžce rozlišit jednotlivé vstvy. Je sice viditelný mlhavý závoj v okolí větších oblak, ale 23
27 Obrázek 4.1: Ukázka mračen složených z několika různých vrstev vrstva nepůsobí jako samostatný celek. Navíc se všechny mraky pohybují stejně rychle. Posun mračen je vypočten a předán na vstup funkci šumu, nelze jej tedy dále ovlivnit. Jako nejvhodnější řešení se ukázalo vytvoření vrstvy mračen Stratus pomocí vlastní funkce 2D Perlinova šumu. Jelikož se jedná o mlhu připomínající mraky, není důležité, aby se měnil jejich tvar, a postačí 2D šum. Rozdíl v FPS není prakticky žádný a tím, že je možné tuto vrstvu umístit níže nad scénu, se zaplní prostor poblíž horizontu. 4.3 Oceán Postup vytvoření oceánu popsaný v kapitole 3.5 představuje pouze jednu z možností. Normálu bodu na hladině oceánu lze rovněž počítat v reálném čase přímo v pixel shaderu. Pokud je algoritmus bump mappingu proveden přímo v shaderu, je možné pozorovat na hladině oceánů větší míru detailů. Na rozdíl od použití textury, jež se stále opakuje, aby pokryla celou plochu oceánu, je v shaderu vypočtena normála pro každý pixel zvlášt. Obrázek 4.2: FPS v průběhu simulace se změnou způsobu vykreslování oceánu 24
28 Nevýhoda tohoto přístupu je patrná z grafu 4.2, na němž je zobrazeno kolísání FPS v průběhu simulace. Přibližne v době, kdy simulační čas překročil hodnotu 50, se místo načítaní normál z textury přešlo na výpočet normál v shaderu. Hodnota FPS poklesla o více než polovinu. Vysvětlení příčiny vyšší náročnosti výpočtu normály v reálném čase lze nalézt v implementační kapitole 5.2. Obrázek 4.3: Rozdíl ve výsledném vzhledu oceánu. Nahoře: normály oceánu uloženy v textuře. Dole: normály oceánu vypočteny ve fragment shaderu. 25
29 Kapitola 5 Implementační podrobnosti Tato kapitola se zabývá přesnějším popisem implementace některých zajímavých částí projektu. Jsou zde zmíněny informace o vybraných knihovnách, jež byly použity v aplikaci, stručný popis jazyka GLSL a jeho vyžití při vývoji aplikace. 5.1 Použité knihovny Projekt byl vyvíjen v systému Ubuntu Linux. Okno aplikace je vytvořeno pomocí knihovny GLUT (OpenGL Utility Toolkit), nadstavby knihovny OpenGL. Dále je využita nadstavba GLEW (OpenGL Extension Wrangler Library), jež poskytuje mechanismy k určení podporovaných rozšíření OpenGL na cílové platformě. K výpočtu tranformačních matic, perspektivní projekce a práci s vektory, mimo program shaderu, je využita knihovna GLM (OpenGL Mathematics), která poskytuje podobné třídy a funkce jako GLSL. K projektu je připojena také knihovna SDL (Simple DirectMedia Layer), jejíž funkce jsou použity při výpočtu FPS. 5.2 Generování textury normálové mapy Textury je možné vytvářet několika způsoby. Jedním ze způsobů je použití klasického rastrového obrázku jako textury. Další možností je vytváření takzvaných procedurálních textur, jež se generují pomocí různých algoritmů. Procedurální textury je možné vytvořit předem a uložit do rastru, nebo se jejich výpočet provede až při samotném vykreslování. Grafické architektury, u kterých se hojně využívá rastrově uložených textur, mají většinou velký paměťový prostor, jenž je spravován rychlými procesory. Získání dat rastrové textury je nenáročné na výpočet, vyvažuje to však množství paměti potřebné k jejich uložení. V minulosti takovou architekturu zastupovala například společnost The Silicon Graphics Skywriter. Dnes už paměťové nároky na uložení textur nejsou takovým problémem [10]. Nevýhodou rastrových textur je jejich pevně dané rozlišení. Pokud je zapotřebí provést zvětšení či změnšení rastrové textury v době vykreslení, může docházet k aliasu. Nevýhodou procedurálních textur generovaných matematickými funkcemi v reálném čase je jejich poměrně náročné vytváření, naopak následná manipulace s nimi je podstatně jednodušší. Procedurální textury je možné parametrizovat, například měnit jejich rozlišení. V aplikaci je využita 3D textura, v níž jsou uloženy normály oceánu. Prvně byly normály 26
30 potřebné k vytvoření hladiny oceánu počítány přímo ve fragment shaderu. Jak vyplývá z algoritmu bump mappingu popsaného v sekci 3.4, k výpočtu normály v dáném bodě je nutné znát také hodnoty čtyř okolních bodů z výškové mapy. To znamená, že k určení normály jednoho bodu na hladině oceánu je nutné volat čtyřikrát funkci Perlinova šumu, pokud výpočet probíhá přímo ve fragment shaderu. Při větším počtu oktáv funkce šumu je zpomalení aplikace neúnosné. Proto jsou v aktuální verzi aplikace normály nejprve vypočteny na procesoru a v pixel shaderu se dopočítá pouze osvětlení hladiny oceánu. Textura pro normály oceánu je definována následovně: glteximage3d(gl_texture_3d,0,gl_rgb16f,tsize,tsize,tsize,... První parametr definuje, že se jedná o 3D texturu. Parametr GL_RGB16F určuje, že pro každou složku barvy, červenou, zelenou, respektive modrou, jsou vyhrazeny dva bajty paměti. Celkově tedy šest bajtů paměti na texel, v němž je místo barvy uložena normála. Velikost textury je určena hodnotou TSize. Nelze zadefinovat příliš velkou texturu, jelikož u trojrozměrné textury se doba výpočtu značně prodlouží za předpokladu, že vzroste její velikost. Ve výsledku je tedy hladina oceánu tvořena jedním vzorem, jenž se stále opakuje. Pokud není textura vytvořena tak, aby na sebe navazovala, jsou místy patrné přechody mezi jednotlivými opakováními. Jak je vidět na obrázku normálové mapy 5.1, jednotlivé textury na sebe úplně ideálně nenavazují. U textury jsou dodatečně definovány další dva parametry: gltexparameteri(gl_texture_3d,gl_texture_mag_filter,gl_linear); gltexparameteri(gl_texture_3d,gl_texture_min_filter,gl_linear); Podle úrovně detailu se textura při vykreslování zmenšuje, nebo zvětšuje. Předešlými paramtery se nastaví, jaká funkce je použita v případě těchto operací. Podrobnější informace o dostupných funkcích lze nalézt na oficiálním webu OpenGL [13]. V aplikaci je v obou případech využito funkce GL_LINEAR, jež počítá s váženým průměrem čtyř nejbližších texelů. Před vytvořením textury normál je nejprve nutné vygenerovat výškovou mapu oceánu. Výšková mapa je definována polem, v němž jsou uloženy hodnoty funkce Perlinova šumu. OceanNoise[TSize*TSize*TSize]; Z výškové mapy jsou poté vypočteny normály a následně uloženy do textury. 5.3 Výpočet aktuální konfigurace barev Jak bylo řečeno v sekci 3.1.1, z konfiguračního souboru jsou načteny pouze konfigurace barev skyboxu ve čtyřech základních kontrolních bodech. K výpočtu aktuální konfigurace barev v reálném čase je tedy zapotřebí získat průběžné hodnoty mezi těmito kontrolními body. Postup je následující: 1. Nejprve se podle pozice Slunce zjistí, mezi kterými dvěma kontrolními body se momentálně nachází simulační čas. První kontrolní bod určuje, jaká je aktuální denní doba TOD (time of day). V proměnné time dy je uložena délka časového intervalu mezi těmito body. Poslední hodnota, kterou je potřeba znát k získání aktuální konfigurace, 27
31 Obrázek 5.1: Normálová mapa hladiny oceánu je posun pozice Slunce vůči pozici, v jaké se Slunce nacházelo v prvním kontrolním bodě sunshift. 2. Tako definované hodnoty jsou předány funkci: getskyconfintod (int daytime,float time_dy, float sunshift, int varcl); Poslední parametr varcl funkce getskyconfintod určuje, pro jakou barvu se má aktuální hodnota vypočítat. Barevná konfigurace aplikace skyboxu obsahuje celkově devět základních barev: základní barva oblohy, koncová barva oblohy, počáteční barva oblohy, počáteční barva horizontu, koncová barva horizontu, barva oceánu, barva Slunce, barva první vrstvy mračen a barva druhé vrstvy mračen. Samozřejmě vykreslená scéna není tvořena jenom těmito barvami, tyto barvy slouží jako základ při tvorbě barevných přechodů. Tvorba barevných přechodů v sekci 3.1. Ukázka barevné konfigurace pro východ Slunce: 1.0,0.5, ,0.2, ,0.1, ,0.2, ,1.0, ,1.0, ,0.0, ,1.0, ,0.15,0.42 Barvy jsou uvedeny ve stejném pořadí, v jakém jsou zmíněny ve výčtu základních barev definovaném v předchozím odstavci. 3. Ve funkci getskyconfintod jsou z konfiguračního souboru načteny barvy v kontrolních bodech pro danou denní dobu TOD. Z konfigurace jsou načteny pouze barvy určené parametrem varcl. Poté jsou postupně předány všechny tři barevné kanály vektorů těchto barev na vstup funkce: getvectorvalue(float time_dy,float sunshift, float vec1val, float vec2val); 4. Ve funkci getvectorvalue je vypočtena aktuální hodnota barevného kanálu na zá- 28
32 kladě předaných parametrů. Zjistí se rozdíl hodnot mezi barevnými kanály hraničních barev value dy a následně poměr mezi tímto rozdílem a posunem v čase dy. Kód 5.1: Výpočet aktuální hodnoty barevného kanálu value_ dy = abs ( vec1val - vec2val ); dy = time_dy / value_dy ; if( vec1val < vec2val ) return vec1val + sunshift / dy; else return vec1val - sunshift / dy; 5. Výsledná barva složená z barevných kanálu, jež byly vypočtěny podle uvedeného postupu, představuje aktuální barevnou konfiguraci pro daný simulační čas. 5.4 GLSL Jak bylo řečeno v úvodní kapitole, novější verze OpenGL dovolují programovat kreslicí pipeline, což bylo umožněno zejména pokrokem ve vývoji grafických karet. Programování na úrovni OpenGL pipeline je prováděno pomocí shaderů. Shader je nezávisle překládaná jednotka napsaná pomocí jazyka GLSL. Shader program je soubor shaderů, jež jsou přeloženy a spojeny dohromady [5]. Rozlišuje se několik druhů shaderů. V aplikaci skyboxu bylo využito vertex a fragment (neboli pixel) shaderů. Společně tvoří jednu nebo více programovatelných úrovní kreslicí pipeline. Jazyk GLSL má základ v syntaxi jazyka C a byl vyvinut konsorciem ARB za účelem jednoduššího programování na úrovni GPU. Ke spuštění aplikace skyboxu je zapotřebí, aby byla podporována minimálně verze GLSL Jakou verzi podporuje grafická karta na cílové platformě, je možné zjistit příkazem glxinfo grep string. Převážná část výpočtů vedoucích k vytvoření skyboxu je prováděna ve fragment shaderu. Ve vertex shaderu se provede transformace scény pomocí transformační matice, jež je vypočtena na procesoru a předána do shaderu jako parametr. Také jsou zde určeny některé vektory potřebné k výpočtu osvětlovacího modelu. Ve fragment shaderu jsou počítány funkce šumu, Blinn-Phongův osvětlovací model, různé filtry a další. Postupně se zde získají barvy daného bodu pro jednotlivé prvky skyboxu a jejich smícháním se určí výsledná barva, která je poté vykreslena do framebufferu. Míchání barev se provádí pomocí vestavěné funkce mix. T = mix(t x,t y,t a); Funkce provede lineární smíchání hodnot x a y na základě hodnoty a. 29
33 Kapitola 6 Závěr V této práci jsem se zabýval metodami tvorby skyboxu. Jak je zmíněno v úvodu, při vytváření skyboxu lze využít dvou přístupů. Vzhledem k tomu, že zadáním bylo vytvořit animovaný skybox, věnuji se v práci popisu procedurálního přístupu. Zvolil jsem scénu zachycující širý oceán, z toho důvodu je část práce zaměřená na vytváření vodní hladiny pomocí metody bump mappingu, i když se nejedná o součást zadání. Hlavní část práce na vývoji aplikace měla zahrnovat implementaci funkcí šumu a jejich použití při generování animovaných mraků. Mým původním plánem bylo naimplementovat jak funkci Perlinova šumu, tak její upravenou verzi Simplex noise a poté demonstrovat rozdíly v jejich použití při vykreslování. Z časových důvodu jsem implementoval pouze funkci Perlinova šumu, neboli její variaci někdy označovanou jako Pink noise. I přes problém s aliasingem se Perlinův šum ukázal jako vhodná volba při generování grafického obsahu, ať už mraků, nebo hladiny oceánu. Jako nepoužitelná se ukázala varianta vykreslování hladiny oceánu přímo v shaderu. Použitím textury nedosáhneme takové úrovně detailů. Zároveň na hladině vznikají drobné artefakty, protože na sebe textura nenavazuje, je však možné aplikaci rozšířit o navazující texturu. Navíc díky použití 3D textury je oceán animovaný. Při řešení projektu jsem objevil několik metod a technik jež bych rád vyzkoušel, ať už přímo v aplikaci skyboxu, nebo v jiných projektech. Jednou z těchto technik jsou částicové systémy. Částicové systémy se využívají například k tvorbě 3D oblak v leteckých simulátorech. V aplikaci jsem se pokusil pomocí částic vykreslit letící kometu na noční obloze. I když jsem její implementaci nedokončil, pokročil jsem poměrně daleko při práci s krelicí pipeline. Hlavně s procesem transform feedback, pomocí něhož je dosaženo generování nových částic. A také jsem si alespoň částečně vyzkoušel práci s geometry shaderem. Při vytváření oceánu jsem narazil na algoritmus Rychlé Furierovy transformace (Fast Fourier transform, zráceně FFT). Pomocí FFT je možné vykreslovat vlny na oceánu v reálném čase. Dosažené výsledky jsou velmi realistické. Algoritmem FFT by bylo možné v aplikaci nahradit použitou metodu bump mappingu. Protože se Furierova transformace vypočítá na procesoru před samotným vykreslením scény, neměl by nastat problém ani s poklesem FPS. Při pokusech s aplikací jsem si uvědomil, že důležitým kritériem při výtváření jakékoliv grafické aplikace je rovnováha mezi mírou realističnosti a rychlostí vykreslování. 30
34 Literatura [1] Bevins, J.: What is coherent noise? [cit ]. [2] Blinn, J. F.: Simulation of wrinkled surfaces. SIGGRAPH Comput. Graph., ročník 12, č. 3, Srpen 1978: s , ISSN , doi: / URL < [3] Elias, H.: Cloud Cover. clouds.htm, 2000 [cit ]. [4] Elias, H.: Perlin Noise. perlin.htm, 2000 [cit ]. [5] Kessenich, J.; Baldwin, D.; Rost, R.: The OpenGL Shading Language. The Khronos Group Inc., [6] Kulhanek, P.: Základní vlastnosti hvězd. Aldebaran Group for Astrophysics, [cit ]. [7] Mandelbrot, B. B.: The Fractal Geometry of Nature. W. H. Freeman and Co., 1982, ISBN [8] Perlin, K.: An image synthesizer. SIGGRAPH Comput. Graph., ročník 19, č. 3, Červenec 1985: s , ISSN , doi: / URL < [9] Philip Gibbs: Why is the sky blue? In The Physics and Relativity FAQ, 1997 [cit ]. [10] Rhoades, J.; Turk, G.; Bell, A.; aj.: Real-time procedural textures. In Proceedings of the 1992 symposium on Interactive 3D graphics, I3D 92, New York, NY, USA: ACM, 1992, ISBN , s , doi: / URL < [11] Roden, T.; Parberry, I.: Clouds and stars: efficient real-time procedural sky rendering using 3D hardware. In Proceedings of the 2005 ACM SIGCHI International Conference on Advances in computer entertainment technology, ACE 05, New York, NY, USA: ACM, 2005, ISBN , s , doi: / URL < 31
35 [12] Sepcot, M. J.: Perlin Noise for 2-Dimensional Clouds [cit ]. [13] Silicon Graphics, Inc.: gltexparameter - OpenGL 4 Reference Pages. [cit ]. [14] Tomáš Milet: Grafické intro 64kB s použitím OpenGL. Diplomová práce, FIT VUT v Brně, [15] W3C Recommendation: Gradients and Patterns [cit ]. [16] Z. Mikulka: Generátory náhodných čísel. Bakalářské práce, Fakulta elektrotechniky a komunikačních technologií VUT v Brně,
36 Příloha A Obsah CD Přiložené CD obsahuje: app-src/ Zdrojové soubory aplikace, manuál k aplikaci v soubor README.txt a Makefile. doc-src/ Zdrojové soubory technické zprávy. doc/ Technická zpráva ve formátu PDF. demo/ Demonstrační video a plakát. 33
37 Příloha B Plakat Obrázek B.1: Plakát reprezentující vytvořenou aplikaci skyboxu. 34
Cirrus (řasa) patří mezi vysoké mraky (8 13km) je tvořen jasně bílými jemnými vlákny. ani měsíční světlo
Oblaka Základní informace mraky jsou viditelnou soustavou malých částic vody nebo ledu v atmosféře Země - nejde o vodní páru liší se vzhledem, výškou i vlastnostmi klasifikaci mraků zavedl Luke Howard
13 Barvy a úpravy rastrového
13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody
Základy 3D modelování a animace v CGI systémech Cinema 4D C4D
EVROPSKÝ SOCIÁLNÍ FOND Základy 3D modelování a animace v CGI systémech Cinema 4D C4D PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Mgr. David Frýbert 2013 CGI systémy Computer - generated imagery - aplikace
Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost
Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence
11 Zobrazování objektů 3D grafiky
11 Zobrazování objektů 3D grafiky Studijní cíl Tento blok je věnován základním algoritmům zobrazení 3D grafiky. Postupně budou probrány základní metody projekce kolmé promítání, rovnoběžné promítání a
Osvětlování a stínování
Osvětlování a stínování Pavel Strachota FJFI ČVUT v Praze 21. dubna 2010 Obsah 1 Vlastnosti osvětlovacích modelů 2 Světelné zdroje a stíny 3 Phongův osvětlovací model 4 Stínování 5 Mlha Obsah 1 Vlastnosti
Animace a geoprostor. První etapa: Animace 2. přednáško-cvičení. Jaromír Landa. jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně
Animace a geoprostor První etapa: Animace 2. přednáško-cvičení Jaromír Landa jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně Náplň přednáško-cvičení - Flamingo Prostředí Nekonečná rovina
VÝPOČTY VLHKOSTNÍCH CHARAKTERISTIK a KLASIFIKACE OBLAKŮ
VÝPOČTY VLHKOSTNÍCH CHARAKTERISTIK a KLASIFIKACE OBLAKŮ Upraveno za podpory projektu FRVŠ 755/2013/B4/d: Multimediální podklady pro cvičení předmětu Agroklimatologie Určení maximálního tlaku vodní páry
Rozšíření bakalářské práce
Rozšíření bakalářské práce Vojtěch Vlkovský 2011 1 Obsah Seznam obrázků... 3 1 Barevné modely... 4 1.1 RGB barevný model... 4 1.2 Barevný model CMY(K)... 4 1.3 Další barevné modely... 4 1.3.1 Model CIE
VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ
VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi
Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1
Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní
Rekurzivní sledování paprsku
Rekurzivní sledování paprsku 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 21 Model dírkové kamery 2 / 21 Zpětné sledování paprsku L D A B C 3 / 21 Skládání
IVT. Rastrová grafika. 8. ročník
IVT Rastrová grafika 8. ročník listopad, prosinec 2013 Autor: Mgr. Dana Kaprálová Zpracováno v rámci projektu Krok za krokem na ZŠ Želatovská ve 21. století registrační číslo projektu: CZ.1.07/1.4.00/21.3443
Návod k použití softwaru Solar Viewer 3D
Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a
POČASÍ. G. Petříková, 2005. Zdroj náčrtů: Zeměpisný náčrtník a Malá encyklopedie geografie Zdroj fotografií: časopis Týden
POČASÍ G. Petříková, 2005 Zdroj náčrtů: Zeměpisný náčrtník a Malá encyklopedie geografie Zdroj fotografií: časopis Týden OBLAKA Vznikají při výstupu vzduchu kondenzací /desublimací vodní páry (při dosažení
Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38
IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL Tomáš Milet Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno IZG cvičení 6. - Zobrazování 3D scény
Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm.
1. Podstata světla Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. Vznik elektromagnetických vln (záření): 1. při pohybu elektricky nabitých částic s nenulovým zrychlením
Studentská tvůrčí a odborná činnost STOČ 2013 3D MODELY STROMŮ PRO VYUŽITÍ V REAL-TIME APLIKACI. Michaela Brázdilová
Studentská tvůrčí a odborná činnost STOČ 2013 3D MODELY STROMŮ PRO VYUŽITÍ V REAL-TIME APLIKACI Michaela Brázdilová STOČ 25. dubna 2013 UTB ve Zlíně, Fakulta aplikované informatiky, 2013 2 OBSAH ANOTACE...
scale n_width width center scale left center range right center range value weight_sum left right weight value weight value weight_sum weight pixel
Změna velikosti obrázku Převzorkování pomocí filtrů Ačkoliv jsou výše uvedené metody mnohdy dostačující pro běžné aplikace, občas je zapotřebí dosáhnout lepších výsledků. Pokud chceme obrázky zvětšovat
ODRAZ A LOM SVĚTLA. Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika
ODRAZ A LOM SVĚTLA Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika Odraz světla Vychází z Huygensova principu Zákon odrazu: Úhel odrazu vlnění je roven úhlu dopadu. Obvykle provádíme konstrukci pomocí
Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)
Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící
Android OpenGL. Pokročilé shadery
Android OpenGL Pokročilé shadery Struktura programu Reálná aplikace zpravidla obsahuje více než jeden shader Kód pro inicializaci shaderu je dobré mít ve třídě (méně opisování stejného kódu) Shadery není
Seriál II.II Vektory. Výfučtení: Vektory
Výfučtení: Vektory Abychom zcela vyjádřili veličiny jako hmotnost, teplo či náboj, stačí nám k tomu jediné číslo (s příslušnou jednotkou). Říkáme jim skalární veličiny. Běžně se však setkáváme i s veličinami,
2D grafika. Jak pracuje grafik s 2D daty Fotografie Statické záběry Záběry s pohybem kamery PC animace. Počítačová grafika, 2D grafika 2
2D grafika Jak pracuje grafik s 2D daty Fotografie Statické záběry Záběry s pohybem kamery PC animace Počítačová grafika, 2D grafika 2 2D grafika PC pracuje s daným počtem pixelů s 3 (4) kanály barev (RGB
Práce na počítači. Bc. Veronika Tomsová
Práce na počítači Bc. Veronika Tomsová Barvy Barvy v počítačové grafice I. nejčastější reprezentace barev: 1-bitová informace rozlišující černou a bílou barvu 0... bílá, 1... černá 8-bitové číslo určující
12 Metody snižování barevného prostoru
12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů
2.5 Rovnováha rovinné soustavy sil
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 2.5 Rovnováha rovinné soustavy sil Rovnováha sil je stav, kdy na těleso působí více sil, ale jejich výslednice
Středoškolská technika 2017 PROGRAMY PRO PROSTOROVÉ ZOBRAZOVÁNÍ NĚKTERÝCH TĚLES
Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAMY PRO PROSTOROVÉ ZOBRAZOVÁNÍ NĚKTERÝCH TĚLES Vladimír Štěpnička Střední škola a vyšší odborná škola aplikované
1. Vektorové algoritmy jejich výstupem je soubor geometrických prvků, např.
Kapitola 5 Řešení viditelnosti Řešit viditelnost ve scéně umí většina grafických programů. Cílem je určit ty objekty, resp. jejich části, které jsou viditelné z určitého místa. Tyto algoritmy jsou vždy
Úloha - rozpoznávání číslic
Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání
Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.
Kapitola 2 Přímková a rovinná soustava sil 2.1 Přímková soustava sil Soustava sil ležící ve společném paprsku se nazývá přímková soustava sil [2]. Působiště všech sil m i lze posunout do společného bodu
Obr. 4 Změna deklinace a vzdálenosti Země od Slunce v průběhu roku
4 ZÁKLADY SFÉRICKÉ ASTRONOMIE K posouzení proslunění budovy nebo oslunění pozemku je vždy nutné stanovit polohu slunce na obloze. K tomu slouží vztahy sférické astronomie slunce. Pro sledování změn slunečního
Geometrická optika. předmětu. Obrazový prostor prostor za optickou soustavou (většinou vpravo), v němž může ležet obraz - - - 1 -
Geometrická optika Optika je část fyziky, která zkoumá podstatu světla a zákonitosti světelných jevů, které vznikají při šíření světla a při vzájemném působení světla a látky. Světlo je elektromagnetické
2.1.2 Měsíční fáze, zatmění Měsíce, zatmění Slunce
2.1.2 Měsíční fáze, zatmění Měsíce, zatmění Slunce Předpoklady: 020101 Pomůcky: lampičky s klasickými žárovkami, stínítko, modely slunce, země, měsíce na zatmění Měsíc je velmi zajímavé těleso: jeho tvar
Optika pro mikroskopii materiálů I
Optika pro mikroskopii materiálů I Jan.Machacek@vscht.cz Ústav skla a keramiky VŠCHT Praha +42-0- 22044-4151 Osnova přednášky Základní pojmy optiky Odraz a lom světla Interference, ohyb a rozlišení optických
Experimentální realizace Buquoyovy úlohy
Experimentální realizace Buquoyovy úlohy ČENĚK KODEJŠKA, JAN ŘÍHA Přírodovědecká fakulta Univerzity Palackého, Olomouc Abstrakt Tato práce se zabývá experimentální realizací Buquoyovy úlohy. Jedná se o
Základní jednotky v astronomii
v01.00 Základní jednotky v astronomii Ing. Neliba Vlastimil AK Kladno 2005 Délka - l Slouží pro určení vzdáleností ve vesmíru Základní jednotkou je metr metr je definován jako délka, jež urazí světlo ve
Ing. Jiří Fejfar, Ph.D. Dálkový průzkum Země
Ing. Jiří Fejfar, Ph.D. Dálkový průzkum Země strana 2 Co je DPZ Dálkový průzkum je umění rozdělit svět na množství malých barevných čtverečků, se kterými si lze hrát na počítači a odhalovat jejich neuvěřitelný
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í
DYNAMIKA SÍLA 1. Úvod dynamos (dynamis) = síla; dynamika vysvětluje, proč se objekty pohybují, vysvětluje změny pohybu. Nepopisuje pohyb, jak to dělá... síly mohou měnit pohybový stav těles nebo mohou
Animace a geoprostor. První etapa: Animace 3. přednáško-cvičení. Jaromír Landa. jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně
Animace a geoprostor První etapa: Animace 3. přednáško-cvičení Jaromír Landa jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně Náplň přednáško-cvičení Nasvícení scény Světelné zdroje umělé
Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17
Mgr. Tomáš Kotler I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Je dán rovinný obrazec, v obrázku vyznačený barevnou výplní, který představuje
Zákon odrazu. Úhel odrazu je roven úhlu dopadu, přičemž odražené paprsky zůstávají v rovině dopadu.
1. ZÁKON ODRAZU SVĚTLA, ODRAZ SVĚTLA, ZOBRAZENÍ ZRCADLY, Dívejme se skleněnou deskou, za kterou je tmavší pozadí. Vidíme v ní vlastní obličej a současně vidíme předměty za deskou. Obojí však slaběji než
Kde se používá počítačová grafika
POČÍTAČOVÁ GRAFIKA Kde se používá počítačová grafika Tiskoviny Reklama Média, televize, film Multimédia Internetové stránky 3D grafika Virtuální realita CAD / CAM projektování Hry Základní pojmy Rastrová
SBÍRKA ŘEŠENÝCH FYZIKÁLNÍCH ÚLOH
SBÍRKA ŘEŠENÝCH FYZIKÁLNÍCH ÚLOH MECHANIKA MOLEKULOVÁ FYZIKA A TERMIKA ELEKTŘINA A MAGNETISMUS KMITÁNÍ A VLNĚNÍ OPTIKA FYZIKA MIKROSVĚTA ODRAZ A LOM SVĚTLA 1) Index lomu vody je 1,33. Jakou rychlost má
Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek 15.3. 2010
Vývoj počítačové grafiky Tomáš Pastuch Pavel Skrbek 15.3. 2010 Počítačová grafika obor informatiky, který používá počítače k tvorbě umělých grafických objektů nebo pro úpravu již nasnímaných grafických
Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.
Úloha 1 Která barva nepatří do základních barev prostoru RGB? a. Černá b. Červená c. Modrá d. Zelená Úloha 2 V rovině je dán NEKONVEXNÍ n-úhelník a bod A. Pokud paprsek (polopřímka) vedený z tohoto bodu
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Zrcadla Zobrazení zrcadlem Zrcadla jistě všichni znáte z každodenního života ráno se do něj v koupelně díváte,
9 Prostorová grafika a modelování těles
9 Prostorová grafika a modelování těles Studijní cíl Tento blok je věnován základům 3D grafiky. Jedná se především o vysvětlení principů vytváření modelů 3D objektů, jejich reprezentace v paměti počítače.
7. Gravitační pole a pohyb těles v něm
7. Gravitační pole a pohyb těles v něm Gravitační pole - existuje v okolí každého hmotného tělesa - představuje formu hmoty - zprostředkovává vzájemné silové působení mezi tělesy Newtonův gravitační zákon:
zdroj světla). Z metod transformace obrázku uvedeme warping a morfing, které se
Kapitola 3 Úpravy obrazu V následující kapitole se seznámíme se základními typy úpravy obrazu. První z nich je transformace barev pro výstupní zařízení, dále práce s barvami a expozicí pomocí histogramu
Úvod do počítačové grafiky
Úvod do počítačové grafiky elmag. záření s určitou vlnovou délkou dopadající na sítnici našeho oka vnímáme jako barvu v rámci viditelné části spektra je člověk schopen rozlišit přibližně 10 milionů barev
VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender
VY_32_INOVACE_INF.19 Inkscape, GIMP, Blender Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 INKSCAPE Inkscape je open source
Základy vizualizace. Výpočetní metody
10 Základy vizualizace Reálným zobrazováním se zabývá samostatný obor nazvaný Vizualizace. Podstata většiny vizualizačních systémů vychází z jednoduché koncepce skupin objektů, které nazýváme Scéna. Základní
Počítačová grafika. Studijní text. Karel Novotný
Počítačová grafika Studijní text Karel Novotný P 1 Počítačová grafika očítačová grafika je z technického hlediska obor informatiky 1, který používá počítače k tvorbě umělých grafických objektů a dále také
TÍHOVÉ ZRYCHLENÍ TEORETICKÝ ÚVOD. 9, m s.
TÍHOVÉ ZRYCHLENÍ TEORETICKÝ ÚVOD Soustavu souřadnic spojenou se Zemí můžeme považovat prakticky za inerciální. Jen při několika jevech vznikají odchylky, které lze vysvětlit vlastním pohybem Země vzhledem
4.2.3 ŠÍŘE FREKVENČNÍHO PÁSMA CHOROVÉHO ELEMENTU A DISTRIBUČNÍ FUNKCE VLNOVÝCH NORMÁL
4.2.3 ŠÍŘE FREKVENČNÍHO PÁSMA CHOROVÉHO ELEMENTU A DISTRIBUČNÍ FUNKCE VLNOVÝCH NORMÁL V předchozích dvou podkapitolách jsme ukázali, že chorové emise se mohou v řadě případů šířit nevedeným způsobem. Připomeňme
Programátorská dokumentace
Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci
Reprezentace 3D modelu
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 1/25 Reprezentace 3D modelu Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké
Stanovení nejistot při výpočtu kontaminace zasaženého území
Stanovení nejistot při výpočtu kontaminace zasaženého území Michal Balatka Abstrakt Hodnocení ekologického rizika kontaminovaných území představuje komplexní úlohu, která vyžaduje celou řadu vstupních
Bitmapová grafika: Vrstvy - interakce (režimy prolnutí)
VY_32_INOVACE_PG3108 ; Mgr. Pavel Hauer ; 5/2012; 1.ročník; bitmapová grafika, Počítačová grafika; názorná pomůcka pro výuku, opakování, doplnění látky Bitmapová grafika: Vrstvy - interakce (režimy prolnutí)
GIS Geografické informační systémy
GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu
Základní druhy osvětlení
Základní druhy osvětlení Ing. Jan Matěják www.matejakart.com Jedním ze základních stavebních prvků na obraze je světlo. Světlo určuje vzhled modelu, jeho barevnost, kontrasty apod. Směr, kvalita, množství,
Měření tíhového zrychlení matematickým a reverzním kyvadlem
Úloha č. 3 Měření tíhového zrychlení matematickým a reverzním kyvadlem Úkoly měření: 1. Určete tíhové zrychlení pomocí reverzního a matematického kyvadla. Pro stanovení tíhového zrychlení, viz bod 1, měřte
11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.
11MAMY LS 2017/2018 Cvičení č. 2: 21. 2. 2018 Úvod do Matlabu. Jan Přikryl 21. února 2018 Po skupinách, na které jste se doufám rozdělili samostatně včera, vyřešte tak, jak nejlépe svedete, níže uvedená
Jaký obraz vytvoří rovinné zrcadlo? Zdánlivý, vzpřímený, stejně velký. Jaký obraz vytvoří vypuklé zrcadlo? Zdánlivý, vzpřímený, zmenšený
Jan Olbrecht Jaký obraz vytvoří rovinné zrcadlo? Zdánlivý, vzpřímený, stejně velký Jaký obraz vytvoří vypuklé zrcadlo? Zdánlivý, vzpřímený, zmenšený Jaký typ lomu nastane při průchodu světla z opticky
2. Kinematika bodu a tělesa
2. Kinematika bodu a tělesa Kinematika bodu popisuje těleso nebo také bod, který se pohybuje po nějaké trajektorii, křivce nebo jinak definované dráze v závislosti na poloze bodu na dráze, rychlosti a
Grafika na počítači. Bc. Veronika Tomsová
Grafika na počítači Bc. Veronika Tomsová Proces zpracování obrazu Proces zpracování obrazu 1. Snímání obrazu 2. Digitalizace obrazu převod spojitého signálu na matici čísel reprezentující obraz 3. Předzpracování
3D Vizualizace muzea vojenské výzbroje
3D Vizualizace muzea vojenské výzbroje 3D visualization of the museum of military equipment Bc.Tomáš Kavecký STOČ 2011 UTB ve Zlíně, Fakulta aplikované informatiky, 2011 2 ABSTRAKT Cílem této práce je
Fyzika 1 - rámcové příklady Kinematika a dynamika hmotného bodu, gravitační pole
Fyzika 1 - rámcové příklady Kinematika a dynamika hmotného bodu, gravitační pole 1. Určete skalární a vektorový součin dvou obecných vektorů AA a BB a popište, jak závisí výsledky těchto součinů na úhlu
VÝUKOVÝ SOFTWARE PRO ANALÝZU A VIZUALIZACI INTERFERENČNÍCH JEVŮ
VÝUKOVÝ SOFTWARE PRO ANALÝZU A VIZUALIZACI INTERFERENČNÍCH JEVŮ P. Novák, J. Novák Katedra fyziky, Fakulta stavební, České vysoké učení technické v Praze Abstrakt V práci je popsán výukový software pro
Středoškolská technika SCI-Lab
Středoškolská technika 2016 Setkání a prezentace prací středoškolských studentů na ČVUT SCI-Lab Kamil Mudruňka Gymnázium Dašická 1083 Dašická 1083, Pardubice O projektu SCI-Lab je program napsaný v jazyce
Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu
Zobrazování terénu Jan Vaněk, Bruno Ježek Universita Obrany, Fakulta vojenského zdravotnictví, Katedra všeobecně vzdělávacích oborů e-mail: vanek@pmfhk.cz; jezek@pmfhk.cz Abstrakt Vizualizace terénu je
Slunce zdroj energie pro Zemi
Slunce zdroj energie pro Zemi Josef Trna, Vladimír Štefl Zavřete oči a otočte tvář ke Slunci. Co na tváři cítíte? Cítíme zvýšení teploty pokožky. Dochází totiž k přenosu tepla tepelným zářením ze Slunce
3.2 3DgrafyvMaple 106 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK
106 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK > A2:=augment(submatrix(A,1..3,[1]),b,submatrix(A,1..3,[3])); Potom vypočítáme hodnotu x 2 : > x2:=det(a2)/det(a); Zadání matice. Matici M typu (2, 3) zadáme
Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010
Ing. Jan Buriánek (ČVUT FIT) Reprezentace bodu a zobrazení BI-MGA, 2010, Přednáška 2 1/33 Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ. Martin Štroner, Bronislav Koska 1
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ SOFTWARE FOR PROCESSING OF POINT CLOUDS FROM LASER SCANNING Martin Štroner, Bronislav Koska 1 Abstract At the department of special geodesy is
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Úlohy nad rastrovými daty Daniela
Realtime zobrazování vodní hladiny na dnešních GPU. Jan Horáček
Realtime zobrazování vodní hladiny na dnešních GPU Jan Horáček Obsah Simulace přírodních efektů Statické techniky Dynamické techniky Implementace Otázky a ukázky demoprogramů Simulace přírodních efektů
Surfels: Surface Elements as Rendering Primitives
Surfels: Surface Elements as Rendering Primitives Výzkum v počítačové grafice Martin Herodes Nevýhody plošných primitiv Reprezentace složitých objektů pomocí plošných primitiv (trojúhelníků, čtyřúhelníků
Ověřovací nástroj PENB MANUÁL
Ověřovací nástroj PENB MANUÁL Průkaz energetické náročnosti budovy má umožnit majiteli a uživateli jednoduché a jasné porovnání kvality budov z pohledu spotřeb energií Ověřovací nástroj kvality zpracování
kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická
Odstranění geometrických zkreslení obrazu Vstupní obraz pro naše úlohy získáváme pomocí optické soustavy tvořené objektivem a kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická
Jana Dannhoferová Ústav informatiky, PEF MZLU
Počítačová grafika Křivky Jana Dannhoferová (jana.dannhoferova@mendelu.cz) Ústav informatiky, PEF MZLU Základní vlastnosti křivek křivka soustava parametrů nějaké rovnice, která je posléze generativně
1. Je dána funkce f(x, y) a g(x, y, z). Vypište symbolicky všechny 1., 2. a 3. parciální derivace funkce f a funkce g.
. Je dána funkce f(x, y) a g(x, y, z). Vypište symbolicky všechny.,. a 3. parciální derivace funkce f a funkce g.. Spočtěte všechny první parciální derivace funkcí: a) f(x, y) = x 4 + y 4 4x y, b) f(x,
0.1 Úvod do matematické analýzy
Matematika I (KMI/PMATE) 1 0.1 Úvod do matematické analýzy 0.1.1 Pojem funkce Veličina - pojem, který popisuje kvantitativní (číselné) vlastnosti reálných i abstraktních objektů. Příklady veličin: hmotnost
Interaktivní modely pro Konstruktivní geometrii
Interaktivní modely pro Konstruktivní geometrii Jakub Makarovský Abstrakt V příspěvku jsou prezentovány interaktivní modely základních úloh z Konstruktivní geometrie (1. ročník, zimní semestr) zaměřující
7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem
7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového
CVIČNÝ TEST 51. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
CVIČNÝ TEST 51 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 V obchodě s kouzelnickými potřebami v Kocourkově
Barvy a barevné modely. Počítačová grafika
Barvy a barevné modely Počítačová grafika Barvy Barva základní atribut pro definici obrazu u každého bodu, křivky či výplně se definuje barva v rastrové i vektorové grafice všechny barvy, se kterými počítač
Perspektiva jako matematický model objektivu
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Semestrální práce z předmětu KMA/MM Perspektiva jako matematický model objektivu Martin Tichota mtichota@students.zcu.cz
Měření průtoku kapaliny s využitím digitální kamery
Měření průtoku kapaliny s využitím digitální kamery Mareš, J., Vacek, M. Koudela, D. Vysoká škola chemicko-technologická Praha, Ústav počítačové a řídicí techniky, Technická 5, 166 28, Praha 6 e-mail:
Úvod do zpracování signálů
1 / 25 Úvod do zpracování signálů Karel Horák Rozvrh přednášky: 1. Spojitý a diskrétní signál. 2. Spektrum signálu. 3. Vzorkovací věta. 4. Konvoluce signálů. 5. Korelace signálů. 2 / 25 Úvod do zpracování
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ OBOR GEODÉZIE A KARTOGRAFIE KATEDRA VYŠŠÍ GEODÉZIE název předmětu úloha/zadání název úlohy Geodetická astronomie 3/6 Aplikace keplerovského pohybu
GIS ANALÝZA VLIVU DÁLNIČNÍ SÍTĚ NA OKOLNÍ KRAJINU. Veronika Berková 1
GIS ANALÝZA VLIVU DÁLNIČNÍ SÍTĚ NA OKOLNÍ KRAJINU Veronika Berková 1 1 Katedra mapování a kartografie, Fakulta stavební, ČVUT, Thákurova 7, 166 29, Praha, ČR veronika.berkova@fsv.cvut.cz Abstrakt. Metody
Textury v real-time grafice. 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz
Textury v real-time grafice 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz Textury vylepšují vzhled povrchu těles modifikace barvy ( bitmapa ) dojem hrbolatého
Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1
Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1 Ing. Jakub Ulmann Zobrazování optickými soustavami 1. Optické
Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.
Generování pseudonáhodných čísel při simulaci Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky V simulačních modelech se velice často vyskytují náhodné proměnné. Proto se budeme zabývat otázkou, jak při simulaci
Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: 12. 1. 2013. str ánk y. Vytvořil: Petr Lerch. www.isspolygr.
Webové stránky 16. Vytvořil: Petr Lerch www.isspolygr.cz Datum vytvoření: 12. 1. 2013 Webové Strana: 1/6 Škola Ročník Název projektu Číslo projektu Číslo a název šablony Autor Tématická oblast Název DUM
Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené
2. 3. 2018 Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené mn. M E n. Zapište a načrtněte množinu D, ve které
Zobrazování a osvětlování
Zobrazování a osvětlování Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa
DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ
DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ UMT Tomáš Zajíc, David Svoboda Typy počítačové grafiky Rastrová Vektorová Rastrová grafika Pixely Rozlišení Barevná hloubka Monitor 72 PPI Tiskárna