SzgGrafVizsga20120523
Ez az oldal a korábbi SCH wikiről lett áthozva.
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.
1. Feladat
Írjon Cg nyelven olyan csúcspont-árnyaló és képpont-árnyaló programokat, amelyekkel az OpenGL “robbantott ábrát” rajzol. Ehhez a csúcspont-árnyaló a modelltérben tolja el a csúcspontokat a hozzájuk rendelt normálvektor mentén egységnyi mértékben, majd transzformálja őket normálizált eszközkoordinátákba az OpenGL transzformációs mátrixainak használtalával.
A képpont-árnyaló a képpont színét úgy határozza meg, hogy az árnyalt felületi pont kamerától való távolságának függvénye legyen, mégpedig minden hullámhosszon (1+sin(d)/2, ahol d a kamerától vett távolság).
Ha standard transzformációs mátrixokon kívül más uniform paramétereket is használ, az azokat beállító C++ kódot is adja meg. 15 pont
2. Feladat
Írjon OpenGL programot, ami egy vulkanikus terepet jelenít meg. A terepen n darab vulkán van, mindegyik a 2D középpontjával adott, és ismert, hogy működésük során exp(-r^2) magasságú kőzetet terítettek az eredetileg sík terepre, ahol r a vulkán közepétől való távolság a síkon. (Vagyis r^2 = (x-xi)^2 + (y-yi)^2, ahol (xi, yi) a vulkán középpontja). Az egyes vulkánok hozzájárulása összeadódott.
A terepet rajzolja 64x64 felbontású magasságmezőként a [-32..32, -32..32] tartományban. A csúcspontok normálvektorait számolja explicit módon a felület képletéből. A színteret az OpenGL nullás indexű fényforrása világítsa meg, annak alapértelmezett beállításai mellett. A kamera pozícióját, orientációját és egyéb paramétereit adottnak tekintheti, a transzformációs mátrixokat viszont önnek kell beállítania. Nem kell foglalkoznia a GLUT inicializálásával, és feltételezheti, hogy a következő callback függvényt regisztráltuk:
glutDisplayFunc(onDisplay);
Csak ezt a függvényt kell megvalósítania. SR template osztályok használata engedélyezett, egy 3D vektor osztály a szokásos műveletekkel feltételezhető, ezek megírási kísérletéért nem jár pont. (15 pont)
Bónusz kérdések (1 pont darabja)
a) Mi a feltétele annak, hogy egy Monte-Carlo becslő nulla szórású legyen?
b) Mit kapcsol be a következő OpenGL hívás: glLightModelli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE)?
c) Mi az a rigging?
d) Mit jelent a trilineáris szűrés 2D textúrázás esetén?
Idő: 60 perc
-- Main.voros - 2012.05.29.