UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY. Progresívne meše v Unity Roman Vrecník

Size: px
Start display at page:

Download "UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY. Progresívne meše v Unity Roman Vrecník"

Transcription

1 UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Progresívne meše v Unity 2016 Roman Vrecník

2 UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Progresívne meše v Unity Bakalárska práca Študijný program: Študijný odbor: Aplikovaná informatika aplikovaná informatika Školiace pracovisko: Katedra aplikovanej informatiky Školiteľ: RNDr. Martin Samuelčík, PhD. Bratislava 2016 Roman Vrecník

3

4 Čestné vyhlásenie Čestne prehlasujem, že som túto bakalársku prácu vypracoval samostatne s použitím uvedených zdrojov. V Bratislave...

5 Poďakovanie Dakujem vedúcemu bakalárskej práce, RNDr. Martin Samuelčík, PhD. za odborné vedenie, cenné rady a pripomienky pri spracovaní mojej bakalárskej práce.

6 Abstrakt Progresívne meše patria do dynamických Level of Detail techník, ktorá najmä slúži pre dynamickú zmenu zložistosti 3D modela. Táto LOD technika bola predstavená Hughom Hoppom v roku 1996, ktorá sa následne stala rozšírenov v oblasti zjednodušovania modelov. Cielom práce je aplikovanie tejto metódy a vytvorenie aplikácie v rozšírenom hernom engine Unity3D. Práca sa deli na dve časti, nástroj do editora enginu alebo plugin, ktorý bude služiť pre vývojara v Unity3D a prezentačnú časť, ktorá bude ukazovať ako zmena zložitosti prebieha na zobrazenom modeli. Technika bola implementovaná v jazyku C#, ktorá je jedným z dvoch podporovaným jazykom Unity3D. Klúčové slová: Unity3D, progresívne meše, počítačová grafika, LOD Abstract Progressive Meshes belongs to Dynamic Level of Detail techniques, which mainly serves to dynamic changes complexity of 3D model. This LOD technique was introduced by Hugh Hoppe in 1996, which subsequently became widespread in the simplification models. The aim of this work is implementation of this method and create an application in widely spread game engine Unity3D. The work is divided into two parts, Editor Window tool or plugin which will serve to developers in Unity3D and presentations application that will show how complexity change performed on the model view. The technique has been implemented in C #, which is one of two supported languages Unity3D. Key words: Unity3D, progressive meshes, computer graphics, LOD

7 Obsah 1. Úvod Východiská práce Cieľ Level of Detail metódy Statické LOD Dynamické LOD Progresívne meše Edge collapse Analýza existujúcich riešení MeshLab Polygon Cruncher Blender Atangeo Balancer Použité technológie Unity3D C# Javascript PHP Návrh aplikácie Východiská projektu Grafický návrh Prezentačná časť Grafický návrh Nástrojové okno Návrh dátovej štruktúry... 15

8 3.3.1 Návrh klient-server štruktúry Popis funkcionality Návrh spracovania vstupných údajov modela Návrh decimačného algoritmu Implementácia aplikácie Používateľský nástroj v editore Unity3D LOD metóda edge-collapse Zobrazovanie modela na scénu Implementácia prezentačnej časti Klientská časť Načítanie modela zo servera Spracovanie modela a príprava na ukladanie na server Serverová časť Výsledky Edge collapse Načítavanie modelov s rôznym počtom vrcholov a zložitosťou Záver Literatúra Prílohy... 39

9 1. Úvod 3D modely sú v dnešnej dobe neoddeliteľnou časťou počítačovej grafiky. Využívajú sa v počítačových hrách, animovaných filmoch, v architektúre alebo grafických prezentáciách. Vkladáme sa do scén, ktoré potom komponentmi ako sú kamery snímame a následne zobrazujeme na obrazovkách našich počítačov. Pri väčšom počte modelov na scéne, je možné, že plynulosť zobrazenia scény sa môže znížiť. Príčina môže byť vo vysokom počte trojuholníkov niektorých modelov. Tento problém je možné vyriešiť aplikovaním Level of Detail techník, ktoré znížia počet trojuholníkov a teda umožnia scéne plynulejší chod. Týmito metódami sa zaoberá aj táto bakalárska práca, a to konkrétne technikou Progresívne meše[1]. Zjednodušovanie modelov, resp. znižovanie zložitosti modelov, je v počitačovej grafike bežnou záležitosťou. Optimalizácia je ten dôvod, kvôli ktorému je táto téma dôležitou časťou pre vývojárov a dizajnérov grafických scén. Dynamická LOD technika Progresívne meše[1], prvýkrát prezentovaná Hughom Hoppom v roku 1996, ponúka plynulú zmenu používateľom zadanou zložitosťou modelu. Hugues Hoppe je manažérom výskumu počítačovej grafiky v spoločnosti Microsoft, ktorý sa podieľal na mnohých výskumoch, ktoré posunuli vývoj počitačovej grafiky. Techniku Progresívne meše[1] budeme aplikovať do prostredia, dnes veľmi populárneho enginu Unity3D, ktorý ku dnešnému dňu ponúka široké možnosti pre vývojárov počitačových, konzolových a mobilných hier. Tiež umožňuje vytvárať prezentácie alebo animované filmy. Popularitu si získal najmä kvôli licenciám, ktoré ponúka. Engine obsahuje širokú škálu funkcionalít, ale s funkcionalitami v oblasti zjednodušovania modelov zaostáva. 1

10 2. Východiská práce 2.1 Cieľ Cieľom tejto bakalárskej práce je rozšíriť funkcionalitu herného enginu Unity 3D o LOD metódu zvanú ako Progresívne meše, ktorá umožní užívatelovi dynamicky upravovať zložitosť modelu na scéne. Moja práca bude obsahovať aj prezentačnú časť, ktorá bude vytvorená ako webová aplikácia. Bude prezentovať funkcionalitu algoritmov a aplikačnú časť alebo nástroj, ktorý bude priamo implementovaný ako modul v Unity 3D. 2.2 Level of Detail metódy Level of Detail[3] alebo LOD metódy v počítačovej grafike zahŕňajú úpravu zložitosti 3D modelu, teda znižovanie počtu trojuholníkov modelu. Pri vyššej hardvérovej náročnosti scény, kedy grafické spracovanie nezvláda scénu zobrazovania bez oneskorenia, sa LOD metódy využívajú na optimalizovanie scény aplikovaním jedného z algoritmov na objekty v scéne. Úpravou ich zložitosti sa zmenší hardvérová náročnosť a teda sa zníži zátaž grafického spracovania.existujú dva prístupy práce LOD modelov v scéne, a to využitím statických alebo dynamických LOD metód Statické LOD Statické alebo diskrétne LOD metódy je tradicný prístup, ktorý vytvárajú viacero variant LOD pre konkrétny model na scéne, ktoré sa vytvárajú ešte pred renderovaním. Pre vytvorenie týchto variant vačšinou je potrebný externý netriviálny algoritmus redukcie polygónov v modeli a teda pri vykonávani LOD je predpoklad, že tieto varianty už existujú. Originálnu schému navrhol James H. Clark v roku 1976 a od toho dňa bez modifikácií používaná vo vačšine 3D aplikáciach. Výhodou statickej LOD je, že generovanie LOD variant sa vykonáva ešte pred renderovaním a za behu sa varianty len prepínajú. Týmto spôsobom sa značne znižuje výpočetná náročnosť. Nevýhodou je obmedzený počet variant modelov, preto je niekedy nutné použiť variantu s väčšou zložitosťou miesto menšej, ktorá by bola vhodnešia pre danú situáciu. Medzi ďalšie nevýhody sa zaraďuje vyššie využitie pamäte a preblikávania pri načítaní variánt modela. 2

11 Táto metóda sa často používa hlavne v aplikáciach, ktoré si dávajú záležať na svojej výkonnosti, kde sa používajú malé množiny dát, ktoré sa ľahko zmestia do pamäti. V nižšie zobrazenom obrázku (Obr. 2.1), vidíme ukážku aplikovania LOD metód na mesh. V každom náhlade je vidno, ako sa hrany modela odstraňujú, teda model sa zjednodušuje. Obr. 2.1: Ukážka aplikovania LOD na model[4] Dynamické LOD Existuje značný rozdiel medzi dynamickými LOD, nazývané aj ako spojité LOD, a statickými. Dynamické LOD sa na miesto vytvárania variant modelu v rôznych zložitostiach pred spustenim programu, sa tieto výpočty vykonávajú priamo za behu programu.v inicializačnej fáze je vypočítaná reprezentácia objektu a následne uložená do vytvorenej dátovej štruktúry. Potom podľa danej štruktúry sa vytvorí model, ktorý bude mať najvhodnejšiu zložitosť pre danú scénu. čo by sme mohli označiť ako výhodu tejto metódy. Dynamické LOD tiež podporujú prenos 3D modelov, ktorý postupne posiela segmenty 3D modela, ktoré sa dynamicky načítavajú do modela so základnou zložitostou. Nevýhodou tejto metódy je vysoká náročnosť pre výpočet varianty modela, nakoľko výpočty sa vykonávajú za behu programu.typickým príkladom pre dynamické LOD su Progresívne meše. 2.3 Progresívne meše Progresívne meše[1] sú jedna z techník dynamických LOD. Táto technika bola predstavená výskumným manažerom v spoločnosti Microsoft, Hughom Hoppeom v roku Táto technika využíva uloženie meshu do dátovej štruktúry, ktorá umožnuje plynulú voľbu modelu, ktorá bude najvhodnejšia pre danú scénu. 3

12 Základný princíp tejto techniky spočíva vo vytvorení dátovej štruktúry, a to vložením modela v najlepšej kvalite resp. zložitosti, a pomocou decimačného algoritmu sa zjednoduší na minimálny počet polygónov. Toto je operácia nazývaná aj ako edgecollapse. Výsledný model v stopercentnej zložítosti je reprezentovaný modelom s najnižšou zložitosťou a následne postupnosťou inverzných operácií, nazývaných aj ako vertex split. Na ukážke (Obr. 2.2) vidíme príklad spracovania hrany pomocou metódy edge collapse[3] a vertex split[3]. Obr. 2.2:Ukážka edge collapse a vertex split Edge collapse Edge collapse[3] alebo ecol je operácia, ktorá vezme hranu a jej vrcholy a nahradí ju jedným vrcholom. Trojuholníky, ktoré boli spojené hranou, ktorá bola vymazaná, sú tiež vymazané behom tejto operácie. Hugues Hoppe ako prvý navrhol použitei tejto operácie pre zjednodušenie modelov. Edge-collapse je široko využívaný v procesoch zjednodušovania modela, hlavne pri zjednodušovaní v závislosti od pohľadu kamery. Existujú dve varianty tejto operácie, a to half-edge collapse a full-edge collapse. Half-edge collapse spočíva v tom, že vrchol, ktorý je jeden z koncových bodov, teda pracuje sa už s existujúcimi vrcholi, pričom fulledge collapse vykonáva nové výpočty a zjednodušovaní môže vzniknúť nový vrchol. Inverzná operácia pre tento proces sa nazýva Vertex split[3], Ktorá pridáva hrany, namiesto toho aby ich zjednodušovala, resp. odoberala. 4

13 2.4 Analýza existujúcich riešení V tejto časti bakalárskej práce budú analyzované aplikácie, ktoré riešili rovnakú problematiku, ktorou sa zaoberá bakalárska práca Progresívne meše. Účelom tejto časti je poučiť sa a inšpirovať sa nápadmi a vyhýbať sa známym problémom, ktoré pri riešení týchto aplikáci vznikali a podobne MeshLab MeshLab[5] je free open-source, multiplatform, pokročilý grafický software pre spracovanie 3D modelov. Rozšírený je hlavne kvôli jeho rozšírenej funkcionalite a spôsobom spracovania dát. Software vznikol študentmi Univerzity v Pise ako projekt školského zadania Univerzity v Pise koncom 2005 roku. Zámerom tohto softwaru bolo spracovať väčšie neštruktúrované 3D modely, ktoré vznikajú v 3D skenovacej pipeline. Používateľ má na výber veľké množstvo možností spracovania neštruktúrovaného 3D modela. MeshLab poskytuje sadu nástrojov pre editáciu, čistenie, opravu alebo optimalizáciu modelu (Obr. 2.3). Tiež umožňuje importovať a exportovať všetky známe formáty pre reprezentáciu 3D dát.výhodou tohto softwaru je jeho už rokmi rozširujúca sa sada funkcií, ktorá poskytuje používateľovi široké možnosti editácie 3D modela a taktiež rozšírenie v daľších platformách. Obr. 2.3: Ukážka programu MeshLab[5] 5

14 2.4.2 Polygon Cruncher Polygon Cruncher[6] je software pre generovanie optimalizovaných 3D modelov, na základe redukcií polygónov v modeli a iných optimalizačných techník.aplikácia bola vytvorená v roku 1999 spoločnosťou Kalisto Entertainment a až do týchto dní sa vyvíjajú a aktualizujú jeho funkcie alebo rozšírenia. Základom pre jeho optimalizačné funkcie bol algoritmus navrhnutý Michaelom Garlandom. Výhodou tejto aplikácie je, že dokáže uschovať väčšinu detailov aj pri vysokých optimalizačných pomeroch. Informácie o textprach, farbách vrcholov a normalových hodnotách sa tiež berie do úvahy pri optimalizácií. Taktiež jedna z výhod je generovanie dynamického meshu, čo umožňuje zvoliť si najvhodnejšiu zložitosť pre scénu. Ukážka (Obr. 2.4), ktorá je zobrazená nižšie, ukazuje možnosti úpravy zobrazeného modela. Polygon Cruncher sa nezastavuje pri klasickej aplikácií ale je rozšírený aj ako C++ API, plugin pre 3ds Max alebo Auto desk Maya. Obr. 2.4: Ukážka programu Polygon Cruncher[6] 6

15 2.4.3 Blender Blender[7], rozšírený grafický software pre spracovanie 3D modelov.software je dostupný zadarmo ako open-source 3D molovací program. Využitie tohto programu je široké, používa sa pre tvorbu animovaných filmov, vizuálne efekty, umenie alebo interaktívne 3D aplikácie. Software bol vytvorený v Holandsku v januári roku 1995 ako interná aplikácia pre spoločnosť Neo Geo. V roku 2002 vznikol crowfundingový projekt, ktorý bol zameraný na voľné rozšírenie zdrojového kódu, teda spraviť z aplikacie Blender open-source program, dostupný pre všetkých, ktorý sa chcú podielať vo vývoji tohto programu. Blender disponuje širokou škálov funkcií, ktoré umožnujú používateľovi vytvárať a upravovať 3D modely (Obr. 2.5). Tiež obsahuje funkcie na optimalizáciu meshu, ale nie na takej úrovni, ako vyššie spomenuté aplikácie. Obr. 2.5: Ukážka programu - Blender[7] Atangeo Balancer Atangeo Balancer[8] je software zameraný hlavne pre optimalizáciu 3D modelov, ktorý sa pýši vysokou kvalitou a presnosťou optimalizácie. Aplikácia je vytvorená spoločnosťou Atangeo, ktorá sa skladá z menšej skupiny skusených ľudí z oboru počítačovej grafiky. Výhodou aplikácie je rýchlosť a presnosť algoritmov pri optimalizovaní modela. Optimalizovaný model si uchováva vačšinu svojich detailov, teda s presnosťou uchováva svoj vzhľad, svoje vlastnosti, textúry, normály, materiál a podobne 7

16 . Obr. 2.6: Ukážka programu - Atangeo Balancer[8] 2.4 Použité technológie V tejto kategorií opíšeme technológie ktoré sme využívali pri tvorení bakalárskej práce. Použil som také technológie s ktorými sme sa počas prvých troch rokoch štúdia. Tieto technológie a nástroje sú voľne dostupné pre všetkých Unity3D Unity3D[9] je multiplatformový herný engine, ktorý vznikol hlavne na vývoj hier pre počítače, herné konzoly, mobilné zariadenia a webové stránky. Herný engine vznikol v roku 2005 spoločnostou Unity Technologies s ideou vytvorenia enginu, ktorý by mohol použiť každý za prijateľnú cenu. Engine k dnešnému dňu disponuje širokou škálov funkciií, ktoré používateľovi umožňujú manipulovanie s objektami, vytváranie animácií, vytvorenie terénu a daľšie. Taktiež umožňuje používateľom písanie vlastných skriptov pomocou skriptovacej API, ktorou sa už také veľké množstvo funkcionalít len rozširuje. 8

17 Na obrázku (Obr. 2.7) môžeme vidieť používateľské rozhranie. Používateľské rozhranie sa skladá z niekoľkých segmentov, ktorých viditeľnosť, veľkosť a podobné vlastnosti sú ľubovoľne editovatelné. Prostredie umožňuje zobraziť zoznam všetkých objektov na scéne, ich parametre a vlastnosti, prehliadač dokumentov alebo grafické zobrazenie scény. Obr. 2.7: Ukážka programu - Unity3D[9] Na písanie skriptov engine používa dva programovacie jazyky, a to C#[10] a Javascript[13]. Na implementáciu kódu sme sa rozhodli použiť C#[10]. Vybrali sme ho z preferenčného hľadiska.editor, ktorý sme použili na písanie skrípt, je Microsoft Visual Studio 2013[14]. Dôvodom bola podpora zo strany Unity3D[9]. Engine ponúka nástroje, ktoré sa chovajú ako rozšírenie pre Editor. Vďaka tomu umožňuje prechádzať skripty a tiež ponúka výhody samotného editoru (Obr. 2.8). 9

18 Obr. 2.8: Ukážka programu - Microsoft Visual Studio[14] C# C#[10] je objektovo orientovaný programovací jazyk, ktorý v roku 2000 vytvorila spoločnosť Microsoft. Programovací jazyk bol navrhnutý s úmyslom využiť výhody dvoch už existujúcich programovacích jazykov C++ a Java. Programovací jazyk sa stal rýchlo populárny a to z dôvodu jeho schopnosti písania čistého kódu a vytvárania robustných a bezpečných aplikácií, ktoré operujú pod.net[15] frameworkom. Využitie je široké, je možné vytvoriť konzolovú aplikáciu alebo aplikáciu s grafickým rozhraním, databázovú aplikáciu alebo skrípt pre Unity3D[9] Javascript Javascript[13] je dynamický skriptovací jazyk, ktorý sa bežne využíva v prostrediach na strane klienta vo webových prehliadačoch. Je možné ho využiť bez žiadnych špeciálnych knižníc alebo frameworkov. Vytvorený bol Brendaon Eichom v roku Syntax tohto skriptovacieho jazyka je odvodená od programovacieho jazyka C++. Čo sa týka typovosti, javascript nie je typovo založený, teda do jednej premennej možno uložiť rôzne typy dát. Javascript sa tiež používa aj mimo webovo založených prostrediach, ako napríklad PDF alebo miniaplikácie určené pre pracovnú plochu operačného systém. 10

19 2.4.4 PHP PHP[11] čo v skratke znamená PHP: Hypertext Predprocessor je skriptovací jazyk, ktorý sa hlavne využíva na programovanie klient-server aplikácií na strane servera. Je široko využívaný ako jazyk pre všeobecné využitie, ale hlavne je zameraný na vývoj webových aplikácií. Jazyk bol vytvorený Rasmusom Lerdorfom v roku K dnešnému dnu existujú sedem verzií programovacieho jazyka, ktorý počas 21 rokov vývoja prešiel mnohými zmenami. Dnes o vývoj PHP sa stará spoločnosť Zend Technologies, ktorá sa zaoberá riešeniami pre webové aplikácie. Syntax jazyka bola odvodená a inšpirovaná jazykom C, ale mnohé príkazy ako cykly a podmienky boli inšpirované programovacím jazykom C++. PHP nemá typové premenné, tak ako pri jazyku javascript[13], je možné priradiť premennej hodnotu rôzneho typu. PHP budeme využívať hlavne pri implementácii serverovej časti aplikácie, kde aplikácia bude ukladať 3D modely na server. 11

20 3. Návrh aplikácie V tejto kapitole by sme radi popísali návrh aplikácie, čo zahŕňa návrh grafického rozhrania, dátových štruktúr a podrobnej funkcionality. 3.1 Východiská projektu Projekt je rozdelený na dve časti, Prezentačnú a Nástrojové okno, kde prezentačná časť bude vytvorená ako real-time webová aplikácia. Rozhranie prezentačnej časti bude vytvorené pomocou enginu Unity3D[9] Aplikačná časť alebo nástrojové okno bude vytvorené ako modul do samotného enginu, za pomoci Editor Window knižníc, ktoré Unity3D[9] disponuje. Prezentačná časť sa bude nachádzať na webovom serveri, takže hardvérové nároky budú minimálne. Software nároky oproti hardvérovým nárokom narastajú, a to z dôvodu, že UnityWeb player natívne nepodporujú všetky webové prehliadače. Unity3D Web Player, ktorý spadá do NPAPI pluginov natívne podporuje iba Mozzila Firefox. Pre ostatné prehliadače treba nainštalovať software alebo v prípade prehliadača Chrome, plugin tretej strany. Pri Aplikačnej časti budú nároky značne menšie, nakoľko jediné obmedzenia budú nároky samotného Unity3D[9]. 3.2 Grafický návrh Prezentačná časť Aplikácia je určená pre prezentáciu implementácie dynamickej LOD techniky Progresívne meše[1] do prostredia Unity3D[9], preto grafické rozhranie bude jednoduchý, s prvkami načítania a ovládania modelu. Grafické rozhranie bude pozostávať z dropdown listu, v ktorom budú dynamicky načítané názvy modelov uložených na serveri, tlačidla načítať, vstupného pola, do ktorého bude požívateľ vkladať inicializačnú hodnotu zložitosti načítaného modelu, tlačidla resetovania prostredia a sliderom, ktorý umožní meniť zložitosť načítaného modelu. 12

21 Obr. 3.1: Ukážka grafického rozhrania - Prezentačná časť Na obrázku(obr. 3.1) môžeme vidieť načítaný mesh.v tomto prípade sa jedná o kocku, ktorá sa nachádza na vzdialenom serveri. V ľavom rohu sú komponenty GUI (Obr. 3.2: Komponenty), ktoré sme vyššie popísal a na spodnom okraji okna slider na dynamickú zmenu zložitosti modela. Obr. 3.2: Komponenty Grafický návrh Nástrojové okno Nástrojové okno, teda časť zameraná hlavne pre vývojárov v engine Unity3D[9], má o niečo väčšie množstvo GUI komponentov ako prezentačné, nakoľko je bohatšia aj funkciami alebo vlastnosťami. GUI obsahuje tlačidlo na načítanie modela vo formáte Wavefront OBJ[16], list uložených modelov s tlačidlami načítať a vymazať, sliderom na zmenu zložitosti, tlačidlo s funkciou uložiť model v natívnej forme Unity3D[9] a náhľadom načítaného modelu. 13

22 Obr. 3.3: Ukážka GUI - Nástrojové okno, nečinný stav Na obrázku(obr. 3.3) môžeme vidieť aplikáciu v nečinnom stave, kde nie sú načítané ešte žiadne modely ukazujúce všetky komponenty, ktoré sú dostupné v nečinnom stave. V tomto stave bude dostupné iba tlačidlo určené pre nahratie nového modela. Pri kliknutí na tlačidlo sa zobrazí dialóg, v ktorom používateľ bude môcť vybrať model vo formáte Wavefont OBJ[16]. Obr. 3.4: Ukážka GUI - Nástrojové okno, načítaný model Na ďalšom obrázku (Obr. 3.4) už môžeme vidieť dostupné komponenty pri načítaní zoznamu a modelu do náhľadu. Sprístupnili sa komponenty ako posuvník pre zmenu zložitosti modela, tlačidlo na stiahnutie alebo správu načítaných modelov, teda aktiváciu 14

23 modela a jeho vymazanie. Pre vytvorenie posuvníka bude použitá funkcia IntSlider, ktorý vygeneruje posuvník do okna, Funkcia vygeneruje aj pole pre zadanie číselnej hodnoty, v ktorej budeme môcť sledovať a zadávať zložitosť modelu. 3.3 Návrh dátovej štruktúry Pre efektívne spracovanie 3D modelu pomocou dynamickej LOD techniky progresívne meše, treba správne navrhnúť dátovú štruktúru, do ktorej sa budú ukladať všetky informácie potrebné pre optimalizáciu, teda zmenu zložitosti modela. Pri návrhu sme vychádzali z publikácie Hughues Hoppe - Efficient Implementation of Progressive Meshes[2], v ktorej popisuje princíp implementácie, ale aj návrhu dátovej štruktúry. Bolo potrebné aj dôkladné preštudovanie enginu Unity3D[9], v ktorom sa aplikácia vytvára, aby sme pri návrhu nevytvárali triedy alebo reprezentácie, ktorými už engine disponuje. Dátová štruktúra, ktorú môžeme nazvať progressivemesh, pozostáva zo zoznamu reprezentácie vrcholov modela, nazvanou ako Vertex, kde súradnice sa ukladajú do štruktúry Vector3, ktorá je primárne určená pre takúto reprezentáciu, nakoľko už disponuje mnohými pomocnými vypočetnými funkciami, ako napríklad pre výpočet normálov alebo výpočet dĺžky vektora. Trieda 3.1: Vertex, reprezentujúca vrchol modela V reprezentácií vrcholov (Trieda 3.1) sa tiež nachádza jeho identifikátor alebo ID, ktoré bude unikátne a bude slúžiť pre jeho identifikáciu oproti iným vrcholom, čo sa neskôr využije na identifikáciu konkrétnych trojuholníkov a teda aj skonštruovanie modela. Štruktúra bude obsahovať aj susedné vrcholy daného vrchola, ktoré budú len referencie na už existujúce vrcholy v reprezentácií. Dôležitý údaj, ktorý bude táto štruktúra bude obsahovať bude referencia susedného vrcholu pre collapse alebo spojenie dvoch vrcholov v jeden, čo je kľúčový údaj pre znižovanie zložitosti modelu, a finálny údaj je 15

24 vzdialenosť vrcholu od vybraného vrcholu pre collapse, od ktorého sa potom vyvíja výpočet najvhodnejšieho vrcholu pre tento krok optimalizácie. Trieda 3.2: Triangle, reprezentujúca trojuholník v modeli V dátovej štruktúre progressivemesh sa dalej nachádza zoznam reprezentácie trojuholníkov (Trieda 3.2) v spracovanom modeli. Vrcholy sa ukladajú do pola ako už vyššie spomínaná trieda Vertex (Trieda 3.1), ktorá obsahuje jeho údaje. Ďalej táto dátová štruktúra obsahuje normálu trojuholníka. Ďalšia trieda a zároveň posledná ktorá obsahuje našu hlavnú dátovú štruktúru progressivemesh (Trieda 3.3) je počet vrcholov modela, ktorý napomáha k prepočtu zložitostí na percentá. Trieda 3.3: progessivemesh, obsahujúca polia objektov tried Vertex a Triangle a celkový počet vrcholov v modely Návrh klient-server štruktúry Pri návrhu dátovej štruktúry pre prenos údajov zo servera ku klientovi sme sa inšpirovali dátovou štruktúrou Wavefront OBJ[16] a Unity3D[9] dátovou štruktúrou pre 3D model. Cieľom pre túto dátovú štruktúru bolo vytvoriť štruktúru, ktorú budeme môcť efektívnejšie spracovávať a aby veľkosť súboru, do ktorého bude uložená bol nižší, teda prenos údajov zo servera bol rýchlejší. Do dátovej štruktúry budeme ukladať len údaje o vrcholoch a stien modela. Pre túto prácu sú tieto údaje dostačujúce, algoritmy, ktoré budeme implementovať budú pracovať len s týmito informáciami. Do súboru budem ukladať údaje typu string, kde ako prvý segment údajov budú informácie o vrcholoch a druhý bude obsahovať informácie o stenách modelu. Tieto informácie budeme oddeľovať symbolom bodkočiarka. Týmto spôsobom budeme môcť ľahko identifikovať tieto dva 16

25 segmenty ako dve rôzne polia typu string, pomocou natívnej C#[10] funkcie Split(). Pri reprezentácií vrcholov v tejto dátovej štruktúre musíme uchovať koncepciu troch súradníc. Došli sme k návrhu, kde v segmente informácií vrcholov bude každý vrchol oddelený symbolom dvojbodka a každá súradnica bude oddelená čiarkou. Takto dokážeme jednoducho spracovávať vrcholy a ich súradnice. Každý ten pod-segment informácií dokážeme získať do polí, ktoré budú následne jednoducho spracovávané a ukladané do dátových štruktúr, pre ďalšie spracovávanie. U segmentu stien modela sa nenachádzajú žiadne komplexnejšie informácie. Informácie pozostávajú len z číselnej hodnoty indexu vrcholu, ktorý sa nachádza v prvom segmente, preto tieto informácie budú uložené za sebou, ale v takom poradí, aby sa dokázali identifikovať trojuholníky modela. Údaje sú oddelené symbolom čiarka. Návrh dátovej štruktúry bude vyzerať takto: 1,-1,-1:1,-1,1:-1,-1,1:-1,-1,-1:1,1, : ,1, :-1,1,1:-1,1,- 1;0,1,2,0,2,3,4,7,6,4,6,5,0,4,5,0,5,1,1,5,6,1,6,2,2,6,7,2,7,3,4,0,3,4,3,7 3.4 Popis funkcionality V tejto kapitole popíšeme ako sme postupovali pri návrh funkcií a algoritmov pre aplikáciu. Pri návrhu ako bude aplikácia fungovať bolo dôležité si dôkladne preštudovať zdroje, ktoré sme použili pre túto prácu. Jedná sa o dôležité matematické operácie, ktoré umožnia aplikácie aplikovať LOD techniku progresívne meše ktoré sme popísali v kategórii 2.3 Progresívne meše Návrh spracovania vstupných údajov modela Pri návrhu spracovávania vstupných súborov formátu Wavefront OBJ[16] sme postupovali podľa existujúcich riešení. Týchto riešení je veľa, čiže nevznikol žiadny problem v tejto časti návrhu. Riešenie bolo potrebné upraviť do tvaru, aby Unity3D[9] dokázalo spracovať údaje a ukladať ich do svojich typových premenných. Pri návrhu do časti nástrojového okna, sme navrhli triedu (Trieda 3.4), ktorá sa bude o túto operáciu starať. 17

26 Trieda 3.4 processmesh, ktorá spracováva vstupný objekt typu Wavefront OBJ[16] Pri návrhu tejto triedy (Trieda 3.4), sme aplikovali ukladanie všetkých informácii, ktoré dátová štruktúra ponúka. Aj napriek skutočnosti, že v implementácií budeme využívať len dva z týchto údajov, vrcholi a steny modela, ukladáme aj súradnice textúry a normály modela. Pri prezentačnej časti sme túto funkcionalitu spojili s funkciou odosielania požiadavky na server resp. ukladanie modela na server. Trieda () sa líši iba dodatočnými funkciami pre odosielania na server. Pri návrhu tejto metódy sme využili dostupné knižnice skriptovacej API Unity3D[9], ktorá ponúka už riešenia ako odoslať POST požiadavku na server. Trieda ktorá sa stará o zasielanie požiadaviek sa nazýva WWW. Tiež skriptovacia API ponúka pomocné triedy napr. WWWForm, ktoré vytvoria formulár podobný formuláru HTTP, kde používateľ môže zadefinovať názvy poli a ich hodnotu. Funkcie na odoslanie požiadaviek sme navrhli dve,. Jedna bude slúžiť na odoslanie požiadavke pre uloženie údajov modela v navrhnutej dátovej štruktúry pre klient-server komunikáciu. A druhá bude slúžiť na aktualizáciu listu uložených modelov na servery. V obidvoch častiach aplikácie sme si do triedy processmesh (Trieda 3.4), sme navrhli dve pomocné triedy, ktoré nám budú pomáhať so spracovaním vstupných údajov modela. Pri spracovávaní je dátová štruktúra čítaná ako typ string, preto aby sme mohli údaje ukladať do dátových štruktúr, musíme tieto informácie konvertovať do typu float, pri informáciách o vrcholoch a typu int pri indexoch vrcholov. 18

27 Trieda 3.5 sendpostrequest, ktorá sa stará o spracovanie vsetupného súboru a odoslanie na server Návrh decimačného algoritmu V tejto časti popíšem ako sme postupovali pri návrhu decimačného algoritmu a to algoritmu s názvom edge-collapse (2.3.1 Edge collapse). Decimačný algoritmus ma za úlohu redukovať celkový počet trojuholníkov v modeli s trojuholníkovou štruktúrou a zároveň zachovať originálnu topológiu a aproximáciu k originálnej geometrie. Pri návrhu som vychádzal z z publikácie Hughues Hoppe - Efficient Implementation of Progressive Meshes[2] a knihy Level of Detail for 3D Graphics[3]. Pri študovaní tohto algoritmu, sme došli ku teoretickému riešeniu, že pri prechádzaní všetkých vrcholov trojuholníka sa porovnávajú dva z nich. Jeden z nich bude odstránený a druhý, vytvorí hrany so susednými vrcholmi odstráneného vrcholu, ako je to znázornené na Obr Pre dosiahnutie tohto výsledku sa bude držať týchto troch krokov a to: 1. Odstrániť každý trojuholník, ktorý obsahuje obidva porovnávané vrcholi 2. Aktualizovať zvyšné trojuholníky, ktoré v sebe majú prvý z porovnávaných vrcholov zameniť ho za druhý 3. Vymazať prvý porovnávaný vrchol 19

28 Pre získanie požadovanej zložitosti modela je nutné opakovať tento proces až do vtedy, kým model nedosiahne požadovaného počtu trojuholníkov. Dôležitou častou pre produkovanie modelov z nízkou zložitosťou je výber hrany, ktorá pri operácií edgecollapse spôsobí najmenšie vizuálne zmeny modelu. Pri návrhu som použil prístup hľadania najnižšej straty, kde porovnávam vrchol od jeho susedného vrcholu. Pri návrhu výpočtu, som pristupoval troma možnými spôsobmi. Prvý bol porovnávanie vrcholov hrany na základe ich vzdialenosti, druhý prístup bol porovnávanie na základe skalárneho súčinu a posledný kombináciou prvých dvoch prístupov. Pre túto prácu som vybral tretí prístup. Výsledky spomínaných prístupov ukážem v kategórii Výsledky. Každé opakovanie decimačného algoritmu bude spúšťať túto operáciu. Trieda 3.6 progmesh, ktorá sa stará o zjednodušovanie modelu Na základe týchto informácii sme navrhli triedu s názvom progmesh (Trieda 3.6), ktorá bude mať za úlohu operácie znižovania zložitosti načítaného modelu. Decimačný algoritmus bude za implementovaný do funkcie Collapse a operáciu hľadania hrany, ktorú som opisoval vyššie bude za implementovaná do funkcie ComputeEdgeCollapseCost, táto funkcia bude mať niekoľko pomocných funkcií, ktoré budú slúžiť na prehľadávanie dátovej štruktúry vrcholov a aplikovanie vybraných vrcholov a ich susedných vrcholov pre operáciu ComputeEdgeCollapseCost. 20

29 4. Implementácia aplikácie V predošlých kapitolách, konkrétne vo východiskovej a v návrhu aplikácie sme už spomenuli, že pre vytvorenie aplikácie sme robili v hernom engine Unity3D[9], ktorý nám svojimi funkciami umožnil vytvoriť algoritmy pre LOD metódu progresívne meše. V prvom rade sme podľa návrhu vytvorili užívateľské grafické rozhranie. Následne sme získali voľne dostupné 3D modely, ktorých dátová štruktúra bola vo forme Wavefront OBJ[16] objektu, ktorý budeme následne spracovávať do našej vlastnej dátovej štruktúry. Keď sme mali všetko pripravené, mohli sme začať programovať samotné algoritmy a logiku aplikácie. Na písanie kódu sme použili skriptovací jazyk C#[10] a ako integrované vývojové prostredie sme použili Microsoft Visual Studio 2013[14]. V tejto kapitole vysvetlíme jednotlivé časti kódu, które sú dôležité pre fungovanie samotnej aplikácie. Aplikáciu rozdeľujeme na dve časti: Používateľský nástroj v editore Unity3D Prezentačná časť 4.1 Používateľský nástroj v editore Unity3D Používateľské prostredie sme nemenili oproti pôvodnému návrhu, nakoľko pri rozmýšľaní nad funkcionalitou sme došli k názoru že pôvodný návrh bude dostačujúci pre danú funkcionalitu, ktorú bude nástroj vykonávať. Segment zobrazovania modelu, upravovania jeho zložitosti a tlačidlo na stiahnutie modela, ako asset formát, sa nezobrazuje v nečinnom stave. Zobrazí sa až keď je načítaný model zo zoznamu uložených modelov. Modely sa ukladajú po stlačení tlačidla Load Mesh a následne vybratím modela vo formáte Wavefront OBJ[16], ktorého štruktúra je definovaná ako trojuholníky, nakoľko Unity3D[9] nevie spracovať modely, ktorých štruktúra je definovaná ako štvoruholníky. Po vybratí modela sa započne jeho spracovávanie na náš vlastný dátový model. O tento proces sa postará objektová trieda parsedmesh() (Trieda 3.4), ktorá zároveň umožňuje pracovať s načítaným modelom. Obsahuje funkcie na ukladanie modela v konečnej zložitosti alebo mení status na aktívny, ktorý umožňuje používateľovi následnú manipuláciu s modelom. 21

30 O samotné spracovanie údajov a ich uloženie do nášho dátového modela sa stará funkcia process(), ktorá má na vstupe objekt triedy StreamReader, ktorý obsahuje dáta zo vstupného súboru. Funkcia ukladá všetky údaje o modeli, ako sú jeho vrcholy, indexy vrcholov, ktoré tvoria trojuholníky, normály a ďalšie. Následne sa vytvorí inštancia triedy progmesh(error! Reference source not found.), zavolá sa funkcia buildstructure, ktorá vytvorí štruktúru a ďalej zavolá funkcie, ktoré aplikujú LOD techniky na rozbitie modela so stopercentnou zložitosťou, ktoré sme spracovali na segmenty, ktoré potom aplikácia bude dynamicky načítavať LOD metóda edge-collapse Po spracovaní vstupných informácií o modeli je potrebné samotný model rozdeliť na segmenty. Model bude rozdelený do súborov, po percentách. Súbory budú samostatné modeli, ktoré užívateľ bude môcť stiahnuť. Samotné rozdeľovanie bude zaobstarávať trieda progmesh (Error! Reference source not found.), v ktorej sú aplikované LOD algoritmy. Po načítaní vrcholov a indexov vrcholov sa spustí proces hľadania hrany, prehľadávaním zoznamu všetkých vrcholov a následne jeho susedných vrcholov, ktoré pri hlavnom procese znižovania zložitosti modelu budú kľúčové pre tento úkon. Vybraný vrchol sa vymaže a susedné vrcholy sa spoja a vytvoria tak zjednodušenú štruktúru. Pre hľadanie tohto vrcholu sa porovnávajú vzdialenosti dvoch vrcholov a ich uhol za pomoci skalárneho súčinu. 22

31 float ComputeEdgeCollapseCost(Vertex u, Vertex v) { int i; float edgelength = Vector3.Magnitude(u.position - v.position); float curvature = 0; List<Triangle> sides = new List<Triangle>(); for (i = 0; i < u.neighface.count; i++) { if (u.neighface[i].mavertex(v)) { sides.add(u.neighface[i]); } } for (i = 0; i < u.neighface.count; i++) { float mincurv = 1; for (int j = 0; j < sides.count; j++) { float dotprod = Vector3.Dot(u.neighFace[i].normal, sides[j].normal); mincurv = Mathf.Min(mincurv, (1 - dotprod) / 2.0f); } curvature = Mathf.Max(curvature, mincurv); } } return edgelength * curvature; Kód 4.1: Funkcia CompoteEdgeCollapseCost Po nájdení toho najvhodnejšieho vrcholu sa zavolá metóda Collapse(), ktorá na základe tohto údaju vymaže vybraný vrchol a ostatné spojí do zjednodušenej štruktúry. Princíp tejto metódy sme vysvetlili vo východiskovej časti, kde sme popisovali túto konkrétnu metódu. Po rozložení do segmentov po piatich percentách nasledujú procesy, ktoré budú zobrazovať vybraný model na scénu vo vybranej základnej zložitosti Zobrazovanie modela na scénu Ak už máme pripravený model a jeho segmenty, je potrebné ho zobraziť na scénu s príslušnými komponentmi pre prácu so zobrazeným modelom. Túto úlohu zabezpečuje trieda parsedmesh (Trieda 4.1), ktorá načítava model z vstupného súboru a ukladá ho do objektu Mesh, ktorý sa následné vytvorí ako GameObject a bude môcť sa zobraziť na scéne. 23

32 Trieda 4.1 Trieda parsedmesh Načítavanie súboru má na starosti funkcia parseinputfile, ktorá prečíta súbor a údaje uloží do referencií, ktoré sa posielajú ako vstupný parameter funkcie. Vstupné atribúty sú polia vrcholov a indexov vrcholov, ktoré reprezentujú trojuholníky v modeli. private void parseinputfile(string data) { string tmp = data; string[] param = data.split(';'); string[] verticiesraw = param[0].split(':'); verticies = new Vector3[verticiesRaw.Length]; } for (int i = 0; i < verticiesraw.length; i++) { string[] vals = verticiesraw[i].split(','); verticies[i] = new Vector3(loadMesh.cf(vals[0]), loadmesh.cf(vals[1]), loadmesh.cf(vals[2])); } string[] trianraw = param[1].split(','); triangles = new int[trianraw.length]; for (int i = 0; i < trianraw.length; i++) { triangles[i] = loadmesh.ci(trianraw[i]); } Kód 4.2: Funkcia parseinputfile 24

33 Názov súboru, ktorý sa načítava má názov podľa jeho zložitosti v percentách, pre jasnú identifikáciu zložitosti modela. Mimo tejto funkcie, trieda má na starosti aj ukladanie modela do súboru formátu asset a zmeny statusu Active, ktorý rozhoduje o zobrazení na scéne. V tejto časti nepracujeme priamo v okne editora Unity3D[9], ale v tzv. Editor Window, v ktorom sú obmedzené možnosti zobrazenia modela. Aby sme dosiahli tento cieľ, museli sme vytvoriť novú kameru vnútri Editor Window, nadefinovať jej základné parametre, aby bolo možné práve touto kamerou snímať objekty, ktoré vykreslíme pred jej zorné pole. Po nakonfigurovaní kamery je už len potrebné vykresliť model, vo vybranej zložitosti. 4.2 Implementácia prezentačnej časti V druhej časti aplikácie budeme vytvárať prezentačnú aplikáciu pre zobrazenie používateľovi, ktorý nemusí byť vývojár v Unity3D engine, procesom zmeny zložitosti načítaného modelu. Model sa bude načítavať zo servera, kde bude uložený v nami definovanom dátovom modeli. Oproti ako sme to implementovali v prvej časti, ktorú sme popisovali vyššie, zmena zložitosti bude spočívať načítaním segmentov modelu, ktoré budú zložitosť načítaného modelu zjednodušovať, alebo naopak, budú zložitosť zvyšovať. Nakoľko v tejto časti bude vznikať komunikácia medzi klientom a serverom, túto časť môžeme rozdeliť na dve časti: Klientská časť Serverová časť Klientská časť Pri programovaní klientskej časti sme používateľské grafické rozhranie zmenili iba minimálne oproti pôvodnému návrhu. Odstránili sme vstupné pole pre inicializačnú hodnotu, z dôvodu nepotrebnej funkcionality, ktorou pole disponovalo. Pribudli dve tlačidlá, z ktorých jedno bude slúžiť na resetovanie scény a druhé na načítanie resp. upload modela používateľom na server, kde sa model spracuje do nášho dátového modela, rozdelí sa na segmenty a následne sa uloží do filesystému servera. 25

34 Obr. 4.1: Grafické rozhranie Na obrázku (Obr. 4.1) vidíme používateľské grafické rozhranie, ktoré obsahuje tlačidlá, ktoré sú oproti pôvodnému návrhu navyše. Na vrchu sa nachádza drop down zoznam, ktorý obsahuje všetky modely nachádajúce sa na serveri. Pre toto načítanie sme vytvorili funkciu: public IEnumerator loadlistfromserver() { WWW listurl = new WWW(buttonOnClick.URL + "list.txt"); yield return listurl; if (listurl!= null){ string temp = listurl.text.replace("\n", ""); string[] meshlist = temp.split(';'); } } foreach(string s in meshlist) { if (s == "") continue; DD.options.Add(new Dropdown.OptionData(s)); } Kód 4.3: funkcia loadlistfromserver Vo vyššie zobrazenom kóde (Kód 4.3), môžeme vidieť posielanie dopytu na server. Unity3D[9] funkcia WWW zabezpečuje túto funkcionalitu, kde vracia obsah načítaného obsahu. Konkrétne pre náš prípad je to zoznam mien modelov uložených na server oddelenými bodkočiarkou. Načítaný a spracovaný list modelov následne zobrazujeme v už spomínanom drop down zozname. 26

35 4.2.2 Načítanie modela zo servera Načítanie už samotného modela je podobný proces tomu, ktorý načítava zoznam modelov. Tiež používame funkciu WWW, kde načítavame obsah súboru, ktorý obsahuje údaje o modeli v zadanej zložitosti. Základný model a jeho segmenty sú uložené v zložke, ktorá má názov rovnaký ako je názov modela. Samotné súbory obsahujúce údaje o modeli sú nazvané podľa ich zložitosti. Pre načítanie a samotné spracovanie sme použili triedy, ktoré sme už vytvorili v prvej časti aplikácie, akurát s menšími zmenami, aby sedeli s logikou komunikovania a so serverom. Pre načítanie modela zo servera sme vytvorili funkciu (Kód 4.4): private IEnumerator wwwrequest(string path) { WWW request = new WWW(path); yield return request; } if (request!= null) { LM.processMesh(request.text); drawmesh(lm.m); } Kód 4.4: Funkcia wwwrequest Už ako sme vyššie spomenuli, model je uložený na serveri spolu s jeho segmentmi, kde názov týchto súborov je percentuálna zložitosť modela. O načítavanie týchto segmentov sa stará posuvník (Obr. 4.2), ktorý dynamicky mení zložitosť načítaného modela. Obr. 4.2: Posuvník v GUI Posuvník pri každej zmene jeho hodnoty volá asynchrónnu funkciu, ktorá, ako pri prvotnom načítaní modela na scénu, posiela na server dopyt, a ten vracia dáta k vybranému modelu. Nakoľko sa jedná o segmenty modelu, táto funkcia je vykonávaná v slučke, ktorá postupne spúšťa túto funkciu, a teda model sa načítava postupne. Pri výkonávani tohto procesu sa na grafickom prostredí zobrazí hláška Loading. 27

36 4.2.3 Spracovanie modela a príprava na ukladanie na server Na uloženie používateľom vybraného 3D modela, je potrebné samotný model spracovať a uložiť ho do nami navrhnutého dátového modela. Dôvod, prečo sme pri implementácií takto postupovali, bol nedostupnosť takého servera, ktorý by sám zvládal tieto procesy. Preto časť sa vykoná ešte na strane klienta. Obr. 4.3: Formulár pre zaslanie modela na server Na obrázku (Kód 4.3) je zobrazené okno, ktoré slúži ako formulár pre zaslanie modela na server. Do zobrazeného vstupného pola po vložení absolútnej cesty a stlačení tlačidla, prebehne kontrola, či súbor, ktorý chce používateľ odoslať, existuje a či sa jedná o Wavefront OBJ[16] objekt a to kontrolou suffixu názvu súboru. Potom následné kontroly, či sa jedná už o podporovanú štruktúru, budú prebiehať pri parsovaní súboru. Proces ktorý bude prebiehať na strane klienta bude parsovanie modela vo formáte Wavefront OBJ[16]. Model by mal mať trojuholníkovú štruktúru, nakoľko táto štruktúra je podporovaná samotným enginom, a teda sme tak prispôsobili implementáciu tejto funkcionality. Unity3D[9] už má takúto funkcionalitu zaimplementovanú, ale využíva sa iba na načítanie modela na scénu editora, teda neponúka ju v skriptovacej API. Na základe tejto skutočnosti sme museli túto funkcionalitu zaimplementovať sami. 28

37 private void process(streamreader input){ string line; while (!input.endofstream){ line = input.readline(); if (line!= null){ string[] p = line.split(" ".ToCharArray()); switch (p[0]){ case "v": verticies.add(new Vector3(cf(p[1]), cf(p[2]), cf(p[3]))); break; case "f": List<int> intarray = new List<int>(); for (int i = 1; i < p.length; i++) { Vector3 temp = new Vector3(); string[] s = p[i].split("/"[0]); temp.x = System.Convert.ToInt32(s[0]); if (s.length > 1){ if (s[1]!= "") temp.y = System.Convert.ToInt32(s[1]); } if (s.length > 2) { if (s[2]!= "") temp.z = System.Convert.ToInt32(s[2]); } faces.add(temp); intarray.add(int.parse(s[0])-1); } } } for (int i = 1; i < (p.length-2) ; ++i){ triangles.add(intarray[0]); triangles.add(intarray[i]); triangles.add(intarray[i+1]); } break; Kód 4.5: Funkcia process V zobrazenom kóde (Kód 4.5) môžeme vidieť spracovanie údajov používateľom pridaného modelu. Štruktúra Wavefront OBJ[16] formátu vyzerá tak, že každý riadok súboru je definovaný na základe symbolu, ktorý sa nachádza na začiatku riadku. Symbol ktorý definuje údaje pre vrchol je V, pre steny resp. trojuholníky je F a pre názov modela symbol O. Samozrejme, v tomto formáte sa môžu nachádzať aj informácie o iných parametroch modela, ako napríklad normály alebo súradnice pre textúry. Avšak, tieto parametre nebolo potrebné ukladať do dátového modela, nakoľko s textúrami nepracujeme a normály si vieme vypočítať z už uložených údajov. Po spracovaní vstupného súbora do nášho dátového modelu nasleduje uloženie modela do základnej zložitosti a následne rozložiť model na segmenty po piatich percentách znižujúcej sa zložitosti. Pre tento proces sme použili algoritmus edge-collapse[3], ktorý 29

38 sme už opisovali v kategoríí Edge collapse. Algoritmus sa načíta do svojej dátovej štruktúry a následne vytvára segmenty načítaného modela. Pri získaní požadovaného výsledkov na základe požadovanej zložitosti sa model spracuje do koncovej štruktúry a postupne sa spracuje požiadavka, ktorá sa odošle na server. public IEnumerator sendrequest(string data = "", int percentage = 100){ if (data == "") data = buildmeshstring(); var form = new WWWForm(); form.addfield("data", data); form.addfield("name", name); form.addfield("perc", percentage); var www = new WWW(URL, form); yield return www; } if ( == null){ Debug.Log("Response: " + } else{ Debug.Log("WWW Error: " + } Kód 4.6: Funkcia sendrequest Vo vyššie zobrazenom kóde (Kód 4.6), je napísaná požiadavka, ktorá sa posiela na server. Pri spracovaní tejto požiadavky používame triedu WWWForm, ktorá sa nachádza v skriptovacej API Unity3D[9]. Trieda WWWForm spracuje vložené dáta, ktoré potom server vníma ako metódu požiadavky HTTP protokolu, POST. Vďaka tejto metóde dokáže server spracovať dáta ako dvojrozmerné pole. Každú informáciu do požiadavky vieme vložiť pomocou funkcie: public void AddField(string fieldname, string value); Kód 4.7: Funkcia AddField Funkcia AddField() (Kód 4.7) v prvom parametre príjma názov, ktorý bude služíť ako kľúč pre získanie informácie z pola požiadavky. Druhý parameter sú samotné údaje, ktoré chceme poslať serveru. Funkcia umožňuje posielanie dát iba ako dátový typ string alebo int. Po spracovaní údajov a pripravení požiadavky, sa inštancia triedy WWWForm pošle do konštruktora triedy WWW, ktorá je tým nástrojom, ktorý odošle požiadavku na server. 30

39 4.2.4 Serverová časť Pri implementácii kódu pre serverovú časť sme použili skriptovací jazyk PHP[11], ktorý pre podmienky, aké boli dostupné, bol najvyhovujúcejšou voľbou pre túto prácu. Pri implementácií bolo použité natívne PHP, teda neboli využívané žiadne rozšírenia alebo framework. Využívame ho hlavne pre ukladanie modelu, ktorý používateľ odoslal cez prezentačnú aplikáciu. Súbory budú ukladané do zložky, ktorá bola dočasne nazvaná obj_data. Zložka bude obsahovať podzložky s názvami ukladaných modelov a v nich už budú samotné modely resp. segment ukladaných modelov. Ďalšou úlohou serverovej časti bude aktualizovať list uložených modelov na serveri. Súbor je uložený spolu so zložkami modelov a jeho názov je list.txt. Dôvodom, prečo ukladáme tieto informácie do textového súboru aj napriek tomu, že je dostupná možnosť tieto informácie ukladať do databázy, je efektívnosť pri načítavaní listu do aplikácie. Táto záležitosť bude detailnejšie popísaná v sekcií Výsledky. <?php if (isset($_post['data'])){ $mesh_path = "obj_data/".$_post['name']; if (!file_exists($mesh_path)) mkdir($mesh_path, 0777, true); $newfile = fopen($mesh_path."/". $_POST['perc'].".bin", "w") or die("unable to open file!"); write($newfile, $_POST['data']); fclose($newfile); echo "Success!!! -> Mesh"; } else echo "Failed!!! -> Mesh"; Kód 4.8: Ukladanie modela na server Požiadavka, ktorá sa odosiela na server má tri údaje, prvý údaj data obsahujúce všetky informácie o modeli, teda súradnice jeho vrcholov a indexy vrcholov. Tieto údaje sa ukladajú na server pomocou funkcie fopen (Kód 4.8), ktorá vytvorí súbor, ak ešte neexistuje, a zapíše tieto informácie do vytvoreného súboru. Názov zložky, do ktorej sa súbor uloží je uložený ako ďalšia informácia v požiadavke. Táto informácia sa používa pri vytváraní zložky, ak sa jedná o nový model, ktorá ešte neexistuje. Posledný údaj, ktorý požiadavka obsahuje, je zložitosť v percentuálnej forme. Podľa tohto údaju sú nazvané ukladané súbory. 31

40 <?php if (isset($_post['list']){ $list_path = "obj_data/list.txt"; $listfile = fopen($list_path, "a+") or die("unable to open list!"); fwrite($listfile, $_POST['list']); fclose($listfile); echo "Success!!! -> List"; } else echo "Failed!! -> List "; Kód 4.9: Aktualizácia listu uložených modelov Pri písaní kódu pre aktualizovanie listu uložených modelov na serveri (Kód 4.9), sme využili rovnakú funkcionalitu ako pri ukladaní údajov o modeli. Rozdiel v tomto procese je ten, že nevytvárame nový súbor, len aktualizujeme už existujúci textový súbor. Preto pri otváraní tohto súboru sme pri funkcii fopen() (Kód 4.9) ako druhý parameter zvolili a+, ktorý ponechá existujúce dáta a doplní údaj, ktorý obsahuje názov modelu s deliminátorom bodkočiarkou, kvôli spracovaniu údajov do zoznamu v aplikácii. V obidvoch častiach spracovania požiadavky sme implementovali odozvy, ktoré aplikácia spracováva. V PHP[11] kóde sú to príkazy na výpis zvolenej hodnoty na obrazovku resp. do prehliadača. Ale pre aplikáciu sme to využili na úspešné uloženie, alebo problém, ktorý môže nastať pri zle odoslanej požiadavke, napr. chýbajúce informácie o modeli, chyba pri otváraní existujúceho súboru alebo chyba pri vytváraní nových súborov. Pri implementácií vznikli problémy s otváraním nových súborov. Po dôkladnom prechádzaní kódu sme zistili, že problém sa nenachádzal priamo v kóde, ale na serveri. Problém bol vyriešený nastavením práv pre čítanie a zapisovanie hlavnej zložky. 32

41 5. Výsledky V tejto kategórií popíšeme dosiahnuté výsledky, ktoré boli získané počas testovania aplikácie. Bolo aplikovaných niekoľko variant algoritmov pre získanie najlepšej efektivity a taktiež boli vykonané rôzne typy testovacích scenárov. 5.1 Edge collapse Prvé testovanie sme vykonávali na algoritme edge collapse. Dôležitou úlohou tejto funkcie je čo najpresnejšie zjednodušovať model, aby aj po výraznom zredukovaní polygónov model ostal nadaľej rozoznateľný. Proces, ktorý toto zabezpečuje, vykonáva výpočty pre hľadanie hrany pre samotný collapse. Tento výpočet môže byť navrhnutý tromi spôsobmi. Pre tento test som použil model zajaca, ktorého počet trojuholníkov je 890 trojuholníkov. Prvý spôsob bol porovnávanie vrcholov na základe len ich vzdialenosti. Druhý, kde porovnávanie vrcholov prebiehalo na základe skalárneho súčinu, a tretí kombináciou prvých dvoch metód, ktorý z vymenovaných dvoch priniesol najlepšie výsledky. Obr. 5.1:Testovanie Na obrázku (Obr. 5.1) môžeme vidieť porovnávanie metód porovnávania vrcholov na základe ich vzdialenosti s metódou (vľavo), ktorá vykazovala najlepšie výsledky (v pravo). Obidva modely boli zjednodušené na 30-percentnú zložitosť. Môžeme vidieť, že model na ľavo má výrazne horšiu štruktúru ako model na pravo. Hrany majú ostrejšie 33

42 a niektoré časti modela už nemôžeme resp. ťažšie rozoznávame od pôvodného stopercentného modelu. Obr. 5.2: Porovnávanie skalárnym súčinom Pri porovnávaní výsledkov metód hľadania vrcholu pre collapse na základe skalárneho súčinu a metód, ktorý kombinuje vyššie spomenuté metódy, sa vyskytli zaujímavé výsledky. Na obrázku (Obr. 5.2) je vidno značný rozdiel medzi výsledkami. Modely boli, ako aj v predošlom teste, zjednodušené na 30-percentnú zložitosť a môžeme vidieť, že model, na ktorom bola aplikovaná metóda hľadania vrcholu pre collapse na základe skalárneho súčinu, je vidno, že model má výrazne horšiu štruktúru oproti predošlému testu. Taktiež je vidieť, že niektoré časti modelu boli zjednodušené lepšie ako v predošlom teste. Na základe týchto testov môžeme usúdiť, že kombinácia testovaných dvoch metód je pre zjednodušenie modelu najlepšia, nakoľko z obrázkov môžeme vidieť, že model má lepšiu štruktúru a že model vieme rozoznať od pôvodného stopercentného modela. 5.2 Načítavanie modelov s rôznym počtom vrcholov a zložitosťou Ďalším predmetom na testovanie bola efektivita samotného algoritmu. Časy načítavania modelu sa odlišovali od toho, koľko mal model trojuholníkov a v akej zložitosti bol načítavaný. Samozrejme, logicky môžeme usúdiť, že čím je menej trojuholníkov alebo čím je menšia zložitosť, tým je doba načítania menšia. Avšak, bolo nutné otestovať, koľko bude aplikácii trvať vykonať tento proces. 34

kucharka exportu pro 9FFFIMU

kucharka exportu pro 9FFFIMU požiadavky na export kodek : Xvid 1.2.1 stable (MPEG-4 ASP) // výnimočne MPEG-2 bitrate : max. 10 Mbps pixely : štvorcové (Square pixels) rozlíšenie : 1920x1080, 768x432 pre 16:9 // výnimočne 1440x1080,

More information

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Obsah. SOA REST REST princípy REST výhody prest. Otázky REST Peter Rybár Obsah SOA REST REST princípy REST výhody prest Otázky SOA implementácie WEB (1990) CORBA (1991) XML-RPC (1998) WS-* (1998) SOAP RPC/literal SOAP Document/literal (2001) REST (2000) SOA

More information

Registrácia účtu Hik-Connect

Registrácia účtu Hik-Connect Registrácia účtu Hik-Connect Tento návod popisuje postup registrácie účtu služby Hik-Connect prostredníctvom mobilnej aplikácie a webového rozhrania na stránke www.hik-connect.comg contents in this document

More information

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Spájanie tabuliek Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Úvod pri normalizácii rozdeľujeme databázu na viacero tabuliek prepojených cudzími kľúčmi SQL umožňuje tabuľky opäť spojiť

More information

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára REPORT DESIGNER úprava formulárov v Money S4 / Money S5 Informačný systém Money S4/S5 umožňuje upraviť tlačové zostavy tak, aby plne vyhovovali potrebám používateľa. Na úpravu tlačových zostáv slúži doplnkový

More information

Databázové systémy. SQL Window functions

Databázové systémy. SQL Window functions Databázové systémy SQL Window functions Scores Tabuľka s bodmi pre jednotlivých študentov id, name, score Chceme ku každému doplniť rozdiel voči priemeru 2 Demo data SELECT * FROM scores ORDER BY score

More information

Copyright 2016 by Martin Krug. All rights reserved.

Copyright 2016 by Martin Krug. All rights reserved. MS Managed Service Copyright 2016 by Martin Krug. All rights reserved. Reproduction, or translation of materials without the author's written permission is prohibited. No content may be reproduced without

More information

VYLEPŠOVANIE KONCEPTU TRIEDY

VYLEPŠOVANIE KONCEPTU TRIEDY VYLEPŠOVANIE KONCEPTU TRIEDY Typy tried class - definuje premenné a metódy (funkcie). Ak nie je špecifikovaná inak, viditeľnosť členov je private. struct - definuje premenné a metódy (funkcie). Ak nie

More information

Spôsoby zistenia ID KEP

Spôsoby zistenia ID KEP Spôsoby zistenia ID KEP ID KEP (kvalifikovaný elektronický podpis) je možné zistiť pomocou napr. ovládacieho panela, prostredíctvom prehliadača Internet Expolrer, Google Chrome alebo Mozilla Firefox. Popstup

More information

Manuál k programu FileZilla

Manuál k programu FileZilla Manuál k programu FileZilla EXO TECHNOLOGIES spol. s.r.o. Garbiarska 3 Stará Ľubovňa 064 01 IČO: 36 485 161 IČ DPH: SK2020004503 support@exohosting.sk www.exohosting.sk 1 Úvod EXO HOSTING tím pre Vás pripravil

More information

Aplikačný dizajn manuál

Aplikačný dizajn manuál Aplikačný dizajn manuál Úvod Aplikačný dizajn manuál je súbor pravidiel vizuálnej komunikácie. Dodržiavaním jednotných štandardov, aplikácií loga, písma a farieb pri prezentácii sa vytvára jednotný dizajn,

More information

1 Komplexný príklad využitia OOP

1 Komplexný príklad využitia OOP 1 Komplexný príklad využitia OOP Najčastejším využitím webových aplikácií je komunikácia s databázovým systémom. Komplexný príklad je preto orientovaný práve do tejto oblasti. Od verzie PHP 5 je jeho domovskou

More information

Databázy (1) Prednáška 11. Alexander Šimko

Databázy (1) Prednáška 11. Alexander Šimko Databázy (1) Prednáška 11 Alexander Šimko simko@fmph.uniba.sk Contents I Aktualizovanie štruktúry databázy Section 1 Aktualizovanie štruktúry databázy Aktualizácia štruktúry databázy Štruktúra databázy

More information

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator Anycast Ľubor Jurena CEO jurena@skhosting.eu Michal Kolárik System Administrator kolarik@skhosting.eu O nás Registrátor Webhosting Serverové riešenia Správa infraštruktúry Všetko sa dá :-) Index Čo je

More information

Coordinates ordering in parallel coordinates views

Coordinates ordering in parallel coordinates views Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Coordinates ordering in parallel coordinates views Bratislava, 2011 Lukáš Chripko Univerzita Komenského v Bratislave Fakulta

More information

Poradové a agregačné window funkcie. ROLLUP a CUBE

Poradové a agregačné window funkcie. ROLLUP a CUBE Poradové a agregačné window funkcie. ROLLUP a CUBE 1) Poradové a agregačné window funkcie 2) Extrémy pomocou DENSE_RANK(), TOP() - Príklady 3) Spriemernené poradia 4) Kumulatívne súčty 5) Group By a Datepart,

More information

Riešenia a technológie pre jednotnú správu používateľov

Riešenia a technológie pre jednotnú správu používateľov Riešenia a technológie pre jednotnú správu používateľov Radovan Semančík Agenda Úvod: Identity Crisis Technológie správy používateľov Postup nasadenia Záver Súčasný stav IT Security Nekonzistentné bezpečnostné

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU. UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU Diplomová práca 2017 Bc. Denis Spišák UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA

More information

Entity Framework: Úvod

Entity Framework: Úvod Entity Framework: Úvod Martin Macák Fakulta informatiky, Masarykova univerzita, Brno 29. 9. 2016 Osnova prednášky 1. Základy Entity Frameworku 2. Návrh databázy (detailnejšie Code First prístup) 3. Migrácie

More information

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu Inštalačná príručka Obsah 1 Predpoklady pre inštaláciu D.Signer... 3 1.1 Inštalácia.NET Framework... 3 1.1.1 Windows 8, 8.1... 4 1.1.2

More information

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov D.4 Kontajner XML údajov (XMLDataContainer) Príloha č. 11 k výnosu č. 55/2014 Z. z. [pridaná novelou č. 275/2014 Z. z.,

More information

Vzory, rámce a webové aplikácie

Vzory, rámce a webové aplikácie Vzory, rámce a webové aplikácie Jakub Šimko jakub.simko@stuba.sk Návrhové vzory (načo slúžia?) 1. Dobré zvyky v programovaní 2. Riešia často sa opakujúce problémy praxou overeným spôsobom 3. Pomôžu nám

More information

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona Popis textového formátu a xsd schémy na zasielanie údajov podľa 27 ods. 2 písm. f) zákona (formu na zaslanie údajov si zvolí odosielateľ údajov) Textový formát na zasielanie údajov podľa 27 ods. 2 písm.

More information

Návod na odstránenie certifikátov so zrušenou platnosťou

Návod na odstránenie certifikátov so zrušenou platnosťou Návod na odstránenie certifikátov so zrušenou platnosťou Dátum zverejnenia: 7. 11. 2017 Verzia: 1 Dátum aktualizácie: Popis: Tento dokument je určený používateľom, ktorí elektronicky podpisujú dokumenty

More information

GeoGebra a JavaScript

GeoGebra a JavaScript GeoGebra a JavaScript GeoGebra and JavaScript Patrik Voštinár MESC: U70 Abstract The article deals with creating applets in mathematics software GeoGebra. GeoGebra contains a large number of tools that

More information

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca Obsah balenia TL-WR743ND Rýchly inštalačný sprievodca PoE injektor Napájací adaptér CD Ethernet kábel Systémové požiadavky

More information

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 851(01(Bra@slava Titl.: Ján(Hrčka Bohrova(11 851(01(Bra@slava V(Bra@slave(21.11.2013 Vec:(Odpoveď(na(informácie(ohľadom(mandátnej(zmluvy(na(základe(Zákona(č.(211/2000(Zb.

More information

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP Recipient Configuration Štefan Pataky MCP, MCTS, MCITP Agenda Mailbox Mail Contact Distribution Groups Disconnected Mailbox Mailbox (vytvorenie nového účtu) Exchange Management Console New User Exchange

More information

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga. Ochrana koncových staníc pomocou Cisco Security Agent 6.0 Ľubomír Varga lubomir.varga@lynx.sk Agenda CSA 6.0 refresh Vybrané vlastnosti CSA 6.0 Application Trust levels Notify User Rule Actions User Justifications

More information

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová Ochrana proti DDoS za použitia open-source software Katarína Ďurechová katarina.durechova@nic.cz 30.11.2013 Distributed Denial of Service odopretie služby dosiahnutím limitu pripojenia sieťovej karty CPU

More information

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) I2AI: Lecture 04 Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) Lubica Benuskova Reading: AIMA 3 rd ed. chap. 6 ending with 6.3.2 1 Constraint satisfaction problems (CSP) We w

More information

prest framework pre webové aplikácie a služby

prest framework pre webové aplikácie a služby prest framework pre webové aplikácie a služby Peter Rybár Centaur s.r.o. Situácia v korporátnej sfére Dominuje technológia a nie architektúra Situácia na Webe Dominuje architektúra ROA REST štýl softvérovej

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY 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

More information

Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia

Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia ESF 2007 D. Ševčovič Katedra aplikovanej matematiky a štatistiky, Univerzita Komenského, 842 48 Bratislava http://www.iam.fmph.uniba.sk/institute/sevcovic

More information

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Jazyk SQL Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Jazyk SQL - Structured Query Language SQL je počítačový jazyk určený na komunikáciu s relačným SRBD neprocedurálny (deklaratívny) jazyk

More information

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky. Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky. Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti Bakalárska práca 2016 Zuzana Majeríková Univerzita

More information

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec Problém Big Data a ako ho riešiť pomocou NoSQL Ján Zázrivec Softec Dáta dnešného sveta Oblasti kde sa spracováva veľké množstvo dát: Internet Web vyhľadávače, Sociálne siete Veda Large Hadron Collider,

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULITMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

More information

Informatika 2. Generiká

Informatika 2. Generiká Informatika 2 Generiká Pojmy zavedené v 10. prednáške (1) štandardný vstup a výstup textové súbory binárne súbory objektové prúdy Informatika 2 1 Pojmy zavedené v 10. prednáške (2) objektové prúdy nečitateľné

More information

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém Crestron Mercury Univerzálny Videokonferenčný a Kolaboračný systém Tradičná malá zasadacia miestnosť CRESTRON Mercury Videokonferenčná miestnosť Možnosť rezervácie miestnosti: Prostredníctvom MS Outlook

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia dec.16 nov.16 okt.16 sep.16 aug.16 júl.16 jún.16 máj.16 apr.16 mar.16 feb.16 jan.16 Internetová populácia SR 12+ 3 728 988 3 718 495 3 718 802 3 711 581 3 700

More information

Tvorba informačných systémov. 4. prednáška: Návrh IS

Tvorba informačných systémov. 4. prednáška: Návrh IS Tvorba informačných systémov 4. prednáška: Návrh IS Návrh informačného systému: témy Ciele návrhu ERD DFD Princípy OOP Objektová normalizácia SDD Architektonické pohľady UML diagramy Architektonické štýly

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia mar.18 feb.18 jan.18 dec.17 nov.17 okt.17 sep.17 aug.17 júl.17 jún.17 máj.17 apr.17 mar.17 Internetová populácia SR 12+ 3 904 509 3 802 048 3 870 654 3 830

More information

Absolvování individuální odborné praxe Individual Professional Practice in the Company

Absolvování individuální odborné praxe Individual Professional Practice in the Company VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Absolvování individuální odborné praxe Individual Professional Practice in the Company 2014 Peter Slivoš Prehlasujem,

More information

DOPLNĚK PRO PROHLÍŽEČE PRO DETEKCI A ZP- RACOVÁNÍ AUDIO A VIDEO STREAMŮ BROWSER EXTENSION FOR AUDIO/VIDEO STREAM PROCESSING

DOPLNĚK PRO PROHLÍŽEČE PRO DETEKCI A ZP- RACOVÁNÍ AUDIO A VIDEO STREAMŮ BROWSER EXTENSION FOR AUDIO/VIDEO STREAM PROCESSING 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

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY POKROČILÝ MERAČ ČASU BAKALÁRSKA PRÁCA.

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY POKROČILÝ MERAČ ČASU BAKALÁRSKA PRÁCA. UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY POKROČILÝ MERAČ ČASU BAKALÁRSKA PRÁCA 2017 Matej Buzáš UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

More information

3D Modelovanie a vizualizácia matematických dát

3D Modelovanie a vizualizácia matematických dát SVOČ 2013 Opava 3D Modelovanie a vizualizácia matematických dát Meno Priezvisko študenta: Škola: Fakulta: Ročník a program/odbor štúdia: Vedúci práce: Katedra: Balázs Kósa Slovenská technická univerzita

More information

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals... Desatinné čísla #1a Mravec išiel 5,5 cm presne na sever, potom 3,4 cm na východ, 1,8 cm na juh, 14,3 cm na západ, 1,3 cm na sever a 10,9 cm na východ. Najmenej koľko cm musí teraz prejsť, aby sa dostal

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS JEDÁLNY LÍSTOK

More information

MERANIE SOFTVÉRU. Jakub Šimko MSI

MERANIE SOFTVÉRU. Jakub Šimko MSI Slovenská Technická Univerzita v Bratislave Fakulta Informatiky a Informačných Technológií Jakub Šimko jsimko@fiit.stuba.sk MERANIE SOFTVÉRU 9.10.2012 MSI Meranie a metriky Kto by mal dávať pozor? Predsa

More information

JAVA. Sieťové programovanie

JAVA. Sieťové programovanie JAVA Sieťové programovanie Sieťové programovanie Sieťová knižnica jazyka JAVA bola vytvorená podľa súborovej knižnice Zapúzdrovanie pripojení do streamov Multithreading Identifikácia počítača Každý počítač

More information

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV NIKY a NIKY S JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ ŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV Ideálna ochrana pre malé kancelárie a domáce kancelárske aplikácie. Tento rad ponúka

More information

Nové komunikačné trendy v dátových centrách

Nové komunikačné trendy v dátových centrách Nové komunikačné trendy v dátových centrách Martin Vozár Roman Benko 25. november 2009 Cisco Expo, Bratislava Agenda 1. Konvergovaná architektúra 2. Komponenty architektúry 3. AVNET demo LAB 2 / 17 Konvergovaná

More information

Aplikácia k určovaniu rastlín pre platformu ios

Aplikácia k určovaniu rastlín pre platformu ios Mendelova univerzita v Brně Provozně ekonomická fakulta Aplikácia k určovaniu rastlín pre platformu ios Bakalárska práca Vedúci práce: Ing. Dita Dlabolová Jakub Kozák Brno 2014 Na tomto mieste by som

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY APLIKACE PRO TVŮRČÍ PSANÍ AN APPLICATION FOR CREATIVE WRITING

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY APLIKACE PRO TVŮRČÍ PSANÍ AN APPLICATION FOR CREATIVE WRITING VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS APLIKACE PRO TVŮRČÍ

More information

POKROČILÉ C++ Marian Vittek

POKROČILÉ C++ Marian Vittek POKROČILÉ C++ Marian Vittek vittek@fmph.uniba.sk O predmete Pôvodne seminár Teraz normálna prednáška so skúškou/testom Predmetom kurzu je detailnejší pohľad na jazyk C++ a občasné porovnanie s inými programovacími

More information

Xamarin písanie Android a ios aplikácií v C#

Xamarin písanie Android a ios aplikácií v C# www.dotnetcollege.cz Xamarin písanie Android a ios aplikácií v C# Roman Jašek Software Architect, Riganti s.r.o. MSP, MCP roman.jasek@riganti.cz Xamarin vs. Xamarin Forms ios C# UI Android C# UI Windows

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY. Moderné trendy pri tvorbe webových aplikácií

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY. Moderné trendy pri tvorbe webových aplikácií UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY Moderné trendy pri tvorbe webových aplikácií Bratislava 2007 Miloš Homola Moderné trendy pri tvorbe webových aplikácií DIPLOMOVÁ

More information

Databázové systémy. 10. prednáška. NoSQL databázy Viktor Škultéty, ESTEN s.r.o.

Databázové systémy. 10. prednáška. NoSQL databázy Viktor Škultéty, ESTEN s.r.o. Databázové systémy 10. prednáška NoSQL databázy 26.4.2016 Viktor Škultéty, ESTEN s.r.o. 1 Prečo doteraz SQL a zrazu NoSQL? NoSQL - Not Only SQL znamená, že relačné systémy sú síce osvedčená technológia

More information

Triedy v C++ 1. Úvod do tried

Triedy v C++ 1. Úvod do tried 1. Úvod do tried Používanie nového dátového typu ktorý budeme oht class trieda nás dovedie k využívaniu objektových vlastností jazyka C++. Tento nový typ programov OOP objektovo orientované programovanie

More information

Tvorba webových interaktívnych aplikácií pomocou nástroja Silverlight Interactive web applications using the Silverlight

Tvorba webových interaktívnych aplikácií pomocou nástroja Silverlight Interactive web applications using the Silverlight Bankovní institut vysoká škola Praha Zahraničná vysoká škola Banská Bystrica Katedra kvantitatívnych metód a informatiky Tvorba webových interaktívnych aplikácií pomocou nástroja Silverlight Interactive

More information

Využití technologie Angular2 při vývoji webových aplikací. Bc. Juraj Štefan

Využití technologie Angular2 při vývoji webových aplikací. Bc. Juraj Štefan Využití technologie Angular2 při vývoji webových aplikací Bc. Juraj Štefan Diplomová práce 2017 ABSTRAKT Táto diplomová práca sa zaoberá návrhom a vývojom webovej aplikácie použitím prístupu MEAN stack.

More information

Databázy (1) Prednáška 08. Alexander Šimko

Databázy (1) Prednáška 08. Alexander Šimko Databázy (1) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Subqueries (poddopyty) konštrukcia WITH Section 1 Subqueries (poddopyty) Subquery (poddopyt) Použitie SELECTu na mieste, kde sme

More information

Aplikácia na prezentovanie multimediálneho obsahu na TV

Aplikácia na prezentovanie multimediálneho obsahu na TV Masarykova univerzita Fakulta informatiky Aplikácia na prezentovanie multimediálneho obsahu na TV Diplomová práca Bc. Marián Varaga Brno, jar 2017 Namiesto tejto stránky vložte kópiu oficiálneho podpísaného

More information

e-scheme Návod na použitie

e-scheme Návod na použitie e-scheme Návod na použitie Pár krokov ako používať program Otvorte webovú stránku http://www.labquality.fi/eqa-eqas/ Kliknite na Login to LabScala Username: zadajte váš laboratórny kód Password: zadajte

More information

SYSTÉM NA EVIDENCIU A KATEGORIZÁCIU

SYSTÉM NA EVIDENCIU A KATEGORIZÁCIU FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO BRATISLAVA Bakalárska práca SYSTÉM NA EVIDENCIU A KATEGORIZÁCIU ŠTANDARDIZAČNÝCH MATERIÁLOV Eva Porvazníková vedúci bakalárskej práce: Doc.

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Diagramatická konverzia súborov 2014 János Farkas UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFOMATIKY

More information

WEBOVÁ PLATFORMA PRE TVORBU HIER WEB PLATFORM FOR GAME DEVELOPMENT

WEBOVÁ PLATFORMA PRE TVORBU HIER WEB PLATFORM FOR GAME DEVELOPMENT VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS WEBOVÁ PLATFORMA

More information

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit. Fiber 5 Mbit ** 5 Mbit / Mbit 5,90 Fiber 50 Mbit * 50 Mbit / 8 Mbit 9,90 Fiber 80 Mbit * 80 Mbit / Mbit 5,90 Mini Mbit* Mbit / Mbit 9,90 Klasik 2 Mbit* 2 Mbit / 2 Mbit Standard 8 Mbit* 8 Mbit / 3Mbit Expert

More information

Testovanie bieleho šumu

Testovanie bieleho šumu Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N

More information

Knižnica (framework) pre kreslenie grafov

Knižnica (framework) pre kreslenie grafov Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Katedra informatiky Knižnica (framework) pre kreslenie grafov Diplomová práca Bc. Tomáš DRIMAL Študijný odbor: 9.2.1 Informatika

More information

NÁVRH A REALIZÁCIA WEBOVEJ APLIKÁCIE FINANCOVANIE POLITICKÝCH STRÁN

NÁVRH A REALIZÁCIA WEBOVEJ APLIKÁCIE FINANCOVANIE POLITICKÝCH STRÁN Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky NÁVRH A REALIZÁCIA WEBOVEJ APLIKÁCIE FINANCOVANIE POLITICKÝCH STRÁN Bakalárska práca 2017 Tomáš Sláma Univerzita Komenského v

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY 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

More information

Automatizované testování webových aplikací. Gabriel Ečegi

Automatizované testování webových aplikací. Gabriel Ečegi Automatizované testování webových aplikací Gabriel Ečegi Bakalářská práce 2017 ABSTRAKT Témou tejto bakalárskej práce je popis moderného prístupu k testovaniu webových aplikácií. V teoretickej časti

More information

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK Karol Schütz, S&T Slovakia Agenda Časť Časť Časť Časť Časť Časť Časť 1 Aký je súčasný stav v oblasti ukladania dát 2 Aké sú požiadavky na súčasný storage 3 Aké sú technologické

More information

JEDNODUCHÝ IS PRO MOBILNÍ TELEFONY PRO EVIDENCI HOVORŮ SIMPLE MOBILE PHONE IS FOR CALL EVIDENCE

JEDNODUCHÝ IS PRO MOBILNÍ TELEFONY PRO EVIDENCI HOVORŮ SIMPLE MOBILE PHONE IS FOR CALL EVIDENCE VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS JEDNODUCHÝ IS

More information

CUIT. Coded UI Testing

CUIT. Coded UI Testing CUIT Coded UI Testing 1 Autor: Ing. Peter Kováč Kontakt: kovac.peter1@centrum.sk Dátum vydania: 2018 2 Obsah 1 Testovanie...5 1.1 Rozdelenie testovania... 6 2 Automatizované testy...9 2.1 Výhody a nevýhody

More information

Server pre systém na detekciu indikátorov kompromitácie

Server pre systém na detekciu indikátorov kompromitácie Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Server pre systém na detekciu indikátorov kompromitácie Bakalárska práca 2016 Michal Fikar Univerzita Komenského v Bratislave

More information

BODY PRÍPADOV POUŽITIA ALEBO AKO MERAŤ SOFTVÉR

BODY PRÍPADOV POUŽITIA ALEBO AKO MERAŤ SOFTVÉR BODY PRÍPADOV POUŽITIA ALEBO AKO MERAŤ SOFTVÉR Pre efektívne riadenie celého projektu je potrebné merať jeho veľkosť Ondrej Jurčák Slovenská technická univerzita Fakulta informatiky a informačných technológií

More information

POROVNANIE GUI VYBRANÝCH SOFTVÉROVÝCH NÁSTROJOV

POROVNANIE GUI VYBRANÝCH SOFTVÉROVÝCH NÁSTROJOV UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY POROVNANIE GUI VYBRANÝCH SOFTVÉROVÝCH NÁSTROJOV Bakalárska práca Stanislav Párnický 2013 UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA

More information

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1 VLSM a CIDR CCNA2 Kapitola 6 1 Trošku histórie Pred rokom 1981 IP adresy používali na špecifikáciu siete len prvých 8 bitov Rok1981, RFC 791 Zaviedol adresný priestor s tromi triedami adries Polovica 90

More information

SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, BRATISLAVA 4

SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, BRATISLAVA 4 SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, 842 16 BRATISLAVA 4 TÍM 13 SIMULÁCIA DEMONŠTRÁCIE V MESTE DEVELOPERSKÁ PRÍRUČKA Vedúci projektu: Ing. Ivan Kapustík

More information

REALIZÁCIA VIRTUÁLNEHO LABORATÓRIA S VYUŽITÍM XPC TARGET-u

REALIZÁCIA VIRTUÁLNEHO LABORATÓRIA S VYUŽITÍM XPC TARGET-u REALIZÁCIA VIRTUÁLNEHO LABORATÓRIA S VYUŽITÍM XPC TARGET-u I. Masár Department of Electrical Engineering Control Systems Engineering Group, University of Hagen Universitätsstr. 27, 580 97 Hagen, Germany

More information

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA ELEKTROTECHNIKY A INFORMATIKY. Elektronická zbierka príkladov pre predmety Fyzika I a Fyzika II

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA ELEKTROTECHNIKY A INFORMATIKY. Elektronická zbierka príkladov pre predmety Fyzika I a Fyzika II SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA ELEKTROTECHNIKY A INFORMATIKY Elektronická zbierka príkladov pre predmety Fyzika I a Fyzika II BAKALÁRSKA PRÁCA FEI-5382-17512 2011 Andrej FARAGA SLOVENSKÁ

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS

More information

ZÁSUVNÝ MODUL PRO CODE::BLOCKS REALIZU-

ZÁSUVNÝ MODUL PRO CODE::BLOCKS REALIZU- VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS ZÁSUVNÝ MODUL

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION ÚSTAV TELEKOMUNIKACÍ DEPARTMENT OF TELECOMMUNICATIONS

More information

Programovanie v jazyku Python. Michal Kvasnica

Programovanie v jazyku Python. Michal Kvasnica Programovanie v jazyku Python Michal Kvasnica Organizačné detaily Prednášky aj cvičenia v 638 Povinná účasť na cvičeniach Hodnotenie: priebežné odovzdávanie zadaní (40% známky) záverečný projekt na skúške

More information

Databázy (2) Prednáška 08. Alexander Šimko

Databázy (2) Prednáška 08. Alexander Šimko Databázy (2) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Funkcie Zložené typy PL/pgSQL Agregačné funkcie Funkcie Section 1 Funkcie Funkcie PostgreSQL umožňuje vytvoriť si vlastné databázové

More information

Refaktorovanie jazyka JavaScript a DHTML

Refaktorovanie jazyka JavaScript a DHTML Univerzita Komenského Fakulta Matematiky, Fyziky a Informatiky Ústav Informatiky Marián Marcinčák Refaktorovanie jazyka JavaScript a DHTML Diplomová práca Školiteľ : RNDr. Marián Vittek, PhD. Bratislava

More information

Xerox PARC the office of the future. Michal Winczer

Xerox PARC the office of the future. Michal Winczer Xerox PARC 1970-80 the office of the future Michal Winczer Čo to je? Kde to je? PARC = Palo Alto Research Center Čo bolo pred tým Vojna vo Vietname Hnutie hippies Úspechy XEROXu s kopírkami Neexistencia

More information

Mapový portál projektu

Mapový portál projektu Univerzitný vedecký park UK v Bratislave Enviro-medicína pre 21. storočie geografický info-systém a environmentálne zdravie apový portál projektu používateľská príručka verzia 20150930 Podporujeme výskumné

More information

Portál pre odborné publikovanie ISSN

Portál pre odborné publikovanie ISSN 1 Portál pre odborné publikovanie ISSN 1338-0087 PRADO framework Liner Lukáš Informačné technológie, Študentské práce 08.02.2013 PRADO framework je objektovo orientovaný framework, určený na rýchly vývoj

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií DIPLOMOVÁ PRÁCE

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií DIPLOMOVÁ PRÁCE VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií DIPLOMOVÁ PRÁCE Brno, 2016 Bc. Michal Paulech VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY

More information

INFORMAČNÍ SYSTÉM PRO MĚŘIČE ENERGIÍ

INFORMAČNÍ SYSTÉM PRO MĚŘIČE ENERGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION

More information

WEBOVÝ MODUL NA SPRÁVU DOVOLENKY

WEBOVÝ MODUL NA SPRÁVU DOVOLENKY WEBOVÝ MODUL NA SPRÁVU DOVOLENKY Róbert Lanák Ústav informatizácie, automatizácie a matematiky Oddelenie informatizácie a riadenia procesov Fakulta chemickej a potravinárskej technológie Slovenská Technická

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY PREVÁDZKA PORTÁLU PROJEKTOV VÝUKOVEJ ROBOTIKY CENTROBOT Bakalárska práca 2015 Denis Spišák UNIVERZITA KOMENSKÉHO V BRATISLAVE

More information

Analýza a vizualizácia veľkých dát

Analýza a vizualizácia veľkých dát MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Analýza a vizualizácia veľkých dát DIPLOMOVÁ PRÁCA Bc. Jakub Caban Brno, 2015 Prehlásenie Prehlasujem, že táto diplomová práca je mojím pôvodným autorským dielom,

More information

Platforma průmyslové spolupráce

Platforma průmyslové spolupráce Platforma průmyslové spolupráce CZ.1.07/2.4.00/17.0041 Název CEP portál pro simulaci Popis a využití komplexní zpracování událostí (CEP) aplikace pro spouštění CEP pravidel a sledování výstupů na předpřipraveném

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY. Fakulta informačních technologií Faculty of Information Technology

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY. Fakulta informačních technologií Faculty of Information Technology VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY Fakulta informačních technologií Faculty of Information Technology BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS Brno, 2016 Tomáš Kello VYSOKÉ UČENÍ TECHNICKÉ

More information