Számítógépes grafika

A VIK Wikiből
A lap korábbi változatát látod, amilyen Nagy Marcell (vitalap | szerkesztései) 2019. június 11., 15:39-kor történt szerkesztése után volt.
Ugrás a navigációhoz Ugrás a kereséshez
Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni
Ez az új tanterv tárgya, a régiért lásd: Számítógépes grafika és képfeldolgozás


Számítógépes grafika
Tárgykód
VIIIAB07
Régi tárgykód
VIIIAB03
Általános infók
Szak
info
Kredit
3
Ajánlott félév
4
Keresztfélév
van
Tanszék
IIT
Követelmények
NagyZH
1 db
Házi feladat
3 db
Vizsga
nincs
Elérhetőségek
Levlista
grafika
Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni
@sch.bme.hu


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

  • 3 kis házi feladat leadás van, ezek félévente változóan vagy fakultativak 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 pont é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

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.


Hallgatók által írt összefoglalók

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:

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

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.

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.


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