Sem vložte zadání Vaší práce.

Rozměr: px
Začít zobrazení ze stránky:

Download "Sem vložte zadání Vaší práce."

Transkript

1 Sem vložte zadání Vaší práce.

2

3 České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Bakalářská práce Rozšíření platformy ExtBrain Universe Martin Šedivý Vedoucí práce: Ing. Tomáš Novotný 14. května 2012

4

5 Poděkování Rád bych poděkoval svému vedoucímu práce Ing. Tomáši Novotnému za skvělé nápady, cenné připomínky a hlavně za ochotu a čas, který této práci věnoval.

6

7 Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů. V souladu s ust. 46 odst. 6 tohoto zákona tímto uděluji nevýhradní oprávnění (licenci) k užití této mojí práce, a to včetně všech počítačových programů, jež jsou její součástí či přílohou a veškeré jejich dokumentace (dále souhrnně jen Dílo ), a to všem osobám, které si přejí Dílo užít. Tyto osoby jsou oprávněny Dílo užít v rámci licence Mozilla Public License 2.0 ( Toto oprávnění je časově, teritoriálně i množstevně neomezené. V Praze dne 14. května

8 České vysoké učení technické v Praze Fakulta informačních technologií c 2012 Martin Šedivý. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Martin Šedivý. Rozšíření platformy ExtBrain Universe: Bakalářská práce. Praha: ČVUT v Praze, Fakulta informačních technologií, 2012.

9 Abstract The aim of this bachelor thesis is to extend the already started project Ext- Brain Universe to movement control in 3D space using a mouse. Purpose of ExtBrain Universe project is to create virtual reality, which will display (simulate) functioning of the various worlds or systems such as universe or human body. Part of this thesis is to design and implement suitable movement control in virtual reality using a mouse in a web browser. To achieve the objective, WebGL and shaders (programs running on a graphics card) technologies are used. The thesis contains description of implementation of partial control and there are discussed pitfalls of applications running in a web browser associated with the use of mouse. Keywords WebGL, OpenGL, GLSL, shaders, 3D application, web browser, user interaction, control Abstrakt Cílem této bakalářské práce je rozšířit již započatý projekt ExtBrain Universe o ovládání pohybu v 3D prostoru pomocí myši. Účelem projektu ExtBrain Universe je vytvořit virtuální realitu, která bude zobrazovat (simulovat) fungování různých světů nebo systémů, jako je vesmír nebo lidské tělo. Součástí této práce je navrhnout a implementovat vhodné ovládání pohybu ve virtuální realitě pomocí myši ve webovém prohlížeči. K dosažení cíle je využívána technologie WebGL a shaderů (programy běžící na grafické kartě). Práce obsahuje popis implementace dílčích ovládacích prvků a jsou diskutována úskalí aplikace běžící ve webovém prohlížeči spojena s používáním myši. Klíčová slova WebGL, OpenGL, GLSL, shadery, 3D aplikace, webový prohlížeč, interakce uživatelů, ovládání 9

10

11 Obsah Úvod 15 1 Použité technologie WebGL OpenGL GLSL (shadery) Transformace Implementační prostředí Jazyk implementace Podpůrné knihovny Návrh aplikace Struktura aplikace Návrh implementace Popis implementace Jednoduché ovládání pohybu kamery z klávesnice Vybírání objektů scény pomocí myši Přiblížení kamery k vybranému tělesu Ovládání kamery vzhledem k vybranému objektu Stavění budov a GUI D mapa Fyzikální vlastnosti pohybu kamery Popis dokumentace 49 Závěr 51 Literatura 53 A Seznam použitých zkratek 55 B Obsah přiloženého CD 57 11

12

13 Seznam obrázků 1.1 OpenGL - postup zpracování dat Kroky transformace vrcholů Zjednodušený diagram objektů - základ aplikace Zjednodušený diagram objektů - tělesa scény Render scény v normálním režimu Render scény do textury při vybírání objektů Průběh funkce pro výpočet aktuální rychlosti přiblížení Průběh funkce pro výpočet změny směru pohledu Průběh funkce pro výpočet aktuální rychlosti rotace kamery Render scény v režimu rotace kolem vybraného tělesa Způsob vykreslování ukazatele rychlosti Render scény do textury při zjišťování polohy nové budovy Grafické uživatelské rozhraní s menu pro stavění budov Render posuvníku při určování aktuální hodnoty D mapa prostoru Průběh funkce pro výpočet zrychlení Průběh funkce pro výpočet zrychlení při brždění pohybu Průběh funkce pro výpočet útlumu

14

15 Úvod Cílem této bakalářské práce je rozšíření projektu ExtBrain Universe pro interakci uživatelů v 3D prostoru z webového prohlížeče. Především je implementováno ovládání pomocí myši. Projekt ExtBrain Universe je platforma pro virtuální realitu, která si klade za cíl simulovat fungování různých druhů světů nebo systémů. Může se jednat třeba o zobrazení planet ve vesmíru, fungování mravenčí kolonie uvnitř mraveniště nebo i pohled zevnitř na lidské tělo. Co bude výslednou aplikací (jaký systém resp. svět bude zvolen) není předmětem projektu. Projekt se zabývá přípravou platformy pro zobrazování objektů, pohyb kamery (pohledu uživatele), fyziku pohybu apod. A to v 3D prostoru, nezávisle na tom, o jaké objekty se jedná. Projekt bude primárně sloužit jako výukový program. Výsledná aplikace poběží v internetovém prohlížeči na základě technologie WebGL. Velký důraz je kladen na to, aby aplikace byla schopna zobrazit velké množství objektů, ať už se bude jednat o planety ve vesmíru, či buňky v lidském těle. Mimo jiné i za tímto účelem se využívají shadery jazyka GLSL. Více o této technologii v kapitole 1 Použité technologie. Tato bakalářská práce rozšiřuje projekt o interakci s uživatelem. Jelikož bylo potřeba volně se pohybovat v prostorové scéně, součástí práce se stala také implementace ovládání pohybu kamery z klávesnice. Největší pozornost ale byla věnována ovládání pomocí myši. Nejprve bylo potřeba navrhnout a implementovat techniku vybírání jednotlivých objektů nacházejících se ve scéně, včetně plynulého přechodu kamery k vybranému objektu. Dále bylo implementováno otáčení kamery kolem vybraného objektu při současném stisku tlačítka a pohybu myši. Další částí této práce byla implementace přidávání nových objektů uživatelem pro simulaci stavění např. budov na planetách. K tomuto účelu bylo také navrženo vlastní GUI. 15

16 Úvod Nemalou částí bakalářské práce byla také implementace fyzikálních vlastností kamery, jako je maximální rychlost, zrychlení, útlum apod. Každý pohyb ve scéně musí tuto fyziku dodržovat. V úvodu práce je popsána použitá, již zmíněná, technologie WebGL (kapitola 1 Použité technologie ) a prostředí, ve kterém byla výsledná aplikace implementována (kapitola 2 Implementační prostředí ). Následuje kapitola Návrh aplikace, kde je popsána struktura výsledné testovací aplikace. Nejdůležitější částí práce je kapitola 4 Popis implementace, kde je popsáno, jak jsou jednotlivé ovládací prvky implementovány. Na závěr je v kapitole Popis dokumentace stručně popsána dokumentace zdrojových kódů. 16

17 KAPITOLA 1 Použité technologie Následující část popisuje technologie použité pro implementaci výsledné aplikace. Jedná se o grafické API WebGL založené na grafickém systému OpenGL a shaderové programy. V závěru kapitoly jsou popsány transformace - matematický aparát důležitý pro programování 3D grafiky. 1.1 WebGL Projekt je vyvíjen pomocí technologie WebGL. Jedná se o nízkoúrovňové 3D grafické API pro tvorbu webových aplikací. WebGL je multiplatformní a bezplatné. Jelikož je přímo implementováno v prohlížeči, umožňuje vytvářet webové 3D aplikace bez použití jakéhokoli zásuvného modulu. WebGL je založeno na grafickém systému OpenGL (konkrétně na verzi OpenGL ES 2.0). (3) 1.2 OpenGL OpenGl je API pro grafický hardware, které umožňuje vytvářet interaktivní 3D aplikace. Je nezávislé na hardwaru a použitelné na mnoha platformách. Z tohoto důvodu neobsahuje žádné příkazy pro práci s okny nebo s uživatelským vstupem. OpenGL také neobsahuje žádné funkce pro popisování 3D objektů. Popisuje pouze tři základní tvary - bod, přímka a polygon. (1) Dnes moderní OpenGL používá programovatelné zpracování dat vrcholů a fragmentů (dříve OpenGL používalo fixní zpracování). Samotné zpracování dat lze řídit pomocí malých programů - shaderů. (1) 17

18 1. Použité technologie 1.3 GLSL (shadery) Shadery (nebo také shaderové programy) jsou programy běžící na grafické kartě. Jsou napsány ve speciálním jazyce, nazvaném OpenGL shading Language (ve zkratce GLSL) (1). GLSL vychází z jazyka C, který byl rozšířen o vektorové a maticové typy a funkce pro práci s nimi. Tyto operace jsou typické pro zpracování 3D grafiky. GLSL také převzalo některé vlastnosti jazyka C++ (např. přetěžování funkcí nebo deklarování proměnných až v místě, kde jsou potřeba). (4) Existují dva druhy shaderů. Vertex-shader, který zpracovává data jednotlivých vrcholů a fragment-shader, který se stará o fragmenty. Ty jsou viditelné jako pixely, proto se také někdy fragment-shaderu říká pixel-shader. (1) OpenGL (WebGL) postupuje tak (viz obr. 1.1), že nejdříve zpracovává data vrcholů (souřadnice v prostoru, barvy, souřadnice textury, atd.) pomocí vertex-shaderu. Následně se z bodů sestaví základní tvary a ty se rasterizují do fragmetů, které se poté zpracují ve fragment-shaderu. Poslední část před samotným vykreslením výsledného obrázku je míchání (blending), kde se aktuální fragmenty smíchají s již vykreslenými pixely nebo je překreslí. data vrcholů data pixelů vertex shader rasterizace fragment shader blending výsledný obrázek Obrázek 1.1: OpenGL - postup zpracování dat 1.4 Transformace Důležitou součástí programování 3D grafiky (nejen OpenGL) jsou transformace. 3D objekty jsou reprezentovány body, které mají v prostoru čtyři 18

19 1.4. Transformace homogenní souřadnice (tři prostorové plus váha). Veškeré operace s objekty se dají provádět pomocí násobení těchto souřadnic příslušnou transformační maticí. Čtvrtá souřadnice je potřeba kvůli tomu, aby se i transformace posunutí dala realizovat pomocí matice. Násobením transformačních matic dochází ke skládání transformací. (2) Pro výslednou polohu objektu ve výřezu se provádějí následující kroky (viz obr matice se postupně násobí zleva, proto je první operace úplně napravo): nejdříve se vrcholy násobí maticí modelu (transformace modelu ve scéně), pak maticí pohledu (posun, rotace kamery - pohledu) a nakonec maticí projekce (deformace vlivem např. perspektivního zobrazení). Jednotlivé transformační matice definují různé prostorové systémy, jako je prostor modelu, scény, kamery atd. matice projekce... matice pohledu matice modelu x y z w perspektiva transformace kamery transformace modelu souřadnice vrcholu Obrázek 1.2: Kroky transformace vrcholů 19

20

21 KAPITOLA 2 Implementační prostředí Tato krátká kapitola popisuje, jaký byl zvolen jazyk pro implementaci výsledné aplikace a jaké byly použity knihovny. 2.1 Jazyk implementace WebGL je (jak už bylo zmíněno) přímo součástí webového prohlížeče. Běží na straně klienta a je implementováno jako rozšíření (knihovna) JavaScriptu. Proto byl také JavaScript zvolen jako implementační jazyk tohoto projektu. 2.2 Podpůrné knihovny Za účelem zjednodušení práce s JavaScriptem byla v tomto projektu používána knihovna jquery spolu s jejím rozšířením pro podporu událostí spojených s kolečkem myši Mouse wheel extension. Pro správnou inicializaci WebGL je také využita podpůrná knihovna WebGL utils, která se mimo jiné stará o upozornění uživatele na to, když jeho prohlížeč nepodporuje WebGL. Programování 3D grafiky s sebou přináší časté používání vektorů a matic. Pro počítání s nimi byla použita knihovna glmatrix. 21

22

23 KAPITOLA 3 Návrh aplikace Výsledkem této bakalářské práce je program spustitelný ve webovém prohlížeči. Tato aplikace není zatím součástí celého projektu ExtBrain Universe, ale jedná se o samostatný program, který funguje nezávisle na projektu. Projekt je v této chvíli v počátcích a na samotném jádře aplikace se teprve pracuje. Součástí této práce byl tedy také návrh a implementace testovací aplikace, která zobrazuje 3D scénu s několika objekty. Jako ukázkový svět byl zvolen vesmír, kde není nijak omezen pohyb, a je tedy vhodný pro předvedení ovládání pohybu ve volném prostoru. Také nevyžaduje složité modelování objektů ani celé scény. Veškeré objekty (např. planety), se kterými může uživatel interagovat jsou reprezentovány koulemi různých barev a velikostí. Způsoby, jakým jsou reprezentovány např. objekty ve scéně nebo překlad a sestavování programů shaderů a jiné věci nesouvisející přímo se zadáním, nebyly pro tuto aplikaci stěžejní, a proto jim nebyla věnována taková pozornost jako vlastní implementaci ovládacích prvků. 3.1 Struktura aplikace Výsledná aplikace se skládá z jedné html stránky, která obsahuje prvek HTML5 Canvas. Skrze tento objekt WebGL vykresluje (renderuje) 3D grafiku. Veškerý JavaScriptový kód je umístěn do externích souborů. Plně funkční aplikace ve WebGL vyžaduje spoustu kódu, který není přímo součástí zadání této práce. Aby ale bylo možné otestovat funkčnost ovládacích prvků (kterými se naopak tato práce zabývá), bylo potřeba zahrnout činnosti 23

24 3. Návrh aplikace spojené s inicializací WebGL do testovací aplikace. Implementovány byly v podobě podpůrných funkcí, které byly přidány objektu window. Jedná se o získání objektu WebGLRenderingContext, který se používá ke správě OpenGL stavů a stará se o renderování do bufferů. Dále se jedná o inicializaci těchto bufferů a také překlad a sestavení jednotlivých programů shaderů. (5) JavaScript je prototypový programovací jazyk, a proto neobsahuje třídy, jako jiné objektově orientované programovací jazyky (např. C++), nicméně OOP podporuje. Implementace objektově orientovaného programu je v JavaScriptu díky tomu těžkopádnější záležitostí, ale i přesto bylo cílem projektu vytvořit objektově orientovaný program. Proto části aplikace týkající se ovládání pohybu ve virtuální realitě byly takto implementovány. 3.2 Návrh implementace Jelikož aplikace není přímo součástí projektu, ale slouží jen jako testovací prostředí pro ovládací prvky, není zde návrhu aplikace věnována příliš velká část. Nicméně alespoň stručný popis by tu být měl. Aplikace obsahuje hlavní smyčku - funkci, která je neustále volána v intervalu 1/60 s. V této smyčce se provádějí změny na objektech a je renderována celá scéna. Základem aplikace jsou tři objekty. První je objekt View, který reprezentuje kameru (pohled) ve scéně. V objektu jsou jako proměnné dvě matice, které zprostředkovávají transformaci celé kamery resp. středu otáčení. Důležitou částí objektu je metoda, která vrací výslednou pohledovou matici. Dále objekt obsahuje metody pro samotný pohyb a otáčení kamery. Tyto metody nastavují fyzikální parametry pohybu jako je rychlost, zrychlení atd. Výsledný pohyb se počítá v metodě update, která je volána v hlavní smyčce programu. Dalším objektem je objekt Scene, který se stará o renderování celé scény a ovládá veškerá tělesa nacházející se ve scéně. Obsahuje metody pro vykreslování na obrazovku a i pro renderování do textury (to je potřeba např. při vybírání těles myší - o tom ale později). Jedna z jeho hlavních proměnných je projekční matice, která definuje perspektivu. Objekt se také stará o shaderové programy, které předává jednotlivým tělesům při renderování. Třetím objektem je Control. Objekt se stará o veškeré ovládání. Obsahuje jednak metody volané v hlavní smyčce programu, které kontrolují stisknuté klávesy resp. tlačítka myši, a také jednotlivé handlery událostí, které je potřeba připojit příslušným objektům po načtení scény. 24

25 3.2. Návrh implementace Scene - projectionmatrix - shaderprogram + render() + renderpick() 1 View - viewmatrix - centermatrix + update() + getmatrix() 1 1 Control + checkkeyinput() + checkmouseinput() + handkeydown() + handkeyup() + handmousemove() + handmousewheel() 1 Obrázek 3.1: Zjednodušený diagram objektů - základ aplikace Další důležitou částí aplikace jsou tělesa zobrazovaná ve scéně a řízená objektem Scene. Nad všemi renderovatelnými tělesy stojí zastřešující objekt Objects, který obsahuje metody pro renderování tělesa. Metoda je volána objektem Scene, který metodě předá potřebné matice (projekční a pohledovou) a také příslušný program shaderu. O samotné shadery se objekt Objects nestará. Scéna totiž může obsahovat více těles se stejnými shadery a práce s nimi by pak nebyla příliš efektivní. O co se ale Objects stará je matice modelu. Tu má každé těleso svou vlastní. Podobně jako pohledová matice v objektu View je i modelová matice složena z více transformací. Tentokrát je rozdělena zvlášť na rotaci a translaci. Při výpočtu matice modelu se provádí nejdříve rotace a až potom posunutí. To způsobuje, že se objekt vždy otáčí kolem svého vlastního středu. Dále Objects obsahuje objekt bufferu (objekt OpenGL, který obsahuje informace o jednotlivých vrcholech tělesa) a metodu loaddata, která se stará o načtení potřebných dat o vrcholech tělesa. Poslední důležitou věcí, o kterou se Objects stará, je transformace těles. Objekt obsahuje různé metody pro pohyb, rotaci a změnu měřítka. 25

26 3. Návrh aplikace Všechny objekty reprezentující různá tělesa zobrazována ve scéně dědí od tohoto objektu. Nejdůležitější z nich je objekt Sphere. Reprezentuje všechna tělesa, se kterými může uživatel ve scéně interagovat (vybírat je, otáčet se kolem nich, přidávat nové atd.). Tato tělesa jsou v ukázkové aplikaci pro jednoduchost zobrazována jako koule. Další objekty dědící od Objects jsou např. prvky GUI (ty také uživatel ovládá, ale jedná se o jiný druh interakce). Všechny výše zmíněné objekty dědící od Objects musí implementovat svou vlastní metodu loaddata pro definování jednotlivých vrcholů, ze kterých se těleso skládá. Většinou je také potřeba, aby implementovaly vlastní metody pro renderování. Sphere Scene 1 0..* Objects - id - rotationmatrix - translationmatrix - bufferobject + getmodelmatrix() + render() + loaddata() - radius + loaddata() Grid + loaddata() + render() Obrázek 3.2: Zjednodušený diagram objektů - tělesa scény 26

27 KAPITOLA 4 Popis implementace Následuje popis implementace jednotlivých částí ovládání pohybu a uživatelského rozhraní. 4.1 Jednoduché ovládání pohybu kamery z klávesnice Jako první věc bylo potřeba implementovat ovládání pohybu v prostoru. Je zamýšleno, že uživatel se bude ve virtuální realitě pohybovat prostřednictvím jakési vesmírné lodě, sondy nebo třeba ponorky (záleží na aktuálním světě či systému) a bude objevovat svět. Vzhled a tvar dopravního prostředku nehraje roli, všechny se budou ovládat stejným způsobem a budou dodržovat stejná fyzikální pravidla. Dopravním prostředkem je možné se pohybovat dopředu, dozadu a otáčet se ve všech směrech. Snaha byla o to, aby se prostředkem rotovalo pomocí myši. Díky tomu by uživatel měl lepší kontrolu nad pohybem v prostoru, lépe by zaměřoval svůj pohled. V prohlížeči ovšem nelze pomocí JavaScriptu kontrolovat polohu myši (z důvodu bezpečnosti) a vzniká tedy problém, když myš opustí okno prohlížeče. V takovém okamžiku přestává aplikace zaznamenávat změny polohy myši a stává se neovladatelnou. Zabránit se tomu dá jedině tak, že se kurzor po každé změně polohy programově přesune zpět do středu okna. A to v JavaScriptu není možné. Proto bylo implementováno ovládání dopravního prostředku prostřednictvím klávesnice. Dalším problémem bylo to, jak JavaScript obsluhuje události při stisknutí a následném držení klávesy. Aby nedocházelo např. při psaní k opakovanému tištění téhož znaku, zpracovává se událost stisknutí klávesy pouze jednou a 27

28 4. Popis implementace pak se určitou dobu čeká. Pokud během této doby uživatel klávesu uvolní, JavaScript to chápe jako jedno stisknutí. Jinak je klávesa stále držená a událost se začne zpracovávat opakovaně. Znamená to, že při držení klávesy se nejprve jednou provede příslušná událost, nastane chvíli pauza a teprve pak se událost opakuje. Když by se tedy takováto obsluha držení klávesy aplikovala na ovládání kamery ve scéně, pohyb by to byl značně přerušovaný a tudíž velmi nepříjemný. Proto bylo zapotřebí navrhnout jinou obsluhu držení kláves. Správného fungování bylo dosaženo pomocí pole, do kterého se ukládají informace o tom, zda jsou klávesy stisknuté či nikoli. Při stisknutí klávesy je do příslušného prvku pole uložena true hodnota a při uvolnění hodnota false. Dále je potřeba, aby v každém kroku hlavní smyčky programu (více v kapitole 3.2 Návrh implementace ) proběhla kontrola, které klávesy jsou stisknuté, a na základě toho byly vykonány příslušné akce. Díky tomuto mechanismu je také možné obsluhovat více stisknutých kláves najednou. Indexem v poli kláves je kód příslušného znaku. 4.2 Vybírání objektů scény pomocí myši Jedna z hlavních částí této práce je implementace vybírání objektů nacházejících se ve scéně. Projekt je zaměřen primárně pro výukové účely a hlavním cílem je tedy objevovat svět a prohlížet si objekty. Aby si uživatel mohl detailně prohlédnout objekt nebo jeho část, musí mít možnost jednoduše se k objektu přiblížit a nasměrovat kameru na požadovanou část. Nyní už může uživatel ovládat přepravní prostředek a pohybovat se tak ve virtuálním světě. Ovládání prostředku je však provedeno tak, aby alespoň vzdáleně simulovalo chování reálné rakety (nebo jakéhokoli objektu letícího v prostoru) s ohledem na fyzikální vlastnosti. Díky tomu je ale velmi obtížné dostat se přepravním prostředkem přesně k objektu a ještě obtížnější je s ním manévrovat kolem objektu a zaměřit se tak na určitý detail. Proto bylo navrženo, aby uživatel kromě samotného ovládání přepravního prostředku klávesnicí měl ještě možnost ovlivnit polohu prostředku pomocí myši. A to tak, že kliknutím vybere libovolný objekt ve scéně, ke kterému bude následně přiblížen. Potom kliknutím na tento objekt a současným tažením se kolem něho bude otáčet. Pomocí kolečka myši může měnit vzdálenost od objektu. 28

29 4.2. Vybírání objektů scény pomocí myši Samotné ovládání pohybu klávesnicí je na celém manévrování vzhledem k objektu pomocí myši nezávislé. To znamená, že i po výběru předmětu, může uživatel dále ovládat raketu obvyklým způsobem pomocí klávesnice. Jenom se tím zase od vybraného objektu odpoutá. Implementace vybírání objektů Před změnou polohy kamery (přepravního prostředku) je nejdříve potřeba implementovat vybírání (nebo také anglicky picking ). Jedná se o mechanismus, který rozpozná, na jaký objekt bylo kliknuto myší ve 3D scéně. Jelikož se objekty nalézají v 3D prostoru (který je navíc zkreslený perspektivou) může se jednat o náročný úkol. K samotné implementaci byly však využity shadery, které problém zjednodušují. Zde je potřeba popsat, jak je scéna renderována v normálním režimu (tj. při zobrazování scény na obrazovku) pomocí shaderů. Každé těleso ve scéně má svou metodu pro renderování. Této metodě je prostřednictvím objektu Scene předán program shaderu, který obsahuje přeložené a slinkované shadery (vertex shader a fragment shader). Při renderování se ve vertex shaderu vypočítá poloha (souřadnice v prostoru) každého vrcholu příslušného tělesa. A to na základě transformace projekční, pohledovou a modelovou maticí (více v kapitole 1.4 Použité technologie ). Hlavní část kódu vypadá takto: gl_position = Pmatrix * Vmatrix * Mmatrix * vec4(position, 1.0); kde position je trojrozměrný vektor představující souřadnice aktuálního vrcholu. Výsledná pozice je v homogenních souřadnicích, proto čtyřrozměrný vektor. Fragment shader je o něco složitější. Jeho úkolem je vypočítat výslednou barvu jednotlivých fragmentů (barva na povrchu objektu). Pro realističtější vzhled scény je implementován zjednodušený Phongův osvětlovací model, kde se barva počítá na základě vektoru směřujícího ke světlu a normál jednotlivých vrcholů. Světlo je ve scéně pro jednoduchost pouze jedno a je umístěné v nekonečnu. Představuje tak vzdálené slunce. Hlavní část fragment shaderu vypadá takto: gl_fragcolor = vec4((ambient + diffuse).rgb, alpha); Výsledná barva fragmentu je v barevném modelu RGBA. Ambient a diffuse jsou předem vypočítané složky Phongova modelu a alpha je míra neprůhlednosti objektu. Spekulární složka osvětlovacího modelu zde není pro jednoduchost uvažována. Výsledek vyrenderované scény v normálním režimu je na obrázku

30 4. Popis implementace Obrázek 4.1: Render scény v normálním režimu K samotnému vybírání těles byly také použity shadery a to následovně. Po kliknutí myší do okna prohlížeče se scéna ještě jednou vyrenderuje. Tentokrát se ovšem nebude zobrazovat to, jak jednotlivé objekty ve skutečnosti vypadají, ale vyrenderuje se informace, na základě které bude možné těleso identifikovat. Jednoduše řečeno, místo skutečné barvy se zobrazí identifikátor. Takto vyrenderovanou scénu nezobrazíme na monitor, ale uložíme do textury (odtud anglický název render to texture ). Následně se podíváme do této textury v místě, kam bylo kliknuto a přečteme hodnotu pixelu, která odpovídá ID vybraného tělesa. K renderování do textury je potřeba použít jiné shadery než při renderování v normálním režimu. Resp. jiný fragment shader. Vertex shader zůstane stejný (alespoň část týkající se výpočtu polohy vrcholu), protože poloha objektů se nemění, mění se pouze výsledná barva. Fragment shader uloží identifikátor objektu do hodnot RGBA. Jelikož scéna obsahuje několik druhů objektů, fragment shader neukládá pouze ID objektů, ale také jejich typ. Jedná se např. o tělesa, která uživatel objevuje, nebo o prvky GUI (tlačítka, posuvníky atd.). Oba druhy jsou renderovány do textury stejně, ale každý je pak jinak zpracováván. Samotné uložení hodnot vypadá následovně: gl_fragcolor = vec4(type, G, B, A); 30

31 4.3. Přiblížení kamery k vybranému tělesu Aplikace při renderování používá 32 bitovou barevnou hloubku. To znamená, že každý kanál barevného modelu má přiděleno 8 bitů. GLSL ukládá barvu do každého kanálu následujícím způsobem. Vezme přidělenou proměnnou typu float a její hodnotu od nuly do jedné přepočítá na rozsah 0 až 255. Ve skutečnosti má tedy typ float (v jazyce GLSL) při ukládání do barevného kanálu rozsah pouze 2 8 = 256 hodnot. Shader v tomto případě do R kanálu ukládá typ objektu a k uložení jeho ID využívá zbývající tři kanály G, B, A (čili 24 bitů). Z toho vyplývá, že je aplikace schopná rozpoznat 256 různých typů a až 2 24 = různých objektů ve scéně. Pořadí bytů bylo zvoleno tak, že nejvýznamnější byte se nachází na začátku, tedy v G kanálu. Výsledek vyrenderované scény do textury je na obrázku 4.2. Rozdílné barvy těles odpovídají různým ID objektů (pro větší názornost bylo ID v tomto případě přesunuto na hodnoty RGB, alfa kanál byl nastaven na nenulovou hodnotu a typ objektu byl vynechán). Obrázek 4.2: Render scény do textury při vybírání objektů 4.3 Přiblížení kamery k vybranému tělesu Teď, když už je program schopný rozpoznávat, na která tělesa bylo kliknuto, je zapotřebí implementovat přiblížení kamery (přepravního prostředku) k vybranému objektu. 31

32 4. Popis implementace Veškeré ovládání přepravního prostředku se provádí pravým tlačítkem myši. Mezi toto ovládání patří i vybrání objektu. Levým tlačítkem se provádí jiné akce jako například budování objektů (o tom ale více v části 4.5 Stavění budov a GUI ). Uživatel má na výběr mezi několika variantami, jak těleso, ke kterému se chce přiblížit vybere. Pokud pouze na objekt klikne, bude přiblížen do optimální vzdálenosti od objektu. Pokud ovšem při vybírání pravé tlačítko podrží, dostane se zároveň do stavu, kdy se může pohybem myši kolem vybíraného tělesa otáčet. Tento stav zůstane i po skončení procesu přibližování. Poté ho lze znovu vyvolat opět podržením pravého tlačítka myši. Další variantou výběru je, že uživatel znovu podrží pravé tlačítko myši, ale tentokrát ho ještě během přibližovací animace uvolní. Tím se proces přibližování přeruší a záleží na tom, jak daleko od objektu kamera je. Pokud je dál než je maximální povolená vzdálenost, bude animace dál pokračovat až do dosažení této hranice. Pokud se nachází blíž, dojde rovnou k zastavení. Fungování objektu View Před samotným popisem implementace přiblížení, je potřeba popsat fungování objektu View, který se stará o pohyb přepravního prostředku. Jak už bylo popsáno dříve, objekt obsahuje metodu update, která je volána v každém cyklu hlavní smyčky programu. Tato metoda provádí jeden krok pohybu (resp. rotace) kamery. Tedy vypočítá transformaci pohledové matice pro tento jeden krok a matici transformuje. Krok pohybu je dán aktuální rychlostí. Určování této rychlosti při normálním pohybu přepravního prostředku je detailně popsán v sekci 4.7 Fyzikální vlastnosti pohybu kamery. Samotný objekt View se může nacházet v různých stavech (i ve více najednou). Na základě těchto stavů je v metodě update prováděna příslušná akce, především změna aktuální rychlosti a tím určována transformace kamery. Pro přiblížení kamery k vybíranému tělesu jsou definovány dva speciální stavy. Jeden pro přiblížení (transformaci) kamery a druhý pro změnu směru pohledu, tak aby kamera směřovala do středu objektu. Obě akce probíhají zároveň, takže vytvářejí dojem, že se jedná o jednu animaci. Obě jsou založené na tom, že se na začátku určí celá transformace (z polohy, ve které se přepravní prostředek nachází před přiblížením a polohy, kde má skončit) a ta je na základě matematických funkcí rozdělena na určitý počet dílčích transformací, které jsou prováděny jednotlivě v každém kroku animace. To znamená, že v každém kroku se musí vypočítat aktuální rychlost kamery. 32

33 4.3. Přiblížení kamery k vybranému tělesu Nejprve je ale potřeba určit, kolik dílčích transformací bude provedeno resp. jak dlouho bude animace trvat (kolik bude obsahovat kroků). Přibližování kamery má za cíl napodobit manévrování s přepravním prostředkem s ohledem na fyzikální vlastnosti. Na začátku se prostředek pomalu rozjíždí a ke konci zase brzdí. Za celou dobu pohybu by neměl překročit maximální rychlost. Vybírané těleso se ale na začátku nachází pokaždé v jiné vzdálenosti, proto je potřeba určit potřebný čas, tak aby se prostředek pokaždé přibližoval přibližně stejnou rychlostí. Počet kroků se tedy vypočítá ze vzdálenosti od vybraného tělesa, která se vynásobí příslušnou konstantou. Také je definována minimální délka animace, aby nenastala situace, kdy při vybírání blízkých objektů je provedena změna směru pohledu příliš rychle. Přiblížení kamery - změna polohy Od teď se jednotlivé akce liší. U přiblížení kamery (změny polohy) se v prvním kroce animace vypočítá počáteční vzdálenost přepravního prostředku od vybraného objektu. Ta se vypočítá jako velikost vektoru ukazujícího od kamery do středu objektu. Poloha všech objektů ve scéně je dána jejich modelovou maticí a poloha vůči kameře je dána zase maticí pohledu. Čili vynásobením těchto matic dostáváme transformaci objektu vůči pohledu. Z této transformační matice nás zajímá pouze vektor translace (přesunu), což je hledaný vektor od kamery k objektu. Směr vektoru není důležitý, potřeba je akorát jeho velikost. Tím je dána celková transformace prostředku. Nyní se v každém kroce animace vypočítá rychlost pohybu na základě této transformace a aktuálního času (číslo - pořadí kroku). Použije se k tomu následující funkce: f(x) = start max (sin( 2π max x π 2 ) + 1), kde start je počáteční vzdálenost od objektu, max je délka animace (počet kroků) a x je aktuální krok. Průběh funkce je zobrazen na obrázku 4.3. Změna směru pohledu U změny směru pohledu se po zjištění, jak dlouho animace bude trvat, provede následující věc. Bez ohledu na to, kdy dojde k zastavení přibližování (ať už po dokončení celé animace nebo po přerušení přibližování uživatelem), dostane se objekt View do stavu, kdy se kamera bude otáčet kolem vybraného tělesa. K tomu je potřeba přesunout střed otáčení kamery do středu tohoto tělesa. Do teď se otáčela kolem své osy. 33

34 4. Popis implementace rychlost Obrázek 4.3: Průběh funkce pro výpočet aktuální rychlosti přiblížení při výběru objektu (počet kroků animace je 60 a počáteční vzdálenost od objektu je 15) Poté se opět v každém kroku animace vypočítá dílčí krok otočení pohledu. To se provede na základě dvou vektorů. Jedním je již zmíněný vektor směřující od kamery (přepravního prostředku) k vybranému tělesu a druhým je aktuální směr pohledu. Výsledkem animace bude stav, kdy aktuální směr pohledu směřuje do středu objektu, tedy stav, kdy oba vektory jsou totožné. V každém kroku animace se provede lineární interpolace dvou zmíněných vektorů. Tím vznikne vektor směřující někam mezi ně. A to je vektor, kam se pohled kamery otočí v daném kroku. Důležitým momentem je určení hodnoty interpolace. Snaha byla o to, aby pohyb, stejně jako u změny polohy kamery, byl plynulý a s pomalým rozjezdem a dojezdem. Zde ovšem také nastal problém, že vektor směru pohledu není pevně dán na začátku animace jako počáteční vzdálenost u přiblížení kamery, ale každým krokem se mění. Jako nejlepší se ukázala následující funkce: f(x) = max 20 1 x + max 0.045, 20 + max kde max je délka animace (počet kroků), x je aktuální krok a konstanta je korekce, aby funkce začínala přibližně v nule. Průběh funkce je zobrazen na obrázku

35 4.3. Přiblížení kamery k vybranému tělesu hodnota interpolace Obrázek 4.4: Průběh funkce pro výpočet aktuální hodnoty interpolace dvou vektorů při změně směru pohledu (počet kroků animace je 60) Přerušení animace přiblížení Jak už bylo zmíněno dříve, animace přiblížení kamery nemusí proběhnout až do konce. Pokud uživatel vybral těleso variantou kliknutí a tažení a tlačítko myši uvolní dříve, proces přibližování je přerušen. Pokud se v tomto okamžiku kamera nachází dál než je maximální možná vzdálenost od vybraného tělesa, animace pokračuje, ale pouze do dosažení této maximální vzdálenosti. To je provedeno tak, že se změní počáteční vzdálenost od objektu. Odečte se od ní maximální možná vzdálenost. Není to úplně přesný výpočet, protože přestává platit předem vypočítaná doba celé animace. Nicméně pro velké vzdálenosti funguje dobře a pohyb kamery se opravdu zastaví na maximální vzdálenosti. V situaci, kdy došlo k přerušení těsně před hranicí maximální vzdálenosti, se kamera zastaví o něco blíže k tělesu. To je ale v pořádku, vzhledem k fyzikálním vlastnostem pohybu. Kamera (neboli přepravní prostředek) nemůže v takové situaci ihned zabrzdit, a proto hranici maximální vzdálenosti přeletí. Zajímavé je, že tento jev nebyl při implementaci zamýšlen, ale vznikl náhodou nepřesností výpočtu. Druhý případ nastává, když se kamera v době přerušení nachází blíže k tělesu, než je hranice maximální vzdálenosti. V takovém případě dochází k úplnému ukončení animace a přepravní prostředek vlivem setrvačnosti pomalu zastaví. 35

36 4. Popis implementace U změny směru pohledu nezáleží na tom, v jaké vzdálenosti od tělesa došlo k přerušení. Animace vždy proběhne až do konce. Je to způsobeno tím, že kamera zůstává ve stavu, kdy je těleso vybrané i po předčasném ukončení přibližování. V takovém stavu má uživatel možnost otáčet se dopravním prostředkem kolem tělesa a je tedy zapotřebí, aby pohled směřoval do středu tohoto tělesa. 4.4 Ovládání kamery vzhledem k vybranému objektu Následuje popis operací, které uživatel může provádět s přepravním prostředkem po tom, co se přiblížil ke zkoumanému tělesu. Uživatel vybral těleso, kamera (neboli přepravní prostředek) se k tomuto tělesu přiblížila do požadováné vzdálenosti a objekt View se nyní nachází ve stavu, kdy je střed rotace umístěn uprostřed tělesa. Uživatel má k dispozici tyto dvě operace: otáčení kamerou kolem tělesa a změnu vzdálenosti. Obě operace slouží k usnadnění manévrování kolem tělesa, které chce uživatel prozkoumat. Jinak by byl odkázán na ovládání přepravního prostředku jen pomocí klávesnice a zaměření pohledu na požadovaný detail by se stal náročným až nemožným úkolem. Jelikož veškerý pohyb uživatele ve virtuálním světě probíhá prostřednictvím přepravního prostředku, byla snaha o to, aby i tyto operace co nejvěrněji pohyb prostředku napodobovaly. Otáčivý pohyb rakety, která směřuje do středu otáčení, není sice typický a přirozený, nicméně dodržuje zvolené fyzikální vlastnosti. Jedná se například o úhlovou rychlost, která se s různou vzdáleností od tělesa mění tak, aby okamžitá rychlost byla stále stejná. V další části je popsáno, jak byly operace implementovány. Otáčení kamery kolem tělesa Tuto operaci uživatel uskuteční tažením myši se zároveň stisknutým pravým tlačítkem. Vzdálenost myši od místa kliknutí určuje rychlost otáčení a poloha kurzoru směr rotace. Nejprve je potřeba určit maximální vzdálenost od středu rotace (v tomto případě středem rotace není myšlen bod, kolem kterého se kamera ve skutečnosti otáčí, ale místo, kam uživatel klikl při zahájení operace), od které již nedochází ke zrychlování. Tedy hranice maximální rychlosti. Ta se určí na 36

37 4.4. Ovládání kamery vzhledem k vybranému objektu základě velikosti okna prohlížeče (resp. jeho výšky) hned při spuštění aplikace a vždy po změně velikosti okna. Při samotném kliknutí myši je uložena poloha kurzoru myši na obrazovce. Tato poloha reprezentuje zmíněný střed otáčení. Následně je při každém pohybu myši zaznamenána aktuální poloha kurzoru, na základě které se v hlavní smyčce programu, v metodě update objektu View, vypočítá aktuální rychlost rotace. Rychlost neroste lineárně se vzdáleností od středu, ale pro výpočet je použita následující funkce: f(x) = 1 2 (sin( π max x π 2 ) + 1), kde max je maximální vzdálenost od středu rotace. Funkce způsobuje pomalejší rozjezd kamery a také nelineární dosažení maximální rychlosti. Průběh funkce znázorňuje obrázek 4.5. Rychlost otáčení se počítá zvlášť ve směru osy x a y. rychlost Obrázek 4.5: Průběh funkce pro výpočet aktuální rychlosti rotace kamery kolem vybraného tělesa (maximální vzdálenost od středu je 100) Ukazatel rotace Aby uživatel měl větší kontrolu nad samotným otáčením, zobrazuje se zároveň přímo ve scéně ukazatel rotace. Skládá se z malé tečky reprezentující střed otáčení (místo kam uživatel kliknul) a kružnice zobrazující maximální 37

38 4. Popis implementace možnou rychlost (pokud uživatel tuto kružnici myší překročí, rychlost už se nebude zvyšovat). Oba prvky jsou vykresleny poloprůhledně, aby příliš nenarušovaly celou scénu. Zároveň kružnice znázorňuje tmavší méně průhlednou vrstvou aktuální rychlost otáčení. A to způsobem podobným tachometru na palubní desce auta. Nulová délka oblouku znamená nulovou rychlost a plně vykreslená kružnice znamená maximální rychlost (viz obr. 4.6). Obrázek 4.6: Render scény v režimu rotace kolem vybraného tělesa K renderování těchto navigačních prvků bylo zapotřebí zase jiných (již třetích) shaderových programů. K výpočtu polohy není tentokrát vůbec potřeba pohledová matice. Poloha se vůči pohledu nemění, navigace je jakoby přilepená ke kameře. Proto výpočet polohy vrcholů ve vertex shaderu vypadá takto: gl_position = Pmatrix * Mmatrix * vec4(position, 1.0); Kromě matice projekce a modelu a aktuální pozice vrcholu (position) potřebuje shader ještě barvu vrcholu, kterou beze změny předá fragment shaderu. Fragment shader je o poznání jednodušší než při renderování objektů scény. Navigace nepodléhá osvětlení. Bez ohledu na to, odkud světlo svítí, bude mít stále stejnou barvu. Počítat se musí akorát s průhledností, čili fragment shader potřebuje při renderování dostat alfa kanál. Výpočet výsledné barvy fragmentu probíhá následovně: 38

39 4.5. Stavění budov a GUI gl_fragcolor = vec4(fcolor.rgb, fcolor.a * alpha); Proměnná fcolor obsahuje barvu fragmentu získanou rasterizací z vertex shaderu. Složky RGB jsou ponechány beze změny, mění se jen alfa kanál vynásobením konstantou alpha, která říká, jak moc je fragment průhledný. Hodnota 0 znamená zcela průhledný a 1 neprůhledný. Zajímavé je, jak se vykresluje ukazatel aktuální rychlosti. Kružnice je sestavena s velkého počtu trojúhelníků. Dva trojúhelníky dohromady dávají jeden dílek stupnice rychlosti. V každém kroce hlavní smyčky programu je metodě starající se o renderování tohoto ukazatele předána aktuální rychlost, v podobě hodnoty 0 až 1 (1 znamená maximální rychlost). Touto hodnotou se vynásobí celkový počet vrcholů, ze kterých se prvek skládá, a upraví se, aby byl dělitelný šesti (dva trojúhelníky po třech vrcholech). Tento počet vrcholů se předá vertex shaderu pro vyrenderování ukazatele rychlosti. Obrázek 4.7: Způsob vykreslování ukazatele rychlosti Změna vzdálenosti Druhou operací, kterou má uživatel k dispozici po vybrání objektu, je změna vzdálenosti. Uskuteční jí pomocí kolečka myši. Implementace této operace nebyla moc náročná. Jedná se pouze o změnu aktuální rychlosti objektu View po vyvolání události kolečka myši. 4.5 Stavění budov a GUI Další formou interakce uživatele s aplikací je přidávání nových objektů. V případě této aplikace, kde virtuálním světem je vesmír, se jedná o simulaci stavění budov na povrchu planety nebo asteroidu. 39

40 4. Popis implementace Pro jednoduchost jsou všechny objekty v této testovací aplikaci zobrazovány jako koule. Proto i nově přidávané objekty jsou také reprezentovány koulemi. Uživatel má možnost pomocí jednoduchého grafického rozhraní měnit různé parametry těchto nových objektů, jako je např. velikost (poloměr koule) nebo barva. Stavění budov je ovládáno prostřednictvím levého tlačítka myši. Do režimu stavění se uživatel přepne kliknutím na příslušné tlačítko GUI, pod kterým se následně zobrazí speciální menu pro změnu parametrů. Po najetí myši (v tomto módu stavění) na planetu se nejprve zobrazí poloprůhledný model budoucí stavby, aby uživatel viděl, kde přesně bude budova umístěna. Následným kliknutím uživatel budovu postaví. Poté zůstává v režimu stavění, aby mohl rovnou přidávat další stavby. Mód stavění se ukončí opět kliknutím na stejné tlačítko GUI. Nové budovy je možné stavět nejen na planety, ale i na již existující budovy. To umožňuje např. postupně postavit most mezi jednotlivými stavbami nebo dokonce mezi planetami. Implementace stavění Jelikož byla implementace samotného stavění budov dost rozsáhlá, jsou zde popsány pouze její nejzajímavější části. V režimu stavění se nejprve po najetí myši zobrazuje poloprůhledný model nového objektu. K tomu je potřeba rozpoznat, na který objekt ve scéně ukazuje v daném okamžiku kurzor myši. To bylo implementováno stejně jako vybírání objektů (picking) pomocí shaderů s tím rozdílem, že renderování do textury neprobíhá po kliknutí myši, ale v každém kroku hlavní smyčky programu. Zde jsou také konečně využity ukládané typy objektů. Na jejich základě je rozhodováno, zda je možné na objektu postavit novou budovu, či nikoli. Více o implementaci vybírání objektů je v kapitole 4.2. Dalším důležitým momentem je rozpoznání polohy budovy vůči povrchu objektu, na který se staví. Z polohy kurzoru myši na obrazovce je potřeba určit, kam přesně se má budova postavit (resp. zobrazit poloprůhledný model), aby ležela správně na povrchu planety. K tomu byly znovu využity shaderové programy a opět metoda renderování do textury. Do textury se renderuje jen objekt (planeta, asteroid nebo již vytvořená budova), na který se bude stavět. Tentokrát se do textury místo skutečného vzhledu objektu renderuje informace o poloze jednotlivých vrcholů vůči středu objektu. 40

41 4.5. Stavění budov a GUI Vertex shader se jako obvykle stará o výpočet polohy daného vrcholu. Výpočet je stejný, jako při renderování scény v normálním režimu (poloha vrcholu se postupně násobí zleva maticemi modelu, pohledu a projekce). Tentokrát zde navíc probíhá ještě výpočet zmíněné polohy vůči středu, která se předá fragment shaderu. K tomu je potřeba poloha daného vrcholu ve světových souřadnicích. Vypočítá se vynásobením původní polohy bodu modelovou maticí: vec4 worldpos = Mmatrix * vec4(position, 1.0); I když budou dále potřeba jen tři souřadnice x, y a z, výsledkem operace je čtyřrozměrný vektor. Je to z důvodu, že matice modelu je čtyřrozměrná (obsahuje též posunutí - více v kapitole 1.4 Použité technologie ). Následně se vypočítá samotná poloha vůči středu: fposition = (worldpos.xyz - center) / (2.0 * radius) + 0.5; Od polohy vrcholu se odečte poloha středu a vydělí se průměrem koule. Tím se získá hodnota od -0.5 do 0.5. Protože není možné uložit jako RGB hodnotu záporné číslo, přičítá se jedna polovina. Tím vznikne výsledná hodnota 0 až 1. Proměnná center je třírozměrný vektor obsahující souřadnice středu objektu a je předána shaderu spolu s poloměrem (proměnná radius) při renderingu. Fragment shader už jen uloží předanou polohu vůči středu jako výslednou barvu fragmentu. A to zvlášť každou souřadnici do jednotlivých kanálů RGB: gl_fragcolor = vec4(fposition, 1.0); Na obrázku 4.8 je příklad vyrenderované textury s uloženou polohou jednotlivých vrcholů vůči středu. Teď, když je v textuře uložena poloha každého viditelného bodu povrchu planety, je jednoduché určit výslednou polohu nové budovy ve scéně. Grafické uživatelské rozhraní GUI bylo implementováno přímo ve WebGL a nachází se na obrazovce vpravo nahoře. Stejně jako ukazatel rychlosti otáčení je přilepeno v bezprostřední blízkosti ke kameře. V normálním režimu je zobrazeno pouze tlačítko pro zahájení resp. ukončení stavění. V režimu stavění se pod tímto tlačítkem zobrazuje menu pro změnu parametrů stavěné budovy. 41

42 4. Popis implementace Obrázek 4.8: Render scény do textury při zjišťování polohy nové budovy Toto menu se skládá z nahoře umístěného náhledu nové budovy a posuvníků pro změnu poloměru, barvy a offsetu - míra zanoření budovy do povrchu planety (některé budovy mohou být částečně v zemi, některé zase levitovat nad povrchem). Vyrenderované GUI je zobrazeno na obrázku 4.9. Aby bylo možné zobrazit náhled stavěné budovy přímo v uživatelském rozhraní (tedy přilepený ke kameře a zároveň před ostatními objekty scény), bylo potřeba v první fázi vyrenderovat tento objekt do textury. Tím vznikne 2D obrázek, který poté může být umístěn do příslušné části GUI. K vygenerování tohoto obrázku byly použity stejné shadery, jako při renderování navigačních prvků - ukazatele rotace, s tím rozdílem, že výsledný obraz není zobrazen na obrazovku, ale ukládán do textury. Následně je renderována výsledná část GUI s hotovým náhledem. Jelikož je potřeba načítat data z textury, používají se zase jiné shaderové programy. Výpočet polohy vrcholů ve vertex shaderu vypadá stejně jako u renderování náhledu do textury (poloha je transformována maticí modelu a projekce). Kromě toho zde vertex shader ještě předává beze změny texturovací souřadnice do fragment shaderu. Tyto souřadnice říkají, jak se má aplikovat textura na jednotlivé fragmenty renderovaného objektu. Výsledná barva fragmentu je načítána z textury ve fragment shaderu. Příslušný kód vypadá takto: 42

43 4.5. Stavění budov a GUI Obrázek 4.9: Grafické uživatelské rozhraní s menu pro stavění budov gl_fragcolor = texture2d(samtex, ftexture.st); Proměnná ftexture obsahuje zmíněné texturovací souřadnice a samtex ukazuje na odpovídající místo v paměti grafické karty, kde je uložená samotná textura. Jelikož se tyto shadery používají i pro renderování jiných prvků GUI, které také využívají textury (např. tlačítko pro zahájení stavění), upravuje fragment shader ještě výsledný alfa kanál, aby bylo celé uživatelské rozhraní mírně průhledné: gl_fragcolor = vec4(gl_fragcolor.rgb, gl_fragcolor.a * alpha); Pro renderování posuvníků jsou využívány stejné shadery jako pro ukazatele rotace nebo renderování náhledu do textury. Zajímavá je ale implementace změny hodnoty posuvníku. Ta se provádí také pomocí shaderů. Místo výsledné podoby posuvníku se do textury ukládá x- ová souřadnice příslušného fragmentu. Souřadnice mají hodnotu od 0 do 1 (zařízeno je to již samotnou stavbou posuvníku, čili není potřeba polohy jednotlivých vrcholů přepočítávat nebo transformovat maticemi) a jsou ukládány do R kanálu barevného modelu. Výsledný render takto zobrazeného posuvníku je na obrázku

44 4. Popis implementace Obrázek 4.10: Render posuvníku při určování aktuální hodnoty Aktuální hodnota posuvníku se poté přečte z textury a přepočítá tak, aby patřila do intervalu povolených hodnot příslušným posuvníkem. Jelikož každý posuvník má definovaný minimální krok, o který se hodnota mění, získaná hodnota se ještě zaokrouhluje D mapa Dalším prvkem grafického uživatelského rozhraní je mapa. Jedná se o 3D mapu prostoru, která zobrazuje polohu objektů scény vůči kameře. Pomáhá tak uživateli lépe se ve virtuálním světě orientovat. Je umístěna v pravém horním rohu obrazovky. Kamera (zde vesmírná loď) je na mapě umístěna zhruba doprostřed, což umožňuje uživateli pozorovat prostor nejen před raketou, ale i kus za ní. Mřížka naznačuje rovinu, ve které se vesmírná loď nachází. Vůči této rovině je pomocí svislých čar zobrazována poloha jednotlivých objektů scény, které se vyskytují v bezprostřední blízkosti rakety. Uživatel má tak možnost sledovat, zda jsou objekty nad nebo pod raketou a jak daleko. Jak mapa vypadá je zobrazeno na obrázku Obrázek 4.11: 3D mapa prostoru 44

Návod k použití softwaru Solar Viewer 3D

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

Více

GoClever Map 2.5 manuál

GoClever Map 2.5 manuál GoClever Map 2.5 manuál Obsah 1. Na dotyku záleží... 4 2. Navádění k lokaci... 5 3. Navigační okno... 7 3.1. Změna nastavení systému navigačního okna... 7 4. Hlavní vlastnosti GoClever Map 2.5... 8 5.

Více

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

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

Více

Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player.

Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player. Návod na ovládání veřejné mapové aplikace: Generel cyklodopravy Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player. Logo, název Panel nástrojů Odkazy Vrstvy

Více

Název: VY_32_INOVACE_PG3303 Pohyb ve 3D prostoru 3DS Max. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

Název: VY_32_INOVACE_PG3303 Pohyb ve 3D prostoru 3DS Max. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max Název: VY_32_INOVACE_PG3303 Pohyb ve 3D prostoru 3DS Max Autor: Mgr. Tomáš Javorský Datum vytvoření: 06 / 2012 Ročník: 3 Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max Anotace: DUM seznamuje

Více

Programátorská dokumentace

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

Více

Rozcestník virtuálních světů

Rozcestník virtuálních světů České vysoké učení technické v Praze Fakulta elektrotechnická Semestrální projekt Rozcestník virtuálních světů Radek Loucký Vedoucí práce: Mgr. Jiří Danihelka Studijní program: Softwarové technologie a

Více

Územní plán Ústí nad Labem

Územní plán Ústí nad Labem mapová aplikace Územní plán Ústí nad Labem Návod na ovládání veřejné mapové aplikace: Územní plán Ústí nad Labem Logo, název Panel nástrojů Vrstvy Odkazy Výběr podkladové mapy Rychlá navigace Hledání Obsah

Více

Školní kolo soutěže Baltík 2009, kategorie C

Školní kolo soutěže Baltík 2009, kategorie C Úloha 1 Sídliště Počet bodů: 40 b Pracujte v 3D režimu s Baltíkem. a) Bílý a šedivý Baltík si postaví šachovnici o rozměru 6x6 políček následujícím způsobem. Předměty SGP21.sgpm a SGP22.sgpm upravte na

Více

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí

Více

Odpadové hospodářství v ORP Ústí nad Labem

Odpadové hospodářství v ORP Ústí nad Labem mapová aplikace Odpadové hospodářství Návod na ovládání veřejné mapové aplikace: Odpadové hospodářství v ORP Ústí nad Labem Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul

Více

SignEditor 1 - návod k použití

SignEditor 1 - návod k použití SignEditor 1 - návod k použití Tomáš Ryba tryba@kky.zcu.cz Zdeněk Krňoul zdkrnoul@kky.zcu.cz Jakub Kanis jkanis@kky.zcu.cz 27. března 2012 1 Vznik za podpory projektu Pojabr - Potlačení jazykové bariéry

Více

1 Uživatelská dokumentace

1 Uživatelská dokumentace 1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod

Více

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

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í

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Popis ovládání aplikace - Mapový klient KÚPK

Popis ovládání aplikace - Mapový klient KÚPK Popis ovládání aplikace - Mapový klient KÚPK Úvodní informace K využívání této aplikace musíte mít ve Vašem internetovém prohlížeči nainstalovaný plugin Adobe Flash Player verze 10 a vyšší. Mapová aplikace

Více

Nápověda k používání mapové aplikace Katastrální mapy Obsah

Nápověda k používání mapové aplikace Katastrální mapy Obsah Nápověda k používání mapové aplikace Katastrální mapy Obsah Práce s mapou aplikací Marushka... 2 Přehledová mapa... 3 Změna měřítka... 4 Posun mapy... 5 Druhy map... 6 Doplňkové vrstvy... 7 Vyhledávání...

Více

Možnosti tisku v MarushkaDesignu

Možnosti tisku v MarushkaDesignu 0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme

Více

Práce s texty, Transformace rastru, Připojení GPS

Práce s texty, Transformace rastru, Připojení GPS Školení programu TopoL xt Práce s texty, Transformace rastru, Připojení GPS Obsah: 1. Uživatelské rozhraní (heslovitě, bylo součástí minulých školení) 2. Nastavení programu (heslovitě, bylo součástí minulých

Více

Vektorové grafické formáty

Vektorové grafické formáty Vektorové grafické formáty Semestrální práce na předmět KAPR Fakulta stavební ČVUT 28.5.2009 Vypracovali: Petr Vejvoda, Ivan Pleskač Obsah Co je to vektorová grafika Typy vektorových formátů Souborový

Více

Uživatelská příručka mapový prohlížeč irso 4.0.

Uživatelská příručka mapový prohlížeč irso 4.0. Uživatelská příručka mapový prohlížeč irso 4.0. Obsah Koncepce mapového prohlížeče Uživatelské rozhraní Práce s mapou Vykreslování mapových podkladů a vrstev Koncepce mapového prohlížeče Prohlížeč slouží

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Geometrické algoritmy pro počítačovou grafiku

Geometrické algoritmy pro počítačovou grafiku České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Katedra fyzikální elektroniky Informatická fyzika Geometrické algoritmy pro počítačovou grafiku Semestrální práce Autor práce:

Více

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Michal Náhlík Software pro podporu výuky čtení pomocí okénka Úvod Software, který nahrazuje fyzickou pomůcku, takzvané okénko, používané

Více

3D sledování pozice vojáka v zastavěném prostoru a budově

3D sledování pozice vojáka v zastavěném prostoru a budově 3D sledování pozice vojáka v zastavěném prostoru a budově Úvod Programový produkt 3D sledování pozice vojáka v zastavěném prostoru a budově je navržen jako jednoduchá aplikace pro 3D zobrazení objektů

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

Dotyková obrázovká v prográmu TRIFID

Dotyková obrázovká v prográmu TRIFID Dotyková obrázovká v prográmu TRIFID V současné verzi je možné ovládat pouze klasický prodej, funkce pro variantu GASTRO (účtování na jednotlivé stoly, tisk do kuchyně) jsou zatím ve vývoji. Nastavení

Více

GIS Geografické informační systémy

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

Více

[IM-WMC] Městská cyklonavigace Deliverable D4

[IM-WMC] Městská cyklonavigace Deliverable D4 [IM-WMC] Městská cyklonavigace Deliverable D4 Úvod Cílem deliverable D4 bylo dokončit implementaci části prototypu z deliverablu D3. Návrh by měl dodržovat zásady designu platformy Android. Popis aplikace

Více

Měření průtoku kapaliny s využitím digitální kamery

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:

Více

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Prostředí Microstationu a jeho nastavení. Nastavení výkresu Prostředí Microstationu a jeho nastavení Nastavení výkresu 1 Pracovní plocha, panely nástrojů Seznámení s pracovním prostředím ovlivní pohodlí, rychlost, efektivitu a možná i kvalitu práce v programu Microstation.

Více

DUM 12 téma: Nástroje pro transformaci vrstev

DUM 12 téma: Nástroje pro transformaci vrstev DUM 12 téma: Nástroje pro transformaci vrstev ze sady: 2 tematický okruh sady: Bitmapová grafika ze šablony: 09 Počítačová grafika určeno pro: 2. ročník vzdělávací obor: vzdělávací oblast: číslo projektu:

Více

Rozšíření bakalářské práce

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

Více

Mapa Česka: www.mapa-ceska.cz

Mapa Česka: www.mapa-ceska.cz Mapa Česka: www.mapa-ceska.cz Mapový portál Mapa Česka, který je dostupný na internetové adrese www.mapa-ceska.cz, byl vytvořen v roce 2014 v rámci bakalářské práce na Přírodovědecké fakultě Univerzity

Více

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika

Více

Dotyková obrázovká v prográmu TRIFID

Dotyková obrázovká v prográmu TRIFID Dotyková obrázovká v prográmu TRIFID Nastavení Nastavuje se volbou funkce SYSTÉMOVÉ FUNKCE/KONFIGURACE/WIN KONFIGURACE (spustí se tlačítkem )/LOKÁLNÍ PARAMETRY/ZÁLOŽKA PRODEJ. V této tabulce lze zapnout

Více

Odborný garant: Doc. Ing. Miroslav Píška, CSc.

Odborný garant: Doc. Ing. Miroslav Píška, CSc. Vysoké učení technické v Brně Fakulta strojního inženýrství Ústav strojírenské technologie Odbor obrábění Vypracoval: Ing. Aleš Polzer Odborný garant: Doc. Ing. Miroslav Píška, CSc. Technická příprava

Více

Příručka pro aplikaci KSnapshot

Příručka pro aplikaci KSnapshot Richard J. Moore Robert L. McCormick Brad Hards Kontrolor: Lauri Watts Vývojář: Richard J Moore Vývojář: Matthias Ettrich Překlad: Lukáš Vlček 2 Obsah 1 Úvod 5 2 Použití KSnapshot 6 2.1 Spuštění KSnapshot.....................................

Více

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 38 KONTROLA A POHONY]

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 38 KONTROLA A POHONY] Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Aleš Najman [ÚLOHA 38 KONTROLA A POHONY] 1 ÚVOD Úloha 38 popisuje jednu část oblasti sestava programu Solid Edge V20. Tato úloha je v první části zaměřena

Více

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 Zadání projektu Texturování Základy počítačové grafiky (IZG) ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 1 První seznámení Cílem projektu je pochopení praktických souvislostí témat přednášek

Více

Svolávací systém Uživatelský manuál

Svolávací systém Uživatelský manuál Uživatelský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 14. srpna 2013 Číslo

Více

Nápověda pro ovládání automaticky čtené učebnice

Nápověda pro ovládání automaticky čtené učebnice Speciální vzdělávací pomůcky k podpoře výuky slabozrakých žáků Nápověda pro ovládání automaticky čtené učebnice Požadavky na počítač Pro používání čtených pomůcek Vám postačí běžný osobní počítač, reproduktory

Více

Software Form Control

Software Form Control Měření na kliknutí myši. Tak jednoduchá je kontrola obrobku v obráběcím centru pomocí měřícího softwaru FormControl. Nezáleží na tom, zda má obrobek obecné 3D kontury nebo běžný 2.5D charakter. Uživatel

Více

Uživatelská příručka internetové aplikace

Uživatelská příručka internetové aplikace CDSw - City Data Software, spol. s r. o. Sídlo: Nepravidelná 156/2, 102 00 Praha 10 Kanceláře: Korytná 1538/4, 100 00 Praha 10 TEL., FAX: 274775306 TEL.: 274775315 e-mail: info@cdsw.cz internet: www.cdsw.cz

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu.

Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu. Bannerový systém ProEshop od verze 1.13 umožňuje zobrazování bannerů na popředí e-shopu. Bannerový systém je přístupný v administraci e-shopu v nabídce Vzhled, texty Bannerový systém v případě, že aktivní

Více

MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY)

MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY) MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY) 0 1. PRACOVNÍ PLOCHA Uspořádání a vzhled pracovní plochy, se kterým se uživatel během práce může setkat, zobrazuje obr. 1. Obr. 1: Uspořádání pracovní plochy

Více

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Semestrální práce Mozaika aneb Co všechno umí pan Voronoi Plzeň, 2008 Aubrecht Vladimír Obsah 1 Zadání...

Více

Manuál pro obsluhu Webových stránek

Manuál pro obsluhu Webových stránek ResMaster Systems s.r.o. Truhlářská 1119/20, 110 00 Praha 1 Manuál pro obsluhu Webových stránek (Prosinec 2018) Jana Vítová, +420 225 388 130 2018 Obsah Úvod Webové stránky... 3 Slovník pojmů... 3 URL

Více

GIS Geografické informační systémy

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

Více

SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice

SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice ObčanServer Nápověda SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice Příklady mapových kompozic Katastrální mapa Územní plán Funkční plochy Letecký snímek Pasport hřbitova Císařské otisky

Více

Obsah. Základy práce s rastry. GIS1-5. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

Obsah. Základy práce s rastry. GIS1-5. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie říjen 2010 Obsah prezentace 1 2 3 4 Měli bychom umět ovládat prostorové analýzy překryvné (overlay) a bĺızkostní (buffer) funkce umět kombinovat

Více

Popis funkcí tlačítek jednotlivých modulů programu OGAMA

Popis funkcí tlačítek jednotlivých modulů programu OGAMA Nevázaná příloha bakalářské práce VYUŽITÍ OPEN-SOURCE NÁSTROJŮ PRO PŘÍPRAVU, PRŮBĚH A VYHODNOCENÍ EYE-TRACKING EXPERIMENTŮ Popis funkcí tlačítek jednotlivých modulů programu OGAMA Michal KUČERA, 2014 Replay

Více

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

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

Více

2) Nulový bod stroje používáme k: a) Kalibraci stroje b) Výchozímu bodu vztažného systému c) Určení korekcí nástroje

2) Nulový bod stroje používáme k: a) Kalibraci stroje b) Výchozímu bodu vztažného systému c) Určení korekcí nástroje 1) K čemu používáme u CNC obráběcího stroje referenční bod stroje: a) Kalibraci stroje a souřadného systému b) Zavedení souřadného systému stroje c) K výměně nástrojů 2) Nulový bod stroje používáme k:

Více

Macromedia Flash 8. Druhy animace: Snímek po snímku. F5 vložit snímek (insert frame) F6 vložit klíčový snímek (insert key frame)

Macromedia Flash 8. Druhy animace: Snímek po snímku. F5 vložit snímek (insert frame) F6 vložit klíčový snímek (insert key frame) Druhy animace: Snímek po snímku Macromedia Flash 8 F5 vložit snímek (insert frame) F6 vložit klíčový snímek (insert key frame) F7 vložit prázdný klíčový snímek (insert blank key frame) Enter spuštění animace

Více

verze Grafický editor PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ 1 Obsah

verze Grafický editor PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod... 2 2.1 Výhody... 2 2.2 Základní ovládání... 2 3 Menu... 3 3.1 Menu Soubor... 3 3.1.1 Menu Soubor / Nový... 3 3.1.2 Menu Soubor / Otevřít... 3 3.1.3 Menu Soubor / Otevřít podle

Více

Popis softwaru pro sledování pohybu UZ sondy

Popis softwaru pro sledování pohybu UZ sondy Popis softwaru pro sledování pohybu UZ sondy Cílem programu je umožnit lékaři, provádějícímu ultrazvukové vyšetření pacientky, zaznamenat a vyhodnotit prostorovou trajektorii sondy. Zaznamenaná trajektorie

Více

Dotykova obrazovka v programu TRIFID

Dotykova obrazovka v programu TRIFID Dotykova obrazovka v programu TRIFID V současném provedení je ve fázi testování, předpokládá se tedy její spouštění z hlavní nabídky programu TRIFID. K nastavení a spuštění je tedy nutné mít připojenou

Více

Ovládání TV platformy a funkce Chytrá TV

Ovládání TV platformy a funkce Chytrá TV Ovládání TV platformy a funkce Chytrá TV 1/11 Obsah Popis dálkového ovladače...3 Ovládání TV služby...4 Informace o pořadu...4 Seznam TV kanálů...5 Možnosti kanálu...5 Programový průvodce...6 Změna pořadí

Více

GEOM LITE - MANUÁL hlavní obrazovka

GEOM LITE - MANUÁL hlavní obrazovka GEOM LITE - MANUÁL hlavní obrazovka Levý panel Pomoci levého panelu je možné vybírat aktivní vrstvy, měnit jejich průhlednost a pořadí. V dolní části je zobrazena legenda. Horní panel V horním panelu se

Více

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] 1 CÍL KAPITOLY V této kapitole si představíme Nástroje kreslení pro tvorbu 2D skic v modulu Objemová součást

Více

Tvorba fotogalerie v HTML str.1

Tvorba fotogalerie v HTML str.1 Tvorba fotogalerie v HTML str.1 obr. A obr. B 1) Spustíme PsPad, vytvoříme nový dokument a otevře se nám okno nový soubor, kde si můžeme zvolit jaký chceme typ. My označíme HTML a potvrdíme. 2) Pro správné

Více

Mapová aplikace HZS Ústeckého kraje

Mapová aplikace HZS Ústeckého kraje Mapová aplikace HZS Ústeckého kraje Stručný návod Tato aplikace vznikla z důvodu potřeby prezentace geografických dat HZS Ústeckého kraje a dalších poskytovatelů dat v jednotné mapové aplikaci. Dalším

Více

Ignijet_2007 Externí monitor

Ignijet_2007 Externí monitor Ignijet_2007 Externí monitor ver 2010-06-17 Úvod Externí monitor dokáže monitorovat vybrané parametry zapalování a zobrazovat je dle modifikovatelného nastavení a to jak hodnoty parametrů, tak jednoduché

Více

Sociomap Viewer Uživatelský manuál. Verze 3

Sociomap Viewer Uživatelský manuál. Verze 3 Sociomap Viewer Verze 3 1 OBSAH: Sociomap Viewer Základní popis... 3 Panel nástrojů Vieweru...... 4 Nástroje... 4 Bílé pozadí:... 4 Pohled shora po spuštění:... 4 Zobrazit panely:... 5 Klávesové zkratky:...

Více

Zóny a pravidla UŽIVATELSKÁ PŘÍRUČKA

Zóny a pravidla UŽIVATELSKÁ PŘÍRUČKA Zóny a pravidla UŽIVATELSKÁ PŘÍRUČKA Verze 4.1.30 10/2014 Obsah Zóny... 2 Omezení modulu Zóny a pravidla... 2 Vstup do modulu Zóny a pravidla... 3 Karta zóny... 3 Vytvoření nové zóny... 3 Editace zóny...

Více

Transformace (v OpenGL) příklady a knihovna GLM

Transformace (v OpenGL) příklady a knihovna GLM Transforace (v OpenGL) příklady a knihovna GLM Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL ístnost KN:E-413 (Karlovo náěstí, budova E) E-ail: felkel@fel.cvut.cz Poslední

Více

ROBOTIKA M3A 2018/2019 ING. VLADIMÍR VYHŇÁK

ROBOTIKA M3A 2018/2019 ING. VLADIMÍR VYHŇÁK ROBOTIKA M3A 2018/2019 ING. VLADIMÍR VYHŇÁK Návrh robotizovaných pracovišť Program ABB Robot Studio (dále jen ABB-RS) slouží k přípravě programů průmyslových robotů a jejich nejbližší periférie, k jejich

Více

Závěrečná práce. AutoCAD Inventor 2010. (Zadání D1)

Závěrečná práce. AutoCAD Inventor 2010. (Zadání D1) Závěrečná práce AutoCAD Inventor 2010 (Zadání D1) Pavel Čurda 4.B 4.5. 2010 Úvod Tato práce obsahuje sestavu modelu, prezentaci a samotný výkres Pákového převodu na přiloženém CD. Pákový převod byl namalován

Více

Bitmapová grafika: Vrstvy - interakce (režimy prolnutí)

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í)

Více

Školní kolo soutěže Mladý programátor 2015, kategorie A, B

Školní kolo soutěže Mladý programátor 2015, kategorie A, B Doporučené hodnocení školního kola: Hodnotit mohou buď učitelé školy, tým rodičů nebo si žáci, kteří se zúčastní soutěže, mohou ohodnotit úlohy navzájem sami (v tomto případě doporučujeme, aby si žáci

Více

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

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

Více

Souřadnicové prostory

Souřadnicové prostory Prostor objektu Tr. objektu Tr. modelu Prostor scény Souřadnicové prostory V V x, y z x, y z z -z x, y Tr. objektu V =V T 1 T n M Tr. modelu Tr. scény x, y Tr. pohledu Tr. scény Tr. pohledu Prostor pozorovatele

Více

Android OpenGL. Pokročilé shadery

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í

Více

METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ Pozadí snímku Pozadí snímku můžeme nastavit všem snímkům stejné nebo můžeme volit pro jednotlivé snímky různé pozadí. Máme několik možností: Pozadí snímku

Více

Uživatelská příručka Set-top Boxu

Uživatelská příručka Set-top Boxu ITonis IPTV and VoD Platform Uživatelská příručka Set-top Boxu 10. října 2007 i Obsah 1 Motorola Set-top Box VIP1500/VIP1700 1 1.1 Vybalení Set-top Boxu... 1 1.2 Zapojení Set-top Boxu...

Více

Archive Player Divar Series. Návod k obsluze

Archive Player Divar Series. Návod k obsluze Archive Player Divar Series cs Návod k obsluze Archive Player Obsah cs 3 Obsah 1 Úvod 4 2 Použití 5 2.1 Spuštění programu 5 2.2 Popis hlavního okna 6 2.3 Tlačítko Otevřít 6 2.4 Pohledy kamery 6 2.5 Tlačítko

Více

Popis softwaru pro sledování pohybu UZ sondy

Popis softwaru pro sledování pohybu UZ sondy Popis softwaru pro sledování pohybu UZ sondy Cílem programu je umožnit lékaři, provádějícímu ultrazvukové vyšetření pacientky, zaznamenat a vyhodnotit prostorovou trajektorii sondy. Zaznamenaná trajektorie

Více

ONI system Notifikace a pravidla + vícenásobný filtr

ONI system Notifikace a pravidla + vícenásobný filtr ONI system Notifikace a pravidla + vícenásobný filtr 2015 BüroKomplet, s.r.o. Obsah Notifikace a pravidla... 3 Jak nastavit notifikace... 3 Práce v uživatelském rozhraní nového pravidla... 4 Příklad:...

Více

Manuál k ovládání aplikace INFOwin.

Manuál k ovládání aplikace INFOwin. Manuál k ovládání aplikace INFOwin. Základní práce s formuláři je ve všech modulech totožná. Vybereme tedy například formulář Pokladní kniha korunová na kterém si funkce ukážeme. Po zápisech se lze pohybovat

Více

PROGRAM RP56 Odvodnění pláně Příručka uživatele Základní verze 2014

PROGRAM RP56 Odvodnění pláně Příručka uživatele Základní verze 2014 PROGRAM RP56 Odvodnění pláně Příručka uživatele Základní verze 2014 Pragoprojekt a.s. 2014 1 Program RP-56 Program RP-56... 2 Funkce programu a zásady použité při jejich řešení... 2 56-1. Zadávací okno

Více

Supernova 16 Ovládací zkratky. Akce Funkce Stolní počítač Přenosný počítač Automatické popisování grafických objektů LEVÝ CONTROL + PRAVÁ HRANATÁ

Supernova 16 Ovládací zkratky. Akce Funkce Stolní počítač Přenosný počítač Automatické popisování grafických objektů LEVÝ CONTROL + PRAVÁ HRANATÁ Supernova 16 Ovládací zkratky Akce Funkce Stolní počítač Přenosný počítač Automatické popisování grafických objektů PRAVÁ HRANATÁ G Otevřít kontextové menu ovládacího panelu ZÁVORKA MEZERNÍK Předčítací

Více

Připravil: David Procházka. Vertex Buffer Objects

Připravil: David Procházka. Vertex Buffer Objects 30. září 2013, Brno Připravil: David Procházka Vertex Buffer Objects Počítačová grafika 2 Obsah přednášky Strana 2 / 22 Obsah přednášky 1 Obsah přednášky 2 Vertex Buffer Objects 3 Příklady 4 Shrnutí Obsah

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV MECHANIKY TĚLES, MECHATRONIKY A BIOMECHANIKY Komentovaný metodický list č. 1/4 Vytvořil: Ing. Oldřich Ševeček & Ing. Tomáš Profant, Ph.D.

Více

Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR

Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR 24.1.2019 1. Režimy prohlížení dat prostřednictvím aplikace Webová aplikace Stav pokrytí NGA v ČR umožňuje uživatelům přístup k datům

Více

Název: VY_32_INOVACE_PG3314 Rendering - vykreslení vytvořené scény. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

Název: VY_32_INOVACE_PG3314 Rendering - vykreslení vytvořené scény. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max Název: VY_32_INOVACE_PG3314 Rendering - vykreslení vytvořené scény Autor: Mgr. Tomáš Javorský Datum vytvoření: 05 / 2012 Ročník: 3 Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max Anotace:

Více

Uživatelská příručka. 06/2018 Technické změny vyhrazeny.

Uživatelská příručka. 06/2018 Technické změny vyhrazeny. Uživatelská příručka 1 OBSAH 1 ÚVOD... 3 1.1 Merbon SCADA... 3 1.1.1 K čemu program slouží...3 2 Přihlášení a odhlášení z programu... 4 3 Projekty... 5 3.1 Výběr zobrazení... 5 3.2 Schémata... 6 3.3 Grafy...

Více

Návod k využívání interaktivních funkcí

Návod k využívání interaktivních funkcí Návod k využívání interaktivních funkcí Vážení zákazníci, těší nás, že jste se rozhodli využívat výhody Interaktivní TV. Svoji Interaktivní TV budete ovládat přes velmi jednoduchou a intuitivní aplikaci.

Více

Diplomová práce Prostředí pro programování pohybu manipulátorů

Diplomová práce Prostředí pro programování pohybu manipulátorů Diplomová práce Prostředí pro programování pohybu manipulátorů Štěpán Ulman 1 Úvod Motivace: Potřeba plánovače prostorové trajektorie pro výukové účely - TeachRobot Vstup: Zadávání geometrických a kinematických

Více

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) 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í

Více

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

Více

Práce s plátnem. Vrácení se o krok zpět CTRL+Z Vrácení se o krok vpřed SHIFT+CTRL+Z Duplikace objektu CTRL+D

Práce s plátnem. Vrácení se o krok zpět CTRL+Z Vrácení se o krok vpřed SHIFT+CTRL+Z Duplikace objektu CTRL+D INKSCAPE - Základy Tato prezentace se vám bude snažit přiblížit základy práce s vektorovou grafikou, v našem případě v programu Inkscape. Ukážeme si navigaci na plátně, práci s objekty, výplní, seskupováním

Více

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchický model 1995-2013 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchie v 3D modelování kompozice zdola-nahoru složitější objekty se sestavují

Více

pro začátečníky pro pokročilé na místě (dle požadavků zákazníka)

pro začátečníky pro pokročilé na místě (dle požadavků zákazníka) Semináře pro začátečníky pro pokročilé na místě (dle požadavků zákazníka) Hotline telefonická podpora +420 571 894 335 vzdálená správa informační email carat@technodat.cz Váš Tým Obsah Obsah... -2- Úvod...

Více

Manuál QPos Pokladna V1.18.1

Manuál QPos Pokladna V1.18.1 Manuál QPos Pokladna V1.18.1 OBSAH Obsah 1. QPOS dotyková pokladna... 3 2. Jak číst tento manuál... 4 2.1. Čím začít?... 4 2.2. Členění kapitol... 4 2.3. Speciální text... 4 3. První spuštění... 5 3.1.

Více

Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR

Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR Popis obsahu a návod k používání mapové aplikace Stav pokrytí NGA v ČR 4.12.2018 1. Základní prohlížecí funkce mapy Webová aplikace Stav pokrytí NGA v ČR umožňuje uživatelům přístup k datům souběžně ve

Více

Úvod do programu Solid Edge

Úvod do programu Solid Edge Úvod do programu Solid Edge Cíle této kapitoly V průběhu této kapitoly se naučíte: jak vypadá prostředí programu Solid Edge, najít a otevřít dokument programu Solid Edge, vytvořit a uložit dokument, používat

Více

Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz

Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz Popis aplikace Origami Nets je nejkomplexnější aplikace v projektu DALEST. Tato aplikace umožňuje vytvářet sítě různých těles a pak je skládat. Objekty,

Více

Základy práce v programu Inkscape Projekty pro základní školy

Základy práce v programu Inkscape Projekty pro základní školy Moduly cesta k racionálnější výuce Zefektivnění výuky oboru ICT aplikace osobních počítačů Základy práce v programu Inkscape Projekty pro základní školy Tomáš Kmínek Projekt CZ.1.07/1.1.32/01.0013 je spolufinancován

Více