ÚINF/SPG1/05 - Seminár z počítačovej grafiky
Cieľ predmetu: Formou seminárnych prác priblížiť súčasné techniky programovania v prostredí OpenGL (informačný list).
Na tomto seminári by sme sa mali spoločne prepracovať od základnej práce s 3D grafikou, ktorá bola obsahom predmetu UGR1, k zložitejším technikám využívaným v dnešenej počítačovej grafike. Okrem samotnej technickej stránky jednotlivých postupov bude podstatné aj na "vlastné oči" uviditeť ich prejavy. To sa v minulosti ukázalo ako nerelálne pri využití "nahého" OpenGL, keďže často ide o programátorsky netriviálne algoritmy. Preto som sa tento rok rozhodol využiť dva ťažkotonážne 3D enginy, ktoré urobia otrockú prácu za nás. Pôjde o Ogre3D a NeoAxis.
Ogre3D je dnes asi najpopulárnejší open-source 3D engine s veľkou komunitou a podporou. Je napísaný v C++ a jeho sila tkvie hlavne v kvalitnom objektovom návrhu. Preto by s ním nemali mať problém ani ľudia odchovaní na Jave alebo iných OOP technológiách a na nich naviazaných návrhových vzoroch. S týmto enginom, konkrétne s verziou 1.8.1, budeme pracovať v prvej polovici semestra a až na jednu výnimku budeme využívať jeho vstavané vlastnosti.
V druhej polovici semestra sa posunieme ešte o stupienok vyššie v abstrakcii a siahneme po modernom "AAA" engine NeoAxis. Ten je pôvodne založený na Ogre3D, preto by sme nemali mať žiaden problém s prechodom, no prináša nám niekoľko veľmi užitocných nadstavieb. Je napísaný v C sharp a najmenší odpor kladie, ak sa s ním pracuje vo Visual C sharp od Microsoftu. Napriek tomu je plne kompatibilný s Mono-m a beží teda na Mac OS X a čoskoro bude asi aj na GNU/Linux, Androide a iOS. Niektori študenti s odporom k technológiám od firmy Microsoft môžu v tomto prípade namietať, no voľba práve tohto enginu mi vďaka jeho minulosti spojenej s Ogre3D a taktiež kvalitnému objektovému návrhu pripadala ako najlepšia vzhľadom na jeho možnosti a zameranie seminára.
Cieľom seminára by malo byť osvojenie si moderných princípov študentami prostredníctvom ich aktívneho zapojenia sa do vyučovacieho procesu. Každý zo študentov by si mal pripraviť vyčerpávajúcu prezentáciu ku jednej z tém a odprezentovať ju ostatným účastníkom seminára takým spôsobom, aby na konci semestra mali všetci dobrý prehľad o všetkých preberaných technológiách a ideálne ich aj vedieť využívať. Okrem toho by sa mala riešiť seminárna práca vo forme projektov (jednotlivo alebo v skupinách), ktoré budú mať formu hry alebo iného 3D softvéru. Úspešný absolvent seminára bude musieť prispieť aspoň do jedného projektu nezanedbateľným zdrojovým kódom.
Otázky a pripomienky zasielajte na email samuel.kupka@upjs.sk.
Súbory na stiahnutie
- Na prvom seminári budeme využívať softvér z UGR1: Súbory na stiahnutie
- Druhá a tretia téma bude venovaná Ogre3D, konkrétne verzii 1.8.1: http://www.ogre3d.org/download/sdk
- Zvyšok semináru venujeme NeoAxis enginu, verzii 1.32, ktorého nekomerčné SDK si môžete stiahnuť na stránke: http://www.neoaxis.com/neoaxis/downloads
- Ako vývojové prostredie použijeme Microsoft Visual Studio 2010, konkrétne C++ a C sharp. Express verziu si môžete stiahnuť zdarma na adrese https://www.microsoft.com/visualstudio/eng/downloads
Obsah jednotlivých seminárov
- 11.02.2013 : Prednáška - Úvodné stretnutie, rekapitulácia OpenGL
- Na tomto stretnutí by sa mali vyriešiť hlavne organizačné záležitosti, teda rozdeliť si jednotlivé témy, vybrať projekty a ich riešiteľov. Taktiež si pripomenieme prácu s OpenGL a zrhnieme vedomostí z predmetu UGR1.
- 18.02.2013 : Diskusia - Rozdelenie projektov
- Na tomto stretnutí by malo dôjsť k rozdeleniu projektov a študentov do jednotlivých tímov, definovanie cieľov a samotného vývoja.
- 25.02.2013 : Seminár - Ogre3D - Základné možnosti osvetlenia a tieňov, statické modely, materiály
- Ogre3D oproti OpenGL prináša možnosti na jednoduchú prácu s 3D prostredím, pričom jeho návrh priamo vychádza z nižšej vykresľovacej vrstvy (buď OpenGL alebo Direct3D). Prechod od OpenGL k Ogre3D by mal byť preto bezbolestný. Cieľom je ukázať možnosti pri práci so základným osvetlením a tieňmi, ktoré nájdeme už v základe. Aby sme mali čo osvetlovať, začneme používať jednoduché modely s materiálmi. Cieľom by nemalo byť ukázať len samotné technické spracovanie v Ogre3D, ale vysvetliť aj samotné princípy a myšlienky skryté za týmito technológiami.
- Riešiteľ: Matej Nikorovič
- Zdroje: http://s.ics.upjs.sk/~mnikorovic/ -> Predmety -> Seminar z pocitacovej grafiky
- 04.03.2013 : Seminár - Ogre3D - Riešenie viditeľnosti v zložitých scénach pomocou BSP a Octree, paged geometry
- Málokedy je možné vykresliť úplne celú scénu, preto existuje niekoľko techník, ktoré umožňujú rýchlo a efektívne zistiť, čo všetko je vlastne v danom momente skutočne viditeľné a čo nie. Každa technika je vhodná na iný typ scény.
- Riešiteľ: Július Pál
- Zdroje: http://s.ics.upjs.sk/~jpal/spg/index.html
- 11.03.2013 : Prednáška - Úvod do NeoAxis
- Z C++ presedláme na C# a na engine NeoAxis. Ukážeme si základy práce s nástrojmi, ktoré ponúka a prejdeme si štruktúru tried.
- 18.03.2013 : Diskusia - Mesiac po ...
- Prešiel mesiac od rozdelenie projektov, takže na tomto stretnutí by mal každý riešiteľ porozprávať o svojom doterajšom snažení, úspechoch ale aj zlyhaniach a predostrieť plány na ďalší vývoj.
- 25.03.2013 : Seminár - NeoAxis - Fyzikálny model, kolízie, bullet, particle system
- V reálnom svete sme obklopení fyzikálnymi objektami, s ktorými neustále interagujeme. Vo svete počítačových simulácii a hlavne hier ide však stále o pomerne zanedbaný a pre mnohých vývojárov doslova strašidelný aspekt vývoja 3D sveta. Na druhú stranu, dnes už máme k dispozícii niekoľko kvalitných nástrojov, ktoré nám môžu pomôcť s oživením fyziky. NeoAxis nám ponúka prácu s dvoma z nich.
- Riešiteľ: Ľubomír Nagajda
- 08.04.2013 : Seminár - NeoAxis - Animované 3D modely, skeletal animation, ragdoll
- Animované modely prinášajú vyššiu úroveň realizmu do našich projektov. Práca s nimi je však omnoho náročnejšia, ako s modelmi statickými, kedže nám nestačí riešiť iba spôsob vykreslenia a umiestnenia na mape, ale taktiež súhru animácie s dianím vo svete a ich vzájomné prelínanie. Nakoniec by sme sa mali snažiť prepojiť animácie s fyzikálnym modelom postavy a dosiahnuť tak skutočnú interakciu so svetom.
- Riešiteľ: Vladimír Chabaľ
- 15.04.2013 : Seminár - NeoAxis - Riešenie viditeľnosti pomocou portálov, grid-based path finding
- V Ogre3D sme si ukázali riešenie viditeľnosti pomocou BSP a Octree. Dnes k nim pridáme ďalšiu techniku, ktorá sa už dlhé roky používa v hrách odohrávajúcich sa v rozsiahlych interiéroch. Sú ňou portály. Vďaka ním sa nám podarí efektívne vykresliť a pohybovať sa obrovskou spleťou chodieb a hál. Ako sa v nich však vyznať a vždy nájsť správnu cestu? Na to nám poslúži grid-based hľadanie cesty.
- Riešiteľ: Stanislav Jakubec
- 22.04.2013 : Diskusia - Teraz to začne
- Máme za sebou celú teoretickú časť seminára a odteraz by sa mali všetci riešitelia naplno venovať projektom. Odteraz sa budú definovať a vyhodnocovať týždenné ciele.
- 29.04.2013 : Diskusia - Prvý týždeň
- Prezentácia týždennej práce.
- 06.05.2013 : Diskusia - Druhý týždeň
- Prezentácia týždennej práce.
- 13.05.2013 : Prezentácia - Záverečné vyhodnotenie projektov
- Každý tím by mal prezentovať výsledky svojho dvojmesačného snaženia.
Podmienky na udelenie hodnotenia
- Účasť na ostro viac ako 50% uskutočnených seminárov (uskutočnený seminár je vtedy, ak sa na neho dostaví vyučujúci)
- Úspešné odprezentovanie pridelených tém (téma je odprezentovaná, ak sa všetci poslucháči zhodnú, že pochopili danú problematiku, boli dodané fungujúce príklady a téma bola dostatočne vyčerpaná - posúdi vyučujúci)
- Prispieť nezanedbateľným kódom do riešeného projektu