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

Bude postupně zadáno cca 9 ú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 cvičení 2022/23.
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.

Archiv

POZOR: neplatí konkrétní úlohy a zmínky o Microsoft Teams (Teams letos nebudeme používat, pokud se nezhorší epidemiologická situace).

Archiv cvičení 2021/22.
Archiv cvičení 2020/21.

Seznam průběžných úloh

2D úlohy

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

Barevná paleta inspirovaná vstupním rastrovým obrázkem.

Video: Zadání úlohy 051

098. Generátor bludiště v SVG formátu (do 13. 11. 2022) – 9 až 16 bodů

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

Video: Zadání úlohy 098, dokončení

082. Obrázek složený z teček (do 20. 11. 2022) – 6 až 12 bodů [může být 3D]

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

Video: Zadání úlohy 082

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

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

Video: Zadání úlohy 083

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

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

Video: Zadání úlohy 044

084. Umělecký filtr – tahy štětcem (do 4. 12. 2022) – 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, dokončení

3D úlohy

116. Animovaná realtime kamera (do 28. 2. 2023) – 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.

Předběžný plán (může být změněn)

039. Generování terénu (do 28. 2. 2023) – 10 až 24 bodů [3D]

Generování a vykreslování fraktálního terénu, volitelná simulace jednoduchého vznášedla.

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

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

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

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

Prostředí (VS2022 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: 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: 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)

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

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#.

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.

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

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

Videa: Zadání úlohy 113, Doplňující informace z posledního cvičení

096. Rubikova kostka (do 28. 2. 2022) – 11 až 20 bodů [3D]

Interaktivní 3D simulátor Rubikovy kostky.

Video: Zadání úlohy 096

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.

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.

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 28. 2. 2023 !
Zápočet za letní semestr lze získat nejpozději do 31. 6. 2023 !

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.

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.

  • NPGR003x02 čtvrtek 10:40 SW2 (česky, Josef Pelikán)
  • NPGR003x03 čtvrtek 15:40 SW1 (anglicky, Vojtěch Tázlar)
  • NPGR003x04 pátek 9:00 SW1 (česky, Vojtěch Tázlar)

Copyright (C) 2000-2022 J.Pelikán, last change: 2022-12-08 07:31:44 +0100 (Thu, 08 Dec 2022)