Základy počítačové grafiky – cvičení (2021/2022)

Bude postupně zadáno cca 10 úloh, vy si můžete vybírat, které budete řešit. Přečtěte si sekci Podmínky zápočtu.

Video obsah na YouTube

Playlist aktuálních cvičení z roku 2021/22.
Zvlášť užitečné může být první video-cvičení – pro ty, kteří se z jakéhokoli důvodu nemohli výuky zúčastnit.
Dále doporučujeme videa se zadáními konkrétních úloh na zápočet.

Playlist všech zveřejněných cvičení z roku 2020/21.
POZOR: neplatí všechny konkrétní úlohy a zmínky o Microsoft Teams (Teams letos nebudeme používat, pokud se nezhorší epidemiologická situace).

Seznam průběžných úloh

2D úlohy

051. Barevná paleta podle obrázku (do 30. 10. 2021) – 8 až 12 bodů

Barevné schéma inspirované vstupním rastrovým obrázkem.

Video: Zadání úlohy 051 – jen zvuk se podařilo zaznamenat plnohodnotně...

117. Prostředí pro rastrové obrázky 117raster

Prostředí (VS2019 projekt), ve kterém se budou odehrávat 2D úlohy pomocí modulů (interface IRasterModule). Příklad modulu, kde se vytvoření nebo transformace rastrového obrázku dá zadávat pomocí CS-skriptu: ModuleFormula.

Video (je z loňska, tak si pro jistotu vždy zkontrolujte aktuální informace na WWW): Prostředí 117raster (2020/21)

123. Zadávání obrázku vzorečkem (do 7. 11. 2021) – 3 až 10 bodů

Vymyslete nějaký obrázek (geometrický tvar, vzor, zajímavé barevné přechody, ...) tak, aby jej šlo snadno realizovat vzorečkem – každý pixel se zvlášť vyhodnotí pomocí funkce, kterou naprogramujete v CS-scriptu (jazyk C#) nebo samostatném modulu v C#.

Video (je z loňska, tak si pro jistotu vždy zkontrolujte aktuální informace na WWW): Zadání úlohy 123 (2020/21)

120. Omezené přebarvení obrázku (do 14. 11. 2021) – 8 až 12 bodů

Přebarvení obrázku změnou "Hue" se zachováním pleťových odstínů.

Video: Zadání úlohy 120

092. Generování zajímavého obrázku z úseček (do 21. 11. 2021) – 6 až 12 bodů

Generování obrázku jenom z úseček a lomených čar.

Video: Zadání úlohy 092

093. Animace pomocí úseček (do 3. 1. 2022) – 5 až 20 bodů

Skriptovaná animace pomocí úseček a lomených čar.

Videa: Zadání úlohy 093, Výroba videa z jednotlivých snímků (2020/21)

084. Umělecký filtr – tahy štětcem (do 5. 12. 2021) – 7 až 14 bodů

Transformace obrázku do některého z malířských stylú (napodobení tahů štětcem).

Video: Zadání úlohy 084

125. Generování obrázku s anti-aliasingem (do 19. 12. 2021) – 4 až 8 bodů

Vaše řešení úlohy 123 rozšiřte o anti-aliasing, aby se redukovaly zubaté okraje a případné interference (Moiré efekty). Jako výchozí generující funkci můžete klidně použít moji vzorovou nekonečnou šachovnici v perspektivě, viz video a materiály k úloze 123. Vše v prostředí našeho systému 117raster.

Video: Zadání úlohy 125

3D úlohy

113. Graf funkce v OpenGL (do 9. 1. 2022) – 8 až 20 bodů [3D]

Vykreslování grafu funkce dvou proměnných v OpenGL.

Video:

087. Ohňostroj (do 13. 2. 2022) – 8 až 22 bodů [3D]

Simulace ohňostroje ve 3D. Gravitace, odpor prostředí, objekty nereagují navzájem!

Video:

096. Rubikova kostka (do 13. 2. 2022) – 10 až 18 bodů [3D]

Interaktivní 3D simulátor Rubikovy kostky.

Video:

Ukázky úloh z loňska

124. Transformace obrázku vzorečkem (do 3. 1. 2021) – 4 až 8 bodů

Druhá úloha na rozjezd: zadejte barevnou transformaci pixelů rastrového obrázku (bezkontextové operace, např. barevné korekce, změny kontrastu, jasu a sytosti, posun barev, ...). Opět implementace v CS-scriptu (jazyk C#) nebo samostatném modulu v C#.

082. Obrázek složený z teček (do 3. 1. 2021) – 6 až 12 bodů

Generování obrázku jenom z teček/kruhů (poloha, barva, velikost).

083. Animace pomocí teček (do 31. 1. 2021) – 5 až 20 bodů [může být 3D]

Skriptovaná animace pomocí teček (viz předchozí úlohu).

044. Animace loga CGG (do 7. 3. 2021) – 5 až 20 bodů [může být 3D]

Krátká skriptovaná animace CGG loga pro použití ve video-znělce.

057. Konstrukce 3D scény – Lissajous (do 7. 3. 2021) – 6 až 18 bodů [3D]

Algoritmická konstrukce 3D scény založené na zobecněné Lissajousově křivce. Křivka je reprezentována sítí trojúhelníků tvořících "trubku" (nebo jiný – ze všech směrů viditelný – profil) kolem ideální křivky.

058. Kuličky – jednoduchá 3D fyzikální simulace (do 14. 3. 2021) – 12 až 22 bodů [3D]

Kuličky pohybující se v 3D prostoru, jejich vzájemné kolize + gravitace.

Ukázky úloh z minulých ročníků

118. Vylepšení histogramu (do 10. 11. 2019) – 5 až 12 bodů

Variace na histogramy obrázků – lokální histogram, lepší vizualizace, jiný barevný systém, ...

121. Obrázek obsahující všech 16M barev (do 24. 11. 2019) – 6 až 15 bodů

Generování full-color obrázku buď podle předlohy nebo implicitně, příp. podle parametrů.

122. Konstrukce 3D scény z úseček (do 12. 1. 2020) – 6 až 12 bodů [3D]

Algoritmická konstrukce 3D scény složené jen z úseček a lomených čar.

116. Animovaná realtime kamera (do 16. 2. 2020) – 7 až 22 bodů [3D]

Definice trajektorie kamery v čase, hladká translace i otáčení. Volitelné sledování pohybujícího-se předmětu.

115. Barevná paleta pro mandalu (do 4. 11. 2018) – 8 až 11 bodů

Cyklické barevné schéma pro obrázek stylu "mandala".

114. Přechod mezi dvěma obrázky (do 11. 11. 2018) – 6 až 16 bodů

Definice přechodové animace mezi dvěma rastrovými obrázky.

094. Tone-mapping HDR obrázku (do 18. 11. 2018) – 6 až 14 bodů

Převod HDR obrazu do běžného LDR formátu (8 bitů na barevný kanál).

005. Filtr potlačující šum (do 2. 12. 2018) – 8 až 14 bodů

Filtr potlačující šum, ale zachovávající ostré hrany (rotující maska, směrový filtr).

035. Simulace plasma (do 9. 12. 2018) – 3 až 14+ bodů

Real-time simulace plasmy/plamene v diskrétním 2D poli.

098. Generátor bludiště v SVG formátu (do 12. 11. 2017) – 9+ bodů

Automatické generování pravoúhlého 2D bludiště v SVG formátu.

004. Výroba vlastního HDR obrázku (do 19. 11. 2017) – 8-11 bodů

Výroba HDR obrázku vícenásobnou expozicí za pomoci některého populárního programu.

099. Generování obrázku z vodorovných a svislých úseček (do 26. 11. 2017) – 6-12 bodů

Generování obrázku jenom z vodorovných a svislých úseček.

110. Animace pomocí vodorovných a svislých úseček (do 7. 1. 2018) – 5-20 bodů

Skriptovaná animace pomocí vodorovných a svislých úseček.

112. Ciferníky (do 17. 12. 2017) – 8+ bodů

Displej složený z ciferníků hodin ve 2D.

057. Konstrukce 3D scény (do 14. 1. 2018) – 6 až 14 bodů [3D]

Algoritmická konstrukce jednoduché 3D scény – Platónská tělesa, apod.

Podmínky získání zápočtu

Celkem je potřeba získat minimálně 50 bodů a maximálně 80 bodů (ZPG: minimálně 16 bodů musí být z 3D grafiky).
Zápočet za zimní semestr lze získat nejpozději do XX. 2. 2022 !
Zápočet za letní semestr lze získat nejpozději do 31. 6. 2022 !

Body se sčítají s výsledkem písemné zkoušky (max. 100 bodů) a podle celkového součtu se určí známka.
Závěrečné hodnocení:
150 bodů a více výborně
130 až 149 bodů velmi dobře
110 až 129 bodů dobře
méně než 110 bodů nevyhověl(a)

Jak získat body na zápočet

A. úlohy řešené průběžně v semestru (C#)

Úlohy průběžně zadávané na cvičeních, na každém cvičení bude zadána jedna úloha, na její řešení bude min. 14 dnů čas. Hodnocení podle obtížnosti a kvality řešení, různé bonusy pro vítěze soutěží, apod. Možnost účasti týmů (N = 2-3 studenti), ale každý dostane jen (2N-1)/N2 bodů!

B. body z loňska

Účastníci loňských cvičení (opakující předmět, kteří za něj však nedostali kredity) budou mít uznáno 90% loni získaných bodů. Musíte mne požádat mailem.

Soutěže

Některé úlohy obsahují kvantitativní hodnocení, podle kterého lze sestavit žebříček nejlepších odevzdaných řešení.
Takové úlohy jsou označeny "SOUTĚŽ" a pokud vyhovující řešení odevzdá alespoň 10 studentů/týmů, tři nejlepší obdrží prémii 10, 6, resp. 3 body (v případě týmu dostanou plnou prémii všichni jeho členové).
Do soutěže jsou zařazena pouze řešení odevzdaná včas!

Upozornění

Protože je vyhodnocování odevzdaných úloh velice časově náročné, je potřeba, abyste dodržovali následující pravidla:
  • komunikujte se mnou mailem z takového účtu (identity), kde máte ve své adrese uvedené vaše občanské jméno a příjmení (minimálně příjmení)
    Pozn: vždycky lze vyrobit mailovou identitu podle vzoru "František Vopršálek" <rambo12@seznam.cz>
  • posílejte v jednom mailu jenom řešení jedné úlohy (tj. posíláte-li najednou více úloh, rozdělte je do více zpráv). Pokud kromě odevzdání úlohy chcete sdělit nějakou jinou informaci (např. ohlásit chybu v mém kódu), použijte též jinou zprávu!
  • do subjectu zprávy vždy napište číslo příslušné úlohy (i v případě dotazu nebo reklamace)
  • je nutné řídit se předepsanými pravidly při pojmenovávání zdrojových souborů, pravidla jsou uvedena u každé úlohy. Nezapomeňte do komentáře zdrojového souboru připsat své jméno
  • až na výjimky neposílejte jiné soubory (data, vaše vlastní pomocné prográmky). Můžete mi o nich do mailu napsat a já si je v případě potřeby vyžádám..
  • už vůbec mi v mailu neposílejte dlouhé přílohy! Toleruji maximálně 1MB, větší množství dat mi můžete předat tak, že soubor vystavíte na WWW (Google Drive, Microsoft cloud) a mailem pošlete URL. Připomínám, že pro odevzdávání zápočtových úloh byste ani neměli pocítit potřebu něco velikého mi poslat (zdrojáky bývají dost krátké)
  • nespoléhejte na to, že budu funkčnost vašeho kódu zkoušet jenom ve vzorovém hlavním programu! Je potřeba reagovat na všechny rozumné varianty vstupu
  • moje komentáře ve zdrojových souborech vyznačující místa, která musíte změnit: v žádném případě to neznamená, že si do toho souboru nemůžete něco dalšího přidat i mimo těch komentářů. Například pomocné třídy, struktury nebo i metody. Snažte se však modifikovat jinom ten jediný (odevzdávaný) soubor.

Odevzdání úlohy

Pokud není uvedeno jinak, stačí poslat mailem editovaný zdrojový soubor (nekomprimovat, jen připojit .cs soubor[y] jako attachment). Nezapomeňte do komentáře připsat své jméno!

Za úlohu neodevzdanou včas se strhává 1 bod za každý započatý den zpoždění.

Rozvrh cvičení

V rozvrhu (SIS) je několik skupin cvičení, do jedné z nich se musíte zaregistrovat.

  • NPGR003x01 pondělí 15:40 SW1 (česky, Vojtěch Tázlar)
  • NPGR003x02 středa 14:00 SU2 (česky, Josef Pelikán)
  • NPGR003x03 pondělí 10:40 SW2 (anglicky, Vojtěch Tázlar)
  • NPGR003x04 úterý 15:40 SW2 (česky, Vojtěch Tázlar)

Copyright (C) 2000-2021 J.Pelikán, last change: 2021-11-27 10:34:39 +0100 (Sat, 27 Nov 2021)