Számítógépes grafika
- Ez az új tanterv tárgya, a régiért lásd: Számítógépes grafika és képfeldolgozás
A tárgy a képi információ előállításának és feldolgozásának algoritmusait mutatja be, a hallgatókat bevezetve az interaktív grafikus alkalmazások készítésébe és a grafikus hardver programozásába. A Számítógépes grafika és képfeldolgozás tárgy utódja.
Követelmények
Előtanulmányi rend
A programozás alapjai 2 tárgyból kredit megszerzése szükséges a tárgy felvételéhez.
A szorgalmi időszakban
- A kari Moodle rendszerben minden témakör leadása után megnyílik az adott témakörhöz egy-egy kérdőív. Ezeknek a kérdőíveknek minimum 66%-át ki kell tölteni a tárgy telejesítéséhez, azonban ezek eredménye a tárgyba semennyire nem számít bele. Üres beadással is teljesíthetőek.
- 3 kis házi feladat leadás van, ezek félévente változóan vagy fakultatívak vagy nem, ha nem, akkor általában minimum 3 pontot kell szerezni. Összesen 9 pontot lehet rájuk kapni, a felosztás régebben 3-3-3, mostanában 2-3-4 szokott lenni. Aktuális szabályokat lásd az előadásdiákon.
- A házikra nem közvetlenül kapsz pontot. A házikat el kell fogadniuk, de a pont csak akkor számít bele a jegybe, ha még "megvéded" a ZH-n a pontjaidat.
- Opcionálisan választható nagy házi feladat, 3 pontot érhet. Ennek témaköre nem lehet a kisházikkal egyező, és annál komplexebb kell legyen. Részleteket az oktatóval egyeztesd.
- Egy ZH-t kell sikeresen megírni (30 pontos), ebből születik a félév végi jegy.
- A ZH-n a 3 kisházihoz tartozik 1-1 ellenőrző kérdés, ami a házi témaköréhez kapcsolódik. Ha ezekre a kérdésekre jól válaszolsz, a jegybe beleszámít az adott házira kapott pontod kétszerese. Ha nem jó a válaszod, nem ér semmit a HF-pontod. Viszont a ZH pontszám-felosztása miatt még így is teljesítheted a tárgyat.
- Pótlási lehetőségek:
- A házi feladatok nem pótolhatók, de a 9 pontból csak 3-mat kell minimálisan szerezni.
- PótZH van, általában 1 vagy 2 héttel később.
- Aláíráspótló nincs minden félévben! Ha a tantárgyi adatlapra nem írják oda, hogy lesz, akkor biztosan nem lesz. Ha nincs PPZH (vagy az se sikerülne), méltányossági kérelmet elfogadnak egy ismételt pótlási alkalomra.
- Előadáson, néha a ZH-n kaphatók bónuszpontok még egyéb kérdésekkel.
- Összesen 56 pont szerezhető (30 ZH + 9*2 KHF + 3*2 NHF + bónusz), de a jegyszámításnál mondhatni 32 a megszokott 100%.
Ponthatárok
Pont Jegy 0 - 11 1 12 - 15 2 16 - 19 3 20 - 23 4 24 - 5
Segédanyagok
Jegyzet
- Szirmay által készített jegyzet (az ELTE hallgatói számára)
Előadásdiák
A tematika kis mértékben minden félévben szokott változni, így sok éves kidolgozások (lásd régi tárgy WIKI-oldala) már elavultak. Az aktuális előadásdiákat a tárgyhonlapon megtalálod. A PDF formátumnál könnyebb a jegyzetet olvasni, de a PPT-ben szemléletesebbek az animációk. Nem mindig jut idő mindegyik témakörre előadásokon.
- 2019 tavaszi előadások:
- Alapfogalmak: PDF - PPT
- Geometriák és algebrák: PDF - PPT
- Geometriai modellezés: PDF - PPT
- Geometriai transzformációk: PDF - PPT
- 2D képszintézis: PDF - PPT
- Grafikus alap hw/sw: PDF - PPT
- 3D képszintézis optikai alapmodellje: PDF - PPT
- Sugárkövetés: PDF - PPT
- Inkrementális 3D képszintézis: PDF - PPT
- Animáció: PDF - PPT
- Számítógépes játékok: PDF - PPT
- Fraktálok és káosz: PDF - PPT
- GPGPU: PDF - PPT
Hallgatók által írt összefoglalók
- Csala Tamás: Grafika házi tutorial, példaprogramokkal
- Ez a leírás az OpenGL régebbi változatához készült, a tárgy régi tematikája alapján. Ne ebből dolgozz, mert nem fogadják már el. Ellenben sok jó ötletet találni belle, és az elméletet is jól magyarázza.
- Google doksi a régi tárgyból a kiadott vizsgafeladatok és korábbi vizsgák megoldására
- Hibakezelés és tipikus hibák
Könyv
- Háromdimenziós grafika, animáció és játékfejlesztés 2003 (sünis könyv)
- Számítógépes grafika 1999 (Szirmay korábbi könyve)
- Juhász Imre: OpenGL (csak érdeklődőknek, ez sokkal részletesebb, mint ami a tárgyhoz kell)
- A tárgyhonlapon található még 1-2 könyv.
Videó
Házik
A tárgy arról szól, hogy ezeket meg tudod-e írni. Az első órán el szokott hangzani, hogy vagy 5-sel, vagy 1-sel szeretik értékelni a munkát, kettest csak az kap akit már sok év alatt sem sikerült megtanítani a tárgyra, de a tudása kezd körvonalazódni. Szóval ez a rész, amelyre nagy szükséged lesz! A a házikat jól megcsinálod, a ZH sokkal egyszerűbb és könnyebb felkészülni rá, így összességében jobb jegyet kapsz.
Előkészületek
Mielőtt elkezdenéd, be kell lőni a fejlesztőkörnyezetet:
- Visual Studio + a tárgy honlapjáról letölthető projekt template (Windows-ra)
- CLion + MinGW + előkészített projekt (miden platformon megy)
- Számítógépes grafika: OpenGL + GLUT + fejlesztőkörnyezetek
- Ez a leírás a régi tárgyhoz készült. Legtöbb Windows környezeti leírása már ideje múlt. MacOS és Linux telepítési útmutató itt található.
- CMake template, leginkább UNIX környezethez.
Tipp: próbálj meg olyan környezetet használni, ahol szabványkövető fordítót tudsz használni, pl. CLion-t. A Visual Studio fordítója nem annyira szabványkövető, ezért sok hibával találkozhatsz a beadó portálon, még ha a saját gépeden fut is. Ez legyen fontosabb, mint hogy melyik IDE használatát szoktad meg, sok bosszankodástól megkímél a beadásnál.
Tippek a házikhoz
Érdemes mindegyik házit elfogadottra megcsinálni. A házikat érdemes a kiadás napjától emészteni, és a leadás napján az a jó, ha már csak nagyon kicsi hibák vannak benne, mert a beadórendszer nagyon le tud lassulni. A határidő előtt 6 órával akárhogy áll töltsd fel, mert rossz azon elbukni 1-1 házit hogy bent maradt egy printf, csak már nem láttad az eredményt mert lejárt a határidő.
Ha a határidő előtt 1-2 nappal akarod elkezdeni a munkát, és az anyagot még nem nagyon érted, akkor bele se kezdj egyedül. A házik minden részletének igényes kidolgozása 1 teljes hetet vesz igénybe, ami alatt a többi tárggyal nem nagyon tudsz foglalkozni. Ha csak a minimális dolgok elérése a célod, ennél kevesebb idő is elég, de semmiképp nem tudsz használható programot összedobni egy délután alatt.
A házikat elsődlegesen azért érdemes megcsinálni, hogy tanulj vele a ZH-ra. Hidd el, rengeteget számít, ha jól megérted a dolgokat a háziknál, és nem csak összecsapod a programot, hogy kapj 1-2 pontot. A ZH feladatoknál gyakran szokott lenni gyakorlati feladat is, pl. GLSL és OpenGL-es programrészlet írás, amik könnyen megoldhatók, ha tudod, mit kell csinálni.
Előző házik
- Kiadott grafika házik - (csak feladatleírások)
A feladatok
A régi tárgy oldalán rengeteg segédanyag található, ha hasznosat találsz, szúrd be a megfelelő házihoz.
- Csala Tamás: Grafika házi tutorial
- Ez a leírás az OpenGL régebbi változatához készült, a tárgy régi tematikája alapján. Ne ebből dolgozz, mert nem fogadják már el. Ellenben sok jó ötletet találni belle, és az elméletet is jól magyarázza.
Első házi
- Ez általában egy 2D-s játékprogram. Mindenféle primitív formát és görbéket kell rajzolgatni, mozgatni egy karaktert. A 3 közül ez a legegyszerűbb, mert még csak 2D-ben kell dolgoznod, de ne hidd, hogy ez is csettintésre megy. A legjobb az első háziban, hogy érezheted, mennyit kell foglalkozni vele. A kiadás idejében általában még nincs ZH időszak, a másodiknál lesz, a harmadik meg félév végén van, tehát ennek állj neki rendesen, itt lesz időd megtanulni az alapokat, játszadozni a környezettel, osztályokkal stb.
- Catmull-Rom levezetés
Második házi
- A 2. házi egy 3D-s kép kirajzolásáról szól, sugárkövetésessel kell ezt-azt megjeleníteni. Elegendő CPU-n lerenderelni, többnyire 1 darab képet várnak, vagy apró animációt. Nagyon lassú tud lenni egy ilyen program a sugárkövetés menete miatt, ami a házi szempontjából nem gond, de a hibakeresést nagyon megnehezíti. Első körben értsd meg az elméletet, hogy lehetőleg helyes kódot tudj írni.
- Sugárkövetés tutorial (by Wolfee, 2011.04.11) (A benne lévő kódokat semmiképp NE használjátok fel egy az egyben a házi feladatokban (ld. plágiumgyanú), az anyag csupán iránymutatás, a megértést segíti!!)
- a szerző (Farkas Ádám Attila) levlistán, 2011.09.09-én felhívta a figyelmet Dr. Szirmay-Kalos László kóddal kapcsolatos aggályaira: "a pdf-fel tényleg óvatosan bánjatok, a legfőbb kifogások a Tanár úr részéről: Kamerakezelés. én pont-szerű kamerával dolgoztam annó. na nem ez a matematikailag korrekt módja a dolognak, de a pdf-be megteszi. Színkezelés. én 0..255ös skálával dolgoztam (amikor számolni kellett vele, akkor normáltam persze), de T. Ú. azt mondta, hogy végig 0..1 tartománnyal kéne számolni."
- A pdf-ben a sík-egyenes metszéspont számítás hibásan szerepel, inkább vezessük le.
Harmadik házi
- Az utolsó kisházi is egy 3D-s feladat. Általában inkrementális módszerrel kell GPU használatával megjeleníteni a 2. házinál komplexebb animációt.
Házi szépségverseny
Régebben a szépségversenyre plusz pontokat is lehetett kapni, mostanában nincs ilyen. Ettől függetlenül ha megcsináltál egy házit, készíts róla videót, és küldd be a tárgyfelelősnek, kirakja a tárgyhonlapra.
ZH
- Feladatgyűjtemény
- 2018-as ZH feladat megoldása előadáson
- A ZH a három kisházihoz tartozó 1-1 kérdésből (max 2*kisházik pontja), és 2 nagyfeladatból (2*15 pont), alkalmanként további 1-2 bónuszkérdésből áll (1-2 pontért).
- A kisházis kérdések kapcsolódnak az adott házihoz, pl. ha Bézier-görbét kért az első házi, akkor annak képlete lehet, és nem egy Catmull-Rom görbéé, ha görbe metszéspontja kellett a házihoz, akkor annak kiszámításának menete stb. Emiatt érdemes ZH előtt átolvasnod a kódodat, megnézni az elméletet, ami kellett hozzá.
- A kisházis kérdésekre az alapján kapsz pontot, hogy a ZH-s válaszod mennyit ért, és hogy a házira mennyit kaptál. Szóval ha pl. a 3. házit el se kezdted, arra nem kaphatsz pontot akkor se, ha a ZH-s kérdést jól megválaszolod.
- A nagy feladatok eléggé változóak. Szoktak lenni bizonyítások, pl. miért úgy alakul a kvaternió szorzása, ahogy, hogyan számítható ki az X transzformációs mátrix értékei. Gyakori, hogy az egyik feladat egy OpenGL/GLSL programot kell írni, mintha egy mini-házit kéne írnod. Egy alap programvázat megadnak, a lényegi részt kell behelyettesítened, kijavítani, hogy ezt-azt csináljon. Ehhez megint csak a házik elkészítése szolgál jó tanulási alapnak: könnyű emlékezni onnan, hogy kellett csinálni a dolgokat.
- Bónuszkérdések nem mindig vannak. Ezek általában 1-1 alapfogalom precíz meghatározását kérik.
- Heti rendszerességű kvíz kérdések gyűjteménye(kiegészíteni ér): https://docs.google.com/document/d/1k7gOzvxJvXdFESTenn-g-9HVq_B3M62rUi269raxuz0/edit?fbclid=IwAR1_9V4eIfC9QuKQyNLcQFX77b_dx6OOn26-paU-1kuRI2-781XHOdugaf0
Tippek
- Nem lehet elégszer hangsúlyozni: csináld meg jól mindegyik házit! Szánj rá időt, semmi más nem fontos az életedben, ezen fog múlni, át tudsz-e menni a tárgyból. Ha a házikat jól megérted, a ZH már nem lesz (annyira nagyon) nagy értelmetlen zagyvaság.
- Sok példaprogramot adnak ki, a tárgyhonlapon megtalálod a legfrissebbeket. Ezeket viszont csak tanulásra használd fel, ne ebből induljon ki a házid. Kétségtelen, hogy át lehet alakítani a példaprogramokat működőképes házira, de abból semmit nem értesz meg, így csak időpocséklás, és ZH-n meghúznak. True story.
- Jól oszd be a félévben az idődet. Ezzel a tárggyal jóval többet kell foglalkozni, mint a kreditértéke mutat. Ha más tárgyakból is elcsúszol a dolgokkal, nem fog elég időd maradni rendesen felkészülni a grafikára, ez pedig jobban tud fájni, mint más tárgyakból a gyengébb teljesítmény. Szintén true story.
Kedvcsináló
- Interjú Gulyás Gergellyel, aki játékfejlesztőként dolgozik saját cégében az egyetem elvégzése után, az Impulzus 45. évfolyamának 6. számában, a 10. oldaltól kezdve.
- A programozásnak talán ez a legélvezesebb része, hiszen amit csinálsz, annak látványos eredménye is van.
- A legtöbb programozóban felmerül, hogy milyen jó lenne parancssori programok helyett inkább játékot írni. Itt nem csak, hogy lehetőséged van rá, de durván erre kapod a jegyet.
Mottók:
- A terroristák manapság főleg OpenGL függvényeket lopnak. Abban van az igazi biznisz.
- Az Avatar című animációs film már állítólag majdnem megajánlott 4-est ért, de sajnos nem volt mellé kész a négy házi feladat.
- Bal kezünk a billentyűzeten, jobb kezünkben az egér, a lábunk között meg szorongatjuk a joystickot.
- "Ha azt kérdeznénk önöktől vizsgán, amit előadáson elmondunk, akkor önök nem a Műszaki Egyetemre járnának, hanem a Színművészeti Főiskolára."
Egyéb információk
Angol nyelvű, többnyire nagyon részletes tutorialok érdeklődőknek
- Learn OpenGL nagyon jól végigvezet az OpenGL fejlettebb részein is. Ha érdekelnek a részletek, extrák, effektek, a GPU kihasználása, érdemes itt nézelődnöd.
- Real-time Rendering: Ray-Tracing Könyvféleségek, nagyon jól elmagyarázza a sugárkövetés lépéseit.
- VideoTutorialsRock. Hasznos kódok és tutorialok az abszolút kezdőknek. Sok képpel és magyarázattal.
- NeHe. Alapmű, viszont a WinAPI-s cuccokat érdemes belőle kihagyni. A példák végén általában van GLUT-os megvalósítás is.
- thecplusplusguy YouTube csatorna OpenGL, SDL, GLSL, GTK+ tutorialok angolul egy magyar srác által.
- An Intuitive Introduction to Projective Geometry Using Linear Algebra Alapos bevezetés a projektív geometriába, megérthetést segítő vizualizációval.
Bevezetők | |
---|---|
1. félév | |
2. félév | |
3. félév | |
4. félév | |
5. félév | |
6. félév | |
7. félév |