Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Počítačová grafika, vidění a vývoj her
Garantující pracoviště: Katedra softwaru a výuky informatiky Koordinátor specializace: RNDr. Josef PelikánSpecializace Počítačová grafika, vidění a vývoj her je určena studentům se zájmem o vizuální obory informatiky – syntézu obrazu, analýzu obrazu a programování počítačových her. V magisterském studiu potom mohou navázat studiem oboru Vizuální výpočty a vývoj počítačových her, kde se budou věnovat svému oboru ještě více do hloubky. Již absolvování bakalářské specializace však postačí k dobrému uplatnění v praxi (podle jednotlivých zaměření):
- –
Návrh a vývoj grafických aplikací, například
vizuálních efektů nebo fotorealistické visualizace (postprodukční týmy,
architektonické visualizace, vývoj realistických herních enginů a shaderů, apod.)
- – Uplatnění všude tam, kde se využívá digitální zpracování obrazu a počítačové vidění (strojírenský a elektrotechnický průmysl, vývoj robotických systémů, medicína, ochrana a bezpečnost, automatická kontrola, dálkový průzkum Země, apod.)
- – Vývoj počítačových her na mnoha úrovních (programátor herního engine, GPU programátor /shadery/, nástroje pro přípravu obsahu hry, logika hry, programování a konfigurace herní umělé inteligence, příprava dat /levelů/ hry, apod.)
- – Uplatnění všude tam, kde se využívá digitální zpracování obrazu a počítačové vidění (strojírenský a elektrotechnický průmysl, vývoj robotických systémů, medicína, ochrana a bezpečnost, automatická kontrola, dálkový průzkum Země, apod.)
Studijní specializace Počítačová grafika, vidění a vývoj her nabízí následující zaměření:
- –
Počítačová grafika
- – Počítačové vidění
- – Vývoj počítačových her
- – Počítačové vidění
Pro všechna zaměření platí stejné podmínky studia, stejné povinné a povinně volitelné předměty a společné tři zkušební okruhy bakalářské státní závěrečné zkoušky (jedná se o okruhy 1. až 3. – viz níže). Jednotlivá zaměření pak mají odlišné zkušební okruhy přizpůsobené požadavkům svých disciplin.
Povinné předměty programu Informatika
Povinné předměty společné pro všechny specializace jsou uvedeny v předchozí části.
Povinné předměty specializace
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NMAI055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — |
Povinně volitelné předměty
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 43 kreditů za povinně volitelný předměty. Konkrétní výběr předmětů by měl být prováděn na základě zaměření, ke kterému studium směřuje. Zkušební okruhy u státních zkoušek jsou totiž dalším vodítkem při rozhodování, které předměty je třeba studovat.
kód | Předmět | Kredity | ZS | LS | |
NPGR025 | Introduction to Colour Science | 3 | 2/0 Zk | — | |
NPGR002 | Digitální zpracování obrazu | 4 | 3/0 Zk | — | |
NPGR035 | Strojové učení v počítačovém vidění | 5 | 2/2 Z+Zk | — | |
NPGR037 | Praktikum z Matlabu | 3 | 0/2 Z | — | |
NCGD003 | Programování herních mechanik | 4 | 1/2 Z+Zk | — | |
NCGD006 | Praktikum z vývoje počítačových her v limitovaném čase | 1 | 2 | 0/1 Z | 0/1 Z |
NPGR004 | Fotorealistická grafika | 5 | — | 2/2 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/2 Z+Zk | |
NPGR020 | Geometrie pro počítačovou grafiku | 3 | — | 2/0 Zk | |
NPGR036 | Počítačové vidění | 5 | — | 2/2 Z+Zk | |
NPGR038 | Základy vývoje počítačových her | 5 | — | 2/2 Z+Zk | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
NAIL028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NMAI073 | Pravděpodobnost a statistika 2 | 5 | 2/2 Z+Zk | — | |
NMAI056 | Matematická analýza 3 | 5 | — | 2/2 Z+Zk | |
NPRG051 | Pokročilé programování v C++ | 5 | — | 2/2 Z+Zk | |
NPRG038 | Pokročilé programování v jazyce C# | 5 | — | 2/2 Z+Zk | |
NPRG005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NAIL120 | Úvod do umělé inteligence | 5 | — | 2/2 Z+Zk | |
NPRG054 | Vývoj vysoce výkonného software | 6 | — | 2/2 Z+Zk | |
NPRG042 | Programování v paralelním prostředí | 6 | — | 2/2 Z+Zk | |
NMAI042 | Numerická matematika | 5 | — | 2/2 Z+Zk | |
NDBI045 | Vyhledávání ve videu | 5 | — | 2/2 Z+Zk | |
NOPT046 | Diskrétní a spojitá optimalizace | 5 | — | 2/2 Z+Zk |
1 Předmět Praktikum z vývoje počítačových her je vyučován v obou semestrech a smí se zapisovat opakovaně (za každý absolvovaný semestr jsou dva kredity). Studentům zaměření Vývoj počítačových her doporučujeme absolvovat ho minimálně jednou.
Doporučený průběh studia
Doporučený průběh studia zahrnuje všechny povinné předměty a některé další povinně volitelné nebo volitelné předměty – tzv. profilující předměty – pro jednotlivá zaměření.
Protože mají tři různá zaměření různé požadavky ke státním zkouškám, uvádíme zde příklady tří průběhů studia. Pro úplnost byly vytvořeny kompletní průběhy včetně volitelných předmětů. Formálně povinné předměty jsou v tabulkách vyznačeny tučně, povinně volitelné běžným písmem a volitelné kurzívou.
Volitelnost předmětů by se však mohla chápat více prakticky – vůči konkrétnímu zaměření. To znamená, že některá přednáška může být obecně pro celou specializaci povinně volitelná, ale pro konkrétní zaměření může být důležitá (profilující), protože znalosti jsou potřeba ke státním zkouškám. V jiném zaměření však poslouží třeba jen jako výběrový předmět, protože ke státním zkouškám potřeba není.
V následujících ukázkách průchodů se k naznačení důležitosti předmětu používají poznámky pod čarou: profilující předměty (znalosti ke státním zkouškám) jsou označeny jedničkou1, předměty doporučované dvojkou2. Pokud není předmět vysázený tučně ani nemá jednu z těchto poznámek1,2, je pro dané zaměření úplně volitelný a lze ho libovolně nahradit.
1. rok studia
Společné pro všechny specializace, viz předchozí část.2. rok studia – počítačová grafika
kód | Předmět | Kredity | ZS | LS | |
NTIN061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NDMI011 | Kombinatorika a grafy 1 | 5 | 2/2 Z+Zk | — | |
NMAI055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NJAZ074 | Anglický jazyk pro středně pokročilé III | 3 | 1 | 0/2 Z | — |
NTVY016 | Tělesná výchova III | 5 | 1 | 0/2 Z | — |
NTIN071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika 1 | 5 | — | 2/2 Z+Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z | |
NPGR004 | Fotorealistická grafika | 1 | 5 | — | 2/2 Z+Zk |
NMAI056 | Matematická analýza 3 | 2 | 5 | — | 2/2 Z+Zk |
NPRG051 | Pokročilé programování v C++ | 2 | 5 | — | 2/2 Z+Zk |
NMAI042 | Numerická matematika | 5 | — | 2/2 Z+Zk | |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 3 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 4 | 1 | — | 0/0 Zk |
NTVY017 | Tělesná výchova IV | 5 | 1 | — | 0/2 Z |
3. rok studia – počítačová grafika
kód | Předmět | Kredity | ZS | LS | |
NAIL062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NPGR025 | Introduction to Colour Science | 1 | 3 | 2/0 Zk | — |
NPGR002 | Digitální zpracování obrazu | 2 | 4 | 3/0 Zk | — |
NMAI073 | Pravděpodobnost a statistika 2 | 2 | 5 | 2/2 Z+Zk | — |
NPGR037 | Praktikum z Matlabu | 3 | 0/2 Z | — | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
NPGR020 | Geometrie pro počítačovou grafiku | 1 | 3 | — | 2/0 Zk |
NPGR036 | Počítačové vidění | 2 | 5 | — | 2/2 Z+Zk |
NPRG054 | Vývoj vysoce výkonného software | 6 | — | 2/2 Z+Zk | |
NOPT046 | Diskrétní a spojitá optimalizace | 5 | — | 2/2 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/2 Z+Zk |
1 Profilové předměty k danému zaměření. Okruhy státních zkoušek jsou na jejich znalosti založené.
2 Další doporučované předměty pro dané zaměření. Formálně Vás nic nenutí si je zapsat, my bychom Vám to však doporučovali. Předměty, které nejsou povinné a nemají žádnou poznámku, lze libovolně nahradit jinými podle Vašeho zájmu.
3 Výuka anglického jazyka NJAZ070, NJAZ072, NJAZ074, NJAZ090 v rozsahu 0/2 v každém semestru je určena pro středně pokročilé a pokročilé. Pro začátečníky a mírně pokročilé jsou určeny předměty NJAZ071, NJAZ073, NJAZ075, NJAZ089 s rozsahem výuky 0/4 v každém semestru.
4 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.
5 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016 a NTVY017 je možné si zapsat letní výcvikový kurz NTVY018 nebo zimní výcvikový kurz NTVY019. Tyto kurzy může student absolvovat kdykoli v průběhu bakalářského studia.
2. rok studia – počítačové vidění
kód | Předmět | Kredity | ZS | LS | |
NTIN061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NDMI011 | Kombinatorika a grafy 1 | 5 | 2/2 Z+Zk | — | |
NMAI055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR002 | Digitální zpracování obrazu | 1 | 4 | 3/0 Zk | — |
NPGR037 | Praktikum z Matlabu | 2 | 3 | 0/2 Z | — |
NJAZ074 | Anglický jazyk pro středně pokročilé III | 3 | 1 | 0/2 Z | — |
NTVY016 | Tělesná výchova III | 5 | 1 | 0/2 Z | — |
NTIN071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika 1 | 5 | — | 2/2 Z+Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z | |
NPGR036 | Počítačové vidění | 1 | 5 | — | 2/2 Z+Zk |
NPGR020 | Geometrie pro počítačovou grafiku | 2 | 3 | — | 2/0 Zk |
NMAI056 | Matematická analýza 3 | 2 | 5 | — | 2/2 Z+Zk |
NOPT046 | Diskrétní a spojitá optimalizace | 2 | 5 | — | 2/2 Z+Zk |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 3 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 4 | 1 | — | 0/0 Zk |
NTVY017 | Tělesná výchova IV | 5 | 1 | — | 0/2 Z |
3. rok studia – počítačové vidění
kód | Předmět | Kredity | ZS | LS | |
NAIL062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NPGR035 | Strojové učení v počítačovém vidění | 1 | 5 | 2/2 Z+Zk | — |
NAIL028 | Úvod do robotiky | 2 | 5 | 2/2 Z+Zk | — |
NMAI073 | Pravděpodobnost a statistika 2 | 2 | 5 | 2/2 Z+Zk | — |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
NMAI042 | Numerická matematika | 2 | 5 | — | 2/2 Z+Zk |
NPGR004 | Fotorealistická grafika | 5 | — | 2/2 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/2 Z+Zk | |
NPRG054 | Vývoj vysoce výkonného software | 6 | — | 2/2 Z+Zk |
2. rok studia – vývoj počítačových her
kód | Předmět | Kredity | ZS | LS | |
NTIN061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NDMI011 | Kombinatorika a grafy 1 | 5 | 2/2 Z+Zk | — | |
NMAI055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NJAZ074 | Anglický jazyk pro středně pokročilé III | 3 | 1 | 0/2 Z | — |
NTVY016 | Tělesná výchova III | 5 | 1 | 0/2 Z | — |
NTIN071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika 1 | 5 | — | 2/2 Z+Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z | |
NPGR019 | Realtime grafika na GPU | 1 | 5 | — | 2/2 Z+Zk |
NPGR038 | Základy vývoje počítačových her | 1 | 5 | — | 2/2 Z+Zk |
NPRG038 | Pokročilé programování v jazyce C# | 2 | 5 | — | 2/2 Z+Zk |
NPRG051 | Pokročilé programování v C++ | 2 | 5 | — | 2/2 Z+Zk |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 3 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 4 | 1 | — | 0/0 Zk |
NTVY017 | Tělesná výchova IV | 5 | 1 | — | 0/2 Z |
3. rok studia – vývoj počítačových her
kód | Předmět | Kredity | ZS | LS | |
NAIL062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NCGD003 | Programování herních mechanik | 2 | 4 | 1/2 Z+Zk | — |
NCGD006 | Praktikum z vývoje počítačových her v limitovaném čase | 2 | 2 | 0/1 Z | 0/1 Z |
NAIL028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
NPGR002 | Digitální zpracování obrazu | 4 | 3/0 Zk | — | |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
NPGR020 | Geometrie pro počítačovou grafiku | 1 | 3 | — | 2/0 Zk |
NAIL120 | Úvod do umělé inteligence | 5 | — | 2/2 Z+Zk | |
NPGR004 | Fotorealistická grafika | 5 | — | 2/2 Z+Zk | |
NPGR036 | Počítačové vidění | 5 | — | 2/2 Z+Zk |
Požadavky znalostí ke státní závěrečné zkoušce
Některá témata studijního oboru Informatika jsou požadována ve všech specializacích, viz první část.
Pro studenty specializace Počítačová grafika, vidění a vývoj her jsou pro další okruhy 1. až 3. souvisejícími předměty NMAI055 Matematická analýza 2 a NPGR003 Základy počítačové grafiky.
1. Matematická analýza
Diferenciální a integrální počet ve více rozměrech.
Riemannův integrál.
Extrémy funkcí více proměnných.
Metrický prostor, otevřené a uzavřené množiny, kompaktnost.
2. Základy 2D počítačové grafiky
Základy lidského vidění, barvy, jejich vnímání a reprezentace na počítači,
barevné systémy RGB, CMY a HSV. HDR grafika. Průhlednost (alfa-kanál).
Rastrová a vektorová grafika, příklady rastrových a vektorových formátů
a jejich použití. Základy rasterizace (vykreslování tvarů do 2D rastru).
3. Základy 3D počítačové grafiky
Systémy 3D souřadnic a transformací, Skládání praktických
složitějších transformací, reprezentace orientace.
Projekce pro zobrazování 3D scén.
Základy GPU knihovny OpenGL. Architektura GPU, formáty dat
posílané do GPU, princip programování shaderů.
Reprezentace 3D scén v počítači, hierarchické reprezentace,
základy stínování a princip rekurzivního sledování paprsku.
Požadavky pro jednotlivá zaměření
Studenti jednotlivých zaměření se musí dále připravit na zkušební okruhy vycházející z příslušných profilových předmětů.
Požadavky pro zaměření Počítačová grafika
Pro zkušební okruhy 4. až 6. jsou souvisejícími předměty NPGR004 Fotorealistická grafika, NPGR025 Introduction to Colour Science a NPGR020 Geometrie pro počítačovou grafiku.
4. Fotorealistická grafika
Rekurzivní sledování paprsku: vlastnosti naivního algoritmu.
Výpočet průsečíků paprsku s 3D scénou a jeho urychlování.
Modely odrazu světla na povrchu těles: empirické a fyzikálně
věrnější přístupy.
Textury, modelování přírodních fenoménů, spojité šumové funkce.
Anti-aliasing v paprskově založených metodách, vzorkovací algoritmy,
distribuované sledování paprsku.
Moderní Monte-Carlo přístupy v realistickém zobrazování.
5. Základy vědy o barvách
Fundamental causes of colour, human eye and function of its parts.
Colour spaces and colour collections, gamuts, color mixing, color matching
experiments.
Examples of Colour ordering systems (Munsell, Pantone).
Colour measurement devices.
Printing technology, ICC profiles.
6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu.
Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP.
Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení
fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí
ze snímků.
Požadavky pro zaměření Počítačové vidění
Pro zkušební okruhy 7. až 9. jsou souvisejícími předměty NPGR002 Digitální zpracování obrazu, NPGR036 Počítačové vidění a NPGR035 Strojové učení v počítačovém vidění.
7. Digitální zpracování obrazu
Vzorkování a kvantizace obrazu, Shannonova věta.
Základní operace nad obrázky, histogram, změny kontrastu, redukce šumu, zvyšování ostrosti.
lineární filtrace obrazu v obrazovém a spektrálním prostoru.
Konvoluce a Fourierova transformace. Detekce hran a rohů.
Matematické modelování degradace obrazu.
Potlačování základních zkreslení obrazu (rozmazání pohybem, rozostření),
inverzní a Wienerův filtr.
8. Počítačové vidění
Pořizování obrazu, vlastnosti digitálního obrazu.
Matematická morfologie. Segmentace obrazu.
Registrace a porovnávání obrazu.
Popis plošných objektů – základní principy.
Invarianty pro rozpoznávání 2D objektů.
Detekce, popis a párování lokálních příznaků.
Významné oblasti v obraze.
Detekce a Sledování objektů, optický tok.
9. Strojové učení
Výběr a předzpracování příznaků.
Bayesovská teorie rozhodování, kritérium minimální chyby.
Rozhodovací stromy.
Diskriminační analýza, lineární klasifikátor.
Rozpoznávání objektů, klasifikátory s učitelem (k-NN, lineární, Bayes).
Support Vector Machines (SVM).
Shluková analýza, iterační a hierarchické metody.
Hodnocení kvality klasifikace.
Požadavky pro zaměření Vývoj počítačových her
Pro zkušební okruhy 10., 11. a 6. jsou souvisejícími předměty NPGR038 Základy vývoje počítačových her, NPGR019 Realtime grafika na GPU a NPGR020 Geometrie pro počítačovou grafiku.
10. Vývoj počítačových her
2D hry: sprite-based animace, 2D kostra, parallax scrolling,
dlaždicové systémy, pixel art.
3D hry: 3D scény, modely, kosterní animace, rigging.
3D rendering: shadery, stíny, částicové systémy, billboards,
screenspace efekty.
Zvuk: zvukové efekty, 3D zvuk, sound engine, kompozice zvuku.
Návrh architektury herního kódu, návrhové vzory pro počítačové hry.
Herní design: definice, historie, taxonomie hráčů.
Úvod do architektury herních engine, engine Unity.
Řízení vývoje počítačových her a životní cyklus herního projektu.
11. GPU grafika
Princip fungování programovatelné rasterizační pipeliny na GPU.
Buffery, constant buffery, efektivní předávání dat do GPU.
Textury a texturovací jednotky, funkce jednotlivých druhů shaderů.
Vyšší programovací jazyky shaderů (GLSL, HLSL).
Řešení osvětlení ve scéně (materiály, výpočet stínů).
Stencil buffer a jeho použití.
Víceprůchodový rendering, deffered shading a screen-space efekty.
Realtime raytracing.
GPGPU – masivně paralelní algoritmy na GPU, základy CUDA/OpenCL.
6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu.
Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP.
Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení
fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí
ze snímků.