Számítógépes grafika és képfeldolgozás vizsga, 2009. december 22.

A VIK Wikiből
(SzgGrafVizsga20091222 szócikkből átirányítva)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


80 perc játékidő, összesen 30 pontos. Ponthatárok: >=12 kettes, >=14 hármas, >=16 négyes, >=18 ötös. A karácsonyra való tekintettel a résztvevők +2 ajándékpontot kaptak (amennyiben nem éltek reklamációval).

A homályos fénykép miatt nem szó szerinti a szöveg, de jelentésre azonos.

1. feladat (15 pont)

Ezen a helyen volt linkelve a grafika_20091222_feladat1.png nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


A Word beépített rajzolóprogramjában szabadformájú görbét választott, majd a bal oldali ábrán lévő körökre klikkelt. Ennek hatására a Word az ábrán látható görbét rajzolta ki. Ezután az egyik csomópontot arrébb húzta (jobb oldali ábra), amelynek hatására a görbe alakja is megváltozott. Az összehasonlítás érdekében a jobb oldali ábrán nem csak az új görbét, hanem szaggatott vonallal a régit is feltüntettük. Milyen típusú a görbe? Írja fel a görbe egyenletét a t E [2,3] paraméterérték tartományra, ha az egyes görbeszegmensek a [0,1],[1,2],[2,3] stb. paramétertartományoknak felelnek meg, és az i. vezérlőpont koordinátái (xi, yi). Pontozás: görbe releváns tulajdonságai 2p; neve 1p; a görbe egyenletének elvi meghatározása 6p; az egyenletben szereplő paraméterek kiszámítása 6p. Összesen: 15p.

Segítség: A következő parametrikus görbéket tanultuk: Lagrange, Bezier, harmadfokú (kubikus vagy cubic) spline, B-Spline, NUBS, NURBS, Catmull-Rom, Kochanek-Bartels.

A Segítség sor az eredeti vizsgasorban is szerepelt.

2. feladat (15 pont)

Ezen a helyen volt linkelve a grafika_20091222_feladat2.png nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


Írjon Display eseménykezelő függvényt, amely egy virtuális világot épít fel és Gouraud árnyalással jelenít meg OpenGL felhasználásával. A virtuális világ egy 1 négyzetkilométeres É-D tájolású földterület, ahol 16 db piramis található szabályos rácsban. A piramisok alapja 40×40 m, É-K felé néznek, a magasságuk 30 m. A föld zöld, diffúz, a piramisok sárgás-fehérek és spekulárisan csillognak. A nap keletről süt, 20 fokot zár be a talajjal. A nap 10 (egységecske - nem tudom mi) sugársűrűségű vörös irányfényforrásnak tekinthető. Az égbolt (ambiens) fény sugársűrűsége 2 (egységecske - nem tudom mi), színe kék. Feltételezheti, hogy a viewport-ot beállítottuk, MODELVIEW transzformációt a kameratranszformációnak, a PROJECTION transzformációt pedig a perspektív transzformációnak inicializálták. Az aktuális mátrixmód a GL_MODELVIEW. A feladat által nem specifikált paramétereket tetszés szerint megválaszthatja. Csak a szabványos C könyvtár függvényei használhatók, a vektorműveleteket implementálni kell. Pontozás: föld 1p, ég 1p, piramis geometria 3p, piramis transzformáció 3p, fények 3p, anyagok 4p. Összesen 15p.

Segítség: OpenGL függvények és komponensek: _egy zsák OpenGL függvény (csak név alapján, nem paraméteresen), pl. glClearColor, glVertex, GL_AMBIENT stb. Benne van minden, ami a feladathoz kell (plusz pár, ami nem kell) - csak arra kell emlékezni, hogy mik a paramétereik._

1. feladat megoldása (vázlat)

Catmull-Rom görbéről van szó, amit a következőkből lehet megállapítani:

  1. Kellően "sima" (kizárja a Lagrange interpolációt).
  2. Lokálisan vezérelhető (kizárja a Bezier görbét).
  3. Ha csak a körök középpontját nézzük, és nem az egész kört, akkor sérül a konvex burok tulajdonság; kizárja a B-Spline-t, a NUBS-ot és a NURBS-ot. (Ez a gyér minőségű képen talán nem látszik, de a vizsgán jól kivehető volt.)
  4. Marad a Catmull-Rom és a Kochanek-Bartels görbe. A Kochanek-Bartels a Catmull-Rom általánosítása, van benne tenzió (tau) és bias (béta); ránézésre egyik plusz paraméter alkalmazása sem látszik az ábrán, úgyhogy vagy Catmull-Rom, vagy egy Catmull-ra visszavezetett Kochanek görbéről beszélünk.

Ezt leírtam (2+1 pont), továbbá felírtam a Catmull-Rom általános egyenletét az animációk diasorból (6 pont). A konkrét értékeket levezetni már nem tudtam, nyilván ezért még 6 pont járt volna. Aki tudja, szerkessze ide.

Shortcut: Előadáson, a NURBS után elhangzott, hogy "eddig még nem tanultuk, hogy a PowerPoint milyen görbefajtát használtuk" - feltételezve hogy a PowerPoint és a Word görbemotorja megegyezik, visszaemlékezhetünk hogy ezután már csak a Catmull-Rom és Kochanek-Bartels görbéket vettük (animációk előadás), innentől egyből a 4. lépéshez ugorhatunk. :)

2. feladat megoldása (vázlat)

A piramisokon kívül a többi komponens (föld, ég, fények) kirajzolása történhet a Display függvény törzsében, szépen egymás után; a piramisokat pedig célszerű 2 db egymásba ágyazott, 0..3-ig haladó For ciklus keretében kirajzoltatni egy segédeljárással (a For ciklusok PushMatrix-ot csinálnak, eltolnak/forgatnak, meghívják a segédeljárást ami adja a 6 háromszögből álló geometriát, majd a ciklusmag PopMatrix-szal végetér). Vektor osztály szerintem egyáltalán nem is szükséges.

Voltaképpen elemi OpenGL feladat, ha a szintaxist ismered (hogy veszel fel vertexet/fényforrást, hogy állítod be egy test anyagát stb.), "IQ-ból" meg lehet csinálni, semmi bonyolult számítás vagy képlet nincs benne. Megjegyzés: a feladat erőteljesen hasonlít az ebben a félévben vett kisházikhoz, nyilván nem véletlenül.

-- FarkasBalint - 2009.12.22.