„Számítógépes grafika és képfeldolgozás házi feladat kiírások” változatai közötti eltérés

Kiskoza (vitalap | szerkesztései)
Nagy Marcell (vitalap | szerkesztései)
autoedit v2: fájlhivatkozások egységesítése, az új közvetlenül az adott fájlra mutat
 
(13 közbenső módosítás, amit 5 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
<div style="background:oldlace;padding:10px;border:1px solid lightgrey;">
{{RightTOC}}
'''Az oldal fejlesztésre szorul, amennyiben hallgatod/tad a tárgyat kérlek töltsd fel a feladatok.'''
{{Vissza|Grafika}}
</div>
 
==2015/1 őszi félév==
=== Első feladat ===
Adott egy 1000m x 1000m-res mező, amelyet kezdetben a teljes viewport-ban látunk. Az egér bal gomb lenyomásával pontokat helyezünk el a mezőn. A pontokat piros belsejű, fehér körvonalú 5m sugarú körrel jelenítjük meg. Egyrészt a pontok egy fehér, önmagában zárt Catmull-Rom spline kontrollpontjai, amelyekhez tartozó időparaméter a lenyomáskori óra állás. Másrészt az első két pont egy egyenest definiál, a harmadik pedig egy fókusz pontot. A egyenes és fókuszpont által kijelölt parabola a síkot két részre osztja. A parabola fókuszpontot tartalmazó részében a hátteret sárgára, a másik részben türkizre színezzük ki. A Catmull-Rom spline és a parabola egyik metszéspontjában (már ha van) zöld színnel érintő egyenest rajzolunk mind a parabolához, mind pedig a spline-hoz.
 
A SPACE lenyomásának hatására a kamera ablak 500m x 500m-resre megy össze úgy, hogy a középpontja helyben marad. Ezután (2m/sec,3m/sec) kezdeti sebességgel vándorútra indul. Ha a kameraablak ütközik a mező szélével, onnan biliárd golyó módjára verődik vissza.
 
Minden, a feladat szövege által nem specifikált részlet szabadon megválasztható.
 
=== Második feladat ===
Készítsen sugárkövető programot, amely egy szobát és az abban mozgó üveg ellipszoidot jelenít meg mozgó pontszerű fényforrás megvilágítása mellett.
 
<b>A virtuális világban a fény terjedési sebessége 1 m/s!!! (ezen feltételt mellőző megoldások nem fogadhatók el)</b>
 
A szoba egyik oldala aranyból van, optikailag sima és forgásparaboloid geometriájú. A szoba többi oldala diffúz és valamilyen mintával textúrázott sík. A szoba mérete 10 m x 10 m x 10 m volna, ha eltekintenénk a paraboloid kitüremkedésétől.
 
Az üveg ellipszoid tengelyei a világkoordinátarendszer egyik tengelyével sem párhuzamosak. A leghosszabb tengely 2 m, a legrövidebb 0.5 m. Az ellipszoid egyenes vonalú egyenletes mozgást véget a szoba sarkából 0.5 m/sec sebességgel úgy, hogy legalább 10 másodpercig a szoba belsejében tartózkodik, mialatt a kamerából látható.
 
A pont fényforrás ugyancsak egyenesvonalú egyenletes mozgást végez úgy, hogy az első 10 másodpercben a szoba beljesében van.
 
A programnak a SPACE lenyomásának időpontjában keletkezett képet kell megjelenítenie.
 
Az arany törésmutatója és kioltási tényezője: r: 0.17/3.1, g: 0.35/2.7, b: 1.5/1.9
 
Az üveg törésmutatója és kioltási tényezője: r: 1.5/0, g: 1.5/0, b: 1.5/0
 
=== Harmadik feladat ===
Készítsen CSIRGURU BOMBÁZÓ játékot. A csirguru a csirke és a kenguru nászából született jószág, csirke teste, csőre, szemei, taraja van, valamint egy lába, amivel kenguruszerűen ugrál. A lába a csípőízületben nem fordul el, a térízületben hátra fordul, a bokában előre (amit a normál csirke esetében hajlamosak vagyunk előre hajló térdnek hinni). Az egy szem lábujj ugyancsak felfelé hajlítható, az ízületek tengelyei egymással párhuzamosak.
 
A csirguruk testét néhány zárt Bézier görbével definiált keresztmetszetek Catmull-Rom spline-t alkalmazó transzfinit interpolációjával kell létrehozni. A szem, csör, taraj, lábrészek ismert egyenletű paraméteres felületekből (pl. gömb, kúp, henger, paraboloid stb.) összerakhatók.
 
A csirguruk egy sík, textúrázott és megvilágított terepen a bomba aktuális helye alatt, a program indításától számított másodpercenként születnek meg, majd elkezdenek ugrándozni. A lendületvételi fázisban a csirguru feneke a földhöz közelít, majd a térdízület EGYENES VONALÚ GYORSULÓ MOZGÁST (inverz kinematika) végez, mialatt a lábujj a talajon marad, a térd pedig vízszintesen tartja a csirgurut. A bokaízület kiegyenesedése pillantában a csirguru elszakad a földtől és lendületvétel végén elért kezdősebességű ferde hajítással leírható pályán ugrik, a levegőben előreteszi a lábát, a földetérkezésnél pedig a lendületvételt visszafelé játsza le. Az ugrálást ismételgetheti, az egyes ugrálások között a haladási irányát ízlésesen változtatva.
 
A felhasználó egy bombát irányíthat a mező fölött egy síkban az A, W, D, Y billentyűkkel, majd SPACE-re a bomba leesik. Ha a bomba egy csirguru közelében esik le, a csirguru testrészei független ferde hajítást követnek, mialatt midegyik testrész egy-egy forgástengely körül forog.
 
A színteret egy irányfényforrás (nap) és ambiens fényforrás világítja meg, a csirguruk és a bombák a talajra árnyékot (síkra vetített árnyék algoritmus) vetnek.
 
==2014/15 tavaszi félév==
=== Első feladat ===
Készítsen elől-felül-oldalnézetes ortografikus 3D Renner spline görbeszerkesztőt, amelyben a pálya menti sebesség közelítőleg 1 m/sec. A 600x600 pixel felbontású alkalmazói ablak négy egyenlő részre van osztva, amelyekben az elől, felül és oldalnézetek látható, egy negyed pedig üres. A világ 3m x 3m x 3m-res kocka, amelynek középpontjában vettük fel az origót. A nézetekben a teljes világ vetületei látszanak, az origó értelemszerűen középen van. A transzformációkat „kézzel” kell számítani, az OpenGL mátrixok most még nem alkalmazhatók.
 
Amíg még nincs görbénk, az egyik nézetbeli egérkattintások kontrolpontokat vesznek fel, úgy, hogy a nézetre merőleges koordináta zérus. A további nézetekbe kattintva az ott legközelebbinek talált kontrollpont áthelyezhető, a nézetre merőleges koordináta változatlanul hagyásával. A pillanatnyi állapotot minden nézetben jelezni kell, a kontrolpontokat sárga körökkel, a 3D Renner spline-t pedig a fehéren rajzolt 2D merőleges vetületeivel.
 
A SPACE lenyomására egy kör indul el a görbe kezdőpontjából és a sebességvektorát farokként maga után húzva, kb. 1 m/sec pályamenti sebességgel végigcsúszik a görbén.
 
=== Második feladat ===
Készítsen sugárkövető programot, amely 100 mm oldalhosszúságú, egyik oldalán nyitott dobozban lévő durván tesszellált, optikailag sima, tükröző arany tóruszt, és egy Schwarzschild típusú (azaz töltés nélküli és nem forgó) Föld tömegű fekete lyukat tartalmaz. A doboz oldalai diffúz+spekuláris visszaverődésűek, a diffúz tag procedúrálisan textúrázott. A színteret ambiensfény és legalább egy pontfényforrás világítja meg. Élhet azzal az egyszerűsítéssel, hogy a fekete lyuk a fényt csak az első visszaverődés után görbíti, azaz a pont fényforrás és a megvilágított felület között nem, de a rücskös és sima felületek között, valamint a felületek és a szem között igen (a másik alternatíva a fényforrásból kilépő fény görbítésére a fotontérkép módszer). A fény elgörbülését kellő tudásszomj esetén Einstein téregyenletének Schwarzschildtól származó megoldásával, egyébként pedig az ekvivalenciaelv és a klasszikus newtoni gravitációs formula felhasználásával, sugármasírozással kell szimulálni. A rendelkezésre álló CPU idő 120 sec, szükség esetén kisebb bontású kép átmintavételezésével, távolságtól függő lépés-nagysággal és befoglaló térfogatokkal lehet a programot gyorsítani.
 
A szükséges fizikai állandók: A fény sebessége: 300 000 km/sec; A föld kerülete: 40 000 km; A nehézségi gyorsulás a föld felszínén: 10 m/sec^2.
 
Az arany törésmutatója és kioltási tényezője: r: 0.17/3.1, g: 0.35/2.7, b: 1.5/1.9 A falak diffúz és spekuláris visszaverődési tényezője és shininess paramétere, valamint a textúra szabadon megválasztható.
 
=== Harmadik feladat ===
Készítsen pingvin (Pygoscelis antarcticus) szimulátort. A pingvin teste a Geometriai modellezés diasor 25. diáján szereplő felosztási séma szerinti Catmull-Clark felosztott felület, amit négyszög hálóból minimum egy, de a teljes megoldáshoz legalább két lépéssel kell felosztani. A teljes megoldásban a 40. dián lévő half-edge adatstruktúrában kell a geometriát tárolni. A pingvin teste texúrázott, diffúz, a textúrakoordinátákat hengerkoordinátákból kell számítani (hengeres vetítés). A textúra maga procedurális. A pingvinnnek még két szeme van, csőre és két mozgatható merev vagy több ízületből összerakott lába van, amit felosztott felülettel vagy paraméteres felületekből kell kialakítani.
 
A havas terepen diffúz/spekuláris tojások vannak. Az avatár pinvginünket W=jobbra fordul, E=előre lép, R=balra fordul, SPACE=leül billentyűkkel lehet irányítani. Ha a pingvin 3 másodpercet ül egy tojáson, akkor a tojás kikel és egy újabb pingvin születik azon a helyen, amely őseihez hasonlóan rohan tojásokat kikelteni. A kamera az avatár pingvinre néz mindig, de poziciója állandó. A nap, lévén, hogy a Déli sarok közelébe vagyunk, lapos szögbe világítja meg a sík tájat, tojásokat és pingvineket. A síkon, síkra vetített árnyékok láthatók, amelyek feketék.
 
==2014/15 őszi félév==
=== Első feladat ===
[[File:Graf_2014-15_01.png‎|thumb|300px|2014 ősz, 1. hf]]
 
Készítsen „Síkon táncoló kontrollpontok” programot. A felhasználó az egér balgomb egyszeri lenyomással/elengedéssel veszi fel a kontrollpontokat (max 10-et), amelyekhez 2cm sugarú kisebb fekete köröket rendelünk. Ha a kontrollpontok száma legalább kettő, azokra egy türkiszkék színű, kitöltött konvex burkot, piros Bézier görbét, nulla kezdő és végsebességű, a kontrollpont lehelyezésének idejét paraméterként használó zöld Catmull-Rom spline-t és kék Catmull-Clark görbét illeszt.
 
A háttér világosszürke. Legnagyobb prioritása a kontrollpontoknak van, majd a görbék jönnek, végül jön a konvex burok.
 
Space lenyomására a kontrollpontok egy-egy 5 cm-es kör tetejéről elindulva, 5 másodpercenként egy teljes fordulatot téve, elkezdenek keringeni, mégpedig a páros indexűek az óramutató járásával megegyező, a páratlan indexűek pedig azzal ellentétes irányban. A konvex burok és a görbék követik a kontrollpontokat. Mindezt a felhasználó egy 58cm x 68 cm-es kameraablakon keresztül látja. Ha a felhasználó az egér jobb gombbal rábök egy kontrollpontra, akkor a kameraablakot ehhez köti, a kontrollpont elmozdulása automatikusan a kameraablakot is arrébb viszi.
 
=== Második feladat ===
 
Készítsen csendéletet, ahol procedurálisan textúrázott, diffúz+Blinn spekuláris asztalon optikailag sima tárgyak, egy ellipszoid aranykaktusz, egy paraboloid ezüstkaktusz és egy henger üvegkaktusz áll (a háromból min. kettő megvalósítása szükséges). A kaktuszoktörzséből a törzzsel hasonló, de kisebb részek nőnek ki, mindig a felületre merőlegesen, legalább két további szinten (az összes részek számát úgy kell megválasztani, hogy a program 1 percen belül lefusson). A kinövő részek véletlenszerűen, nagyjából egyenletesen oszlanak el a felületen. A teret egy zöldes, egy kékes, és egy pirosas pontfényforrás világítja meg, a megvilágítási intenzitás a távolság négyzetével csökken. Az égbolt világoskék. Árnyékok vannak. A kamera az asztal fölött van és enyhén lefelé néz.
 
A sugár-objektum metszéspontot és a normálvektort a metszéspontban analitikusan kell számolni.
 
Az említett anyagok törésmutatója (n) és kioltási tényezője (k):
 
...................r..........g..........b
 
Üveg (n/k)......1.5/0.0, 1.5/0.0, 1.5/0.0
 
Arany (n/k).....0.17/3.1, 0.35/2.7, 1.5/1.9
 
Ezüst (n/k).....0.14/4.1, 0.16/2.3, 0.13/3.1
 
=== Harmadik feladat ===
[[File:Graf_2014-15_03.png|thumb|300px|2014 ősz, 3. hf]]
 
Készítsen szimulátort műhold befogáshoz a Мир űrállomás számára! A fényforrás a távoli nap. Az űrállomás a csillagos égbolt előtt, egy diffúz, procedurálisan textúrázott bolygó körül kering, pályája nem geostracionárius. A bolygót átlátszó kékes légkör veszi körül. Az űrállomás teste fémes csillogású forgástest, a sziluett Catmull-Rom spline-nal adandó meg. Az űrállomáson van egy nagyjából kör alakú lyuk. Az űrállomáshoz legalább két napelem tábla tartozik. Az űrállomás egy, a fő tehetetlenségi iránytól különböző tengely körül lassan forog.
 
Az avatárunk éppen űrsétát végez, magát az űrállomáshoz kötve egy hosszú gumikötél végén rángatózva. A gumikötél csak egy adott távolság után feszül meg, azon túl Hooke törvény szerint nyúlik. Az űrállomástól nem zérus sebességgel rúgtuk el magunkat. Avatárunk tömege az űrállomás tömegénél sokkal kisebb. Az avatár mindig az űrállomás nyílása felé néz.
 
A mesterséges hold gömb alakú, amiből legalább három henger vagy kúp alakú fúvóka nyúlik ki (bónusz: ha a fúvókák tengelye nem megy át a súlyponton, akkor a forgását is szabályozhatjuk). Kezdetben a műhold az űrállomáshoz képest lassan halad és forog. A műhold ugyancsak diffúz-spekuláris, a fúvókák színe alapján vezérelhetjük őket. Ha a q, w, ... billentyűket lenyomjuk, a betűhöz rendelt fúvókán egy lángnyelv tör ki, a műhold pedig ellentétes irányú I impulzust kap. A lendület és perdület, mint mindig, itt is megmarad.
 
A játék célja, hogy a mesterséges hold az űrállomás nyílásán besétáljon.
 
A harmadik feladat a játék "csendélete", még nem kell az objektumokat animálni és lángnyelvet sem kell kilőni. A virtuális világ életre keltése és vezérlése a negyedik házi feladata lesz.
 
=== Negyedik feladat ===
 
Egészítse ki a 3. feladatot az ott specifikált felhasználói beavatkozási lehetőségekkel és animációval.
 
==2013/14 őszi félév==
=== Első feladat ===
 
[[File:Grafika_13osz_hazi1.png|thumb|300px|2013 ősz, 1. hf]]
 
Készítsen "Kaksiulotteisia vihaisia lintuja" programot, amelyben egy piros és egy zöld madár szerepel, valamint világos zöld talaj, a talajból kiálló tetszőleges színű kétágú csúzli, amely fekete színű széles gumival fogja körbe a kilövendő piros madarat. A csúzli tára, ahol a piros madár várja a sorsa beteljesülését, a 600x600 felbontású alkalmazói ablak bal felső sarkához képest 200 pixellel jobbra és 400 pixellel lejjebb van.
 
A madarak teste, szeme és szemgolyója ellipszis (nem kör!), csőrük, farktollaik és szemöldökeik háromszögek. Szárny és bóbita opcionális. A zöld madár fel-le repked akár szárnyak nélkül is, magassága az időben szinuszosan változik az ütközésig. A piros madarat csúzliból lehet kilőni a fizikai törvényeknek megfelelően, a csúzli rugóenergiáját teljes mértékben átveszi a madár induláskor. A kilövés folyamat azzal kezdődik, hogy az egér bal gombjának lenyomásával a madár ellipszis alakú testének belsejébe klikkelünk, amikor a madár a kurzorhoz ragad és követi az kurzor mozgását az egérgomb elengedéséig. A csúzli gumija végig szorosan feszül a madár fenekére. Amikor elengedjük a bal gombot a piros madarat is útjára bocsátjuk, azaz kirepül a csúzliból. Perdülettel és forgással nem kell foglalkozni. A piros madárra reptében a nehézségi erő hat, közegellenállás és felhajtóerő (nincs szárnya, amivel csapkodna) pedig nincs. Ha a piros és a zöld madár ellipszis teste ütközik (figyelem, két ellipszis ütközését pontosan kell számítani), mindketten megállnak a levegőben és a piros madár sárgává változik. Ha a piros madár kirepül a látható tartományból, automatikusan születik egy új a csúzliban fejjel lefelé a két ág "között".
 
A feladat megoldásához csak az előadáson eddig szerepelt OpenGL függvények használhatók, azaz: glBegin, glEnd, glColor, glVertex, glViewport.
 
Figyelem: a keret változott, ezért a korábbi évek kereteit nem lehet használni.
 
Beadási határidő: 2013. 10. 01. 23:59 (Kiadás dátuma: 2013.09.18.)
 
=== Második feladat ===
 
[[File:Grafika_13osz_hazi2.png|thumb|300px|2013 ősz, 2. hf]]
 
Készítsen 2D editort, amivel egy 100m x 100m-es területet lehet berendezni, amelybe egy 50m x 50m-es ablakú kamerával nézünk bele. Az ablakot minden ‘s’ lenyomásra a (10, 20) vektor tolja el. Ha az ablak elérte a terület szélét, akkor visszaugrik a bal alsó sarokba. A program a bal egérgomb lenyomásainak helyét kontrollpontnak, az lenyomás pillanatában az óra állását pedig csomóértéknek (kontrollponthoz rendelt paraméterértéknek) tekinti, így minden bal egérgomb lenyomással egy újabb kontrollpontot vehetünk fel (max 10 kontrollpontra kell a programot felkészíteni). A kontrollpontokra egy fehér Tenziós Catmull-Rom (TCR) spline-t illeszt, ahol a tenzió mindenhol -0.5. A kontrollpontok nyugalmi állapotukban 1m sugarú piros kitöltött körök.
 
Space lenyomására a program aktivizálódik, a spline-t megduplázza és az új változatot 60 fokkal a kontrollpontok súlypontja (aminek koordinátáit a kontrollpontok koordinátánkénti aritmetikai közepeként számíthatunk) körül elforgatja, majd kék Bézier görbét csinál belőle (mialatt az eredeti TCR marad a helyén). Ezután egy-egy 1 m sugarú sárga kitöltött kör indul el minden görbén, mégpedig a TCR-n a paraméterezésnek megfelelő időzítéssel, azaz annyi idő alatt ér a görbe végére, ameddig a kontrollpontot felvétele tartott. A Bézier-t a saját köre úgy futja be, hogy ugyanakkor érkezzen a végére, mint a TCR-n szaladó társa. A futamok újra kezdődnek. A futás alatt a kontrollpontokat ábrázoló kitöltött körök sugara folyamatosan változik amivel azt mutatják, hogy milyennek kell lennie az ide elhelyezett súly abszolút értékének, hogy a görbe aktuális pontját a kontrollpontok ilyen súlyokkal vett kombinációjaként kapjuk meg (Bézier-nél nyilván a Berstein polinom, TCR-nél érdemes gondolkodni egy kicsit). Ha a súly pozitív, a kör piros. Ha negatív, akkor türkisz kék.
 
Figyelem: csak közelítőleg C2 folytonos és egzaktul C1 folytonos valódi, nem egyenletes TCR spline elfogadható, pl. Catmull-Rom és felesleges dolgokat tartalmazó Kochanek-Bartels nem. Közérthetőbben: az Internetről másolt spline-ok ellenjavaltak.
 
Beadási határidő: 2013. 10. 20. 23:59 (Kiadás dátuma: 2013.10.04.)
 
=== Harmadik feladat ===
 
[[File:Grafika_13osz_hazi3.png|thumb|300px|2013 ősz, 3. hf]]
 
Készítsen négyhengeres sugárkövető programot. Az 1. henger tartalmazza a teljes színteret, fala optikailag sima arany, alapja megválasztható színű diffúz, teteje hiányzik, amin a fehér égbolt világít be (ezt úgy lehet figyelembe venni, hogy azok a sugarak, amelyek kilépnek a hengerből ilyen sugársűrűséggel térnek vissza). A többi henger az 1. belsejében van, tengelyük sem egymással, sem bármelyik koordinátatengellyel nem párhuzamos. A 2. anyaga optikailag sima ezüst, a 3. anyaga optikailag sima réz, a 4. anyaga optikailag sima üveg, gyémánt vagy megválasztható színű diffúz lehet. Az homogén égbolton kívül még egy vagy több optikailag sima ezüst forgásparaboloid reflektorú, nem a fókuszba helyezett pontszerű fényforrás világítja meg a teret.
 
A kamerát úgy kell elhelyezni, hogy a hengerek láthatók legyenek. Fotontérképet nyilván csak a diffúz felületekhez kell rendelni az optikailag sima felületekhez nem. A fotonok számát úgy kell beállítani, hogy a program 1 percen belül 1 CPU magon lefusson (ha ezt az időt túllépi, a fotonszámot érdemes csökkenteni, pl. úgy, hogy ne legyen 10^4-nél lényegesen nagyobb, de a nem lépi túl, akkor lehet több fotonnal is dolgozni). A fotontérkép felbontását pedig úgy kell meghatározni, hogy a kausztika az adott fotonszám mellett sima legyen.
 
Anyagtulajdonságok:
 
Optikailag sima anyagok:
 
<code>
<pre>
...................r..........g..........b
Üveg (n/k)......1.5/0.0,  1.5/0.0,  1.5/0.0
Gyémánt (n/k)...2.4/0.0,  2.4/0.0    2.4/0.0
Arany (n/k).....0.17/3.1,  0.35/2.7,  1.5/1.9
Réz (n/k).......0.2/3.6,  1.1/2.6,  1.2/2.3
Ezüst (n/k).....0.14/4.1,  0.16/2.3,  0.13/3.1
</pre>
</code>
 
Diffúz anyagok: kd(r,g,b) tetszőlegesen, jó ízléssel megválasztható.
 
Beadási határidő: 2013. 11. 10. 23:59 (Kiadás dátuma: 2013.10.25.)
 
=== Negyedik feladat ===
 
[[File:Grafika_13osz_hazi4.png|thumb|300px|2013 ősz, 4. hf]]
 
Készítsen OpenGL programot, amely egy (fekete foltos textúrájú), de alapvetően fehér diffúz+spekuláris testű Szalámi Gólyát és zöld diffúz+erősen spekuláris testű (nyálkás) Ellipszoid Békákat jelenít meg diffúz, textúrázott terepen. A Szalámi Gólya onnan ismerszik meg, hogy ha testét a Catmull-Rom spline vázára merőlegesen bárhol kettészeljük, akkor a metszet kör alakú (a váz definíciója: ha a Szalámi Gólya testének minden felületi pontját egyszerre gyújtjuk meg, akkor a tűzfrontok a vázban találkoznak). A kör sugara a váz mentén változik, amelyet egy másik Catmull-Rom spline-nal kell megadni. A gólyának és a békáknak is két-két szemük van, a gólyának még piros kúp alakú csőre és két gólyalába van (amelyek biológiai ismereteink szerint, a mi lábunkkal ellentétben, térdben előre és nem visszafelé hajlíthatók). A gólya arányai olyanok, hogy előrehajolva a csőrének végével elérné a talajt. Az Ellipszoid Békák testrészei ellipszoidok. A terep textúrázott, nem szükségképpen sík. Tereptárgyak tetszés szerint megválaszthatók. A színteret a nap (irányfényforrás) az ég (ambiens fényforrás) és egy energiától duzzadó szentjános bogár (pontfényforrás) világítja meg.
 
Beadási határidő: 2013. 12. 04. 23:59 (Kiadás dátuma: 2013.11.20., Beadási határidő először: 2013. 12. 01. 23:59, majd kitolva a határidő: 2013.12.03.; UTÁNA szerverprobléma miatt: 2013.12.04. 23:59)
 
=== Ötödik feladat ===
 
[[File:Grafika_13osz_hazi5.png|thumb|300px|2013 ősz, 5. hf]]
 
Mozgassa meg a 4. házi objektumait. A gólya lépeget előre 1 lépés/sec sebességgel. A támaszkodó láb nem csúszkál (inverz kinematika). A ‘J’ billentyű lenyomására 0.5 sec alatt 10 fokot jobbra fordul célszerűen a támaszkodó láb körül, hasonlóan a ‘B’ billentyű lenyomására balra. A SPACE hatására a nyakát előrehajtva lecsap és ha békatestet talál (végtagok nem számítanak), akkor a béka eltűnik. A gólyát csontváz animációval kell mozgatni, a lábrészek és a nyak hossza nem változhat a mozgás során. A láb részei tekinthetők merev testnek, de a gólyatest nem, így azt a csontvázra "bőrözni" kell. A békák merev testként akár véletlen irányokba ugrálhatnak, de két ugrás között 1 sec rákészülési időre van szükségük. A terepet illetően két lehetőség közül lehet választani. Az elsőben a terep sík és akkor a testeknek van árnyékuk rajta, amit a nap vet (síkra vetített árnyék algoritmus). A másik lehetőség, hogy a terep nem sík.
 
Beadási határidő: 2013. 12. 16. 11:00 (Kiadás dátuma: 2013.12.04.)
 
==2012/13 tavaszi félév==
==2012/13 tavaszi félév==
=== Első feladat ===
=== Első feladat ===


[[Fájl:Grafika_2013t_hf1.png|thumb|300px|2013 tavasz, 1. hf]]
[[File:Grafika_2013t_hf1.png|thumb|300px|2013 tavasz, 1. hf]]


Készítsen breakout játékot, fejet hajtva a játékfejlesztés úttörői előtt.
Készítsen breakout játékot, fejet hajtva a játékfejlesztés úttörői előtt.
23. sor: 192. sor:
=== Második feladat ===  
=== Második feladat ===  


[[Fájl:Grafika_2013t_hf2.png|thumb|300px|2013 tavasz, 2. hf]]
[[File:Grafika_2013t_hf2.png|thumb|300px|2013 tavasz, 2. hf]]


Készítsen 2D editort, ami az egér balgomb lenyomásokat kontrolpontokként értelmezi, amelyekre egy piros Catmull-Rom (CR) spline-t és egy zöld CRI-spline-t is illeszt.
Készítsen 2D editort, ami az egér balgomb lenyomásokat kontrolpontokként értelmezi, amelyekre egy piros Catmull-Rom (CR) spline-t és egy zöld CRI-spline-t is illeszt.
103. sor: 272. sor:
===Első feladat===
===Első feladat===


[[Fájl:Grafika_2011ő_hf1.png|thumb|300px|2011 ősz, 1. hf]]
[[File:Grafika_2011ő_hf1.png|thumb|300px|2011 ősz, 1. hf]]


Készítsen 2D giliszta üldözéses játékot OpenGL-ben.
Készítsen 2D giliszta üldözéses játékot OpenGL-ben.
118. sor: 287. sor:
===Második feladat===
===Második feladat===


[[Fájl:Grafika_2011ő_hf2.png|thumb|300px|2011 ősz, 2. hf]]
[[File:Grafika_2011ő_hf2.png|thumb|300px|2011 ősz, 2. hf]]


Készítsen üde zöld füves versenypályát kb. 4 cm-es 2.5 dimenziós atlétacsigák (Gastropoda Athleta Dimensio II.V) számára! Az atlétacsiga az éticsigával ellentétben bedől a kanyarban, lassításkor előre, fékezéskor hátra hajol, általában a rá ható erő irányába és azzal arányosan dönti a testét. Az atlétacsiga 2.5 dimenziós volta annyit jelent, hogy ugyan 2 dimenziós görbék által kitöltött területekből áll, de a görbék kontrolpontjainak van z koordinátája is, amely alapján a pont elmozdul az x,y síkon az erővel és a z koordinátával arányosan. A test határa zárt Catmull-Rom spline (amiből a vektorizáció konkáv sokszöget hoz létre, melyet fülvágó algoritmussal kell háromszögekre bontani), a szemek határai zárt Bézier görbék, a ház több Catmull-Clark subdivision görbével határolt sokszög. Az atlétacsiga referenciapontja (pivot pont) a referenciahelyzetében az origó, hossztengelye az y tengely (a referenciapont kerül mindig a pálya fölé, és e körül fordul el az atlétacsiga a haladási irányba). A csigát - a saját érdekében &#8211; a kontrolpontokon végrehajtott saját skálázással és elforgatással, majd a csúcspontokon glTranslatef függvényekkel kell pályára helyezni. A pálya ugyancsak zárt Catmull-Rom spline, hossza kb. 1 méter, a vezérlőpontokat POINT primitívekkel lehet felrajzolni. A virtuális világban az egységet cm-re kell választani. Az atlétacsiga a pályagörbe paraméterét egyenletesen változtatva mozog a pályán, 5 másodperc alatt ér körbe. Az egér bal gombjának lenyomása a pálya kurzorhoz legközelebbi kontrolpontját a kurzor aktuális helyére mozdítja. A kamera induláskor az egész pályát befogja, a z betű lenyomásával viszont rázoomol a csigára és követi a pályáján. A kamerát a gluOrtho2D függvénnyel kell implementálni. A Catmull-Rom és Catmull-Clark kötelező műsorszám. A fülvágás, Bézier görbe, interaktív pályamódosítás és zoom részfeladatokból mind megpróbálandó, de ezekből kettő lehet hibás is, attól még elfogadjuk a feladatot.
Készítsen üde zöld füves versenypályát kb. 4 cm-es 2.5 dimenziós atlétacsigák (Gastropoda Athleta Dimensio II.V) számára! Az atlétacsiga az éticsigával ellentétben bedől a kanyarban, lassításkor előre, fékezéskor hátra hajol, általában a rá ható erő irányába és azzal arányosan dönti a testét. Az atlétacsiga 2.5 dimenziós volta annyit jelent, hogy ugyan 2 dimenziós görbék által kitöltött területekből áll, de a görbék kontrolpontjainak van z koordinátája is, amely alapján a pont elmozdul az x,y síkon az erővel és a z koordinátával arányosan. A test határa zárt Catmull-Rom spline (amiből a vektorizáció konkáv sokszöget hoz létre, melyet fülvágó algoritmussal kell háromszögekre bontani), a szemek határai zárt Bézier görbék, a ház több Catmull-Clark subdivision görbével határolt sokszög. Az atlétacsiga referenciapontja (pivot pont) a referenciahelyzetében az origó, hossztengelye az y tengely (a referenciapont kerül mindig a pálya fölé, és e körül fordul el az atlétacsiga a haladási irányba). A csigát - a saját érdekében &#8211; a kontrolpontokon végrehajtott saját skálázással és elforgatással, majd a csúcspontokon glTranslatef függvényekkel kell pályára helyezni. A pálya ugyancsak zárt Catmull-Rom spline, hossza kb. 1 méter, a vezérlőpontokat POINT primitívekkel lehet felrajzolni. A virtuális világban az egységet cm-re kell választani. Az atlétacsiga a pályagörbe paraméterét egyenletesen változtatva mozog a pályán, 5 másodperc alatt ér körbe. Az egér bal gombjának lenyomása a pálya kurzorhoz legközelebbi kontrolpontját a kurzor aktuális helyére mozdítja. A kamera induláskor az egész pályát befogja, a z betű lenyomásával viszont rázoomol a csigára és követi a pályáján. A kamerát a gluOrtho2D függvénnyel kell implementálni. A Catmull-Rom és Catmull-Clark kötelező műsorszám. A fülvágás, Bézier görbe, interaktív pályamódosítás és zoom részfeladatokból mind megpróbálandó, de ezekből kettő lehet hibás is, attól még elfogadjuk a feladatot.
187. sor: 356. sor:
===Első feladat===
===Első feladat===


[[Fájl:Grafika_2011t_hf1.png|thumb|300px|2011 tavasz, 1. hf]]
[[File:Grafika_2011t_hf1.png|thumb|300px|2011 tavasz, 1. hf]]


Egér labirintusban.
Egér labirintusban.
199. sor: 368. sor:
===Második feladat===
===Második feladat===


[[Fájl:Grafika_2011t_hf2.png|thumb|300px|2011 tavasz, 2. hf]]
[[File:Grafika_2011t_hf2.png|thumb|300px|2011 tavasz, 2. hf]]


Készítsen Valentin napi dobogó szívecskét!
Készítsen Valentin napi dobogó szívecskét!
211. sor: 380. sor:
===Harmadik feladat===
===Harmadik feladat===


[[Fájl:Grafika_2011t_hf3.png|thumb|300px|2011 tavasz, 3. hf]]
[[File:Grafika_2011t_hf3.png|thumb|300px|2011 tavasz, 3. hf]]


Üveg ellipszoid és rézből készült tesszellált, paraméteres felület arany falú csonkakúpban, sugárkövetéssel megjelenítve.
Üveg ellipszoid és rézből készült tesszellált, paraméteres felület arany falú csonkakúpban, sugárkövetéssel megjelenítve.
255. sor: 424. sor:
===Első feladat===
===Első feladat===


[[Fájl:Grafika_2010ő_hf1.jpg|thumb|300px|2010 ősz, 1. hf]]
[[File:Grafika_2010ő_hf1.jpg|thumb|300px|2010 ősz, 1. hf]]


Írjon 2D útkereszteződés szimulátort.
Írjon 2D útkereszteződés szimulátort.
270. sor: 439. sor:
===Második feladat===
===Második feladat===


[[Fájl:Grafika_2010ő_hf2_1.jpg|thumb|300px|2010 ősz, 2. hf - ugrás előtt]]
[[File:Grafika_2010ő_hf2_1.jpg|thumb|300px|2010 ősz, 2. hf - ugrás előtt]]


A Placcs családban három lány van, Placcs Bereniké, Placcs Cezarina és Placcs Nikodémia. Benediké 2D-s sziluettjét egyetlen Bézier görbével, Cezariáét egy Catmull-Rom spline-nal, Nikodémiáét pedig egy NURBS-szel írhatjuk le (vajon melyikük schlank?).
A Placcs családban három lány van, Placcs Bereniké, Placcs Cezarina és Placcs Nikodémia. Benediké 2D-s sziluettjét egyetlen Bézier görbével, Cezariáét egy Catmull-Rom spline-nal, Nikodémiáét pedig egy NURBS-szel írhatjuk le (vajon melyikük schlank?).
276. sor: 445. sor:
A lányok normális testalkatúak, tehát egy-egy fejük, két-két lábuk, illetve kezük van. A lányokat hasonló referenciahelyzetben, célszerűen, de nem kötelezően, ugyanazokkal a vezérlőpontokkal definiáljuk. A Placcs család a 2D-s világban egy 10 m hosszú és 10 méter magas lakást birtokol, a kb. 3 méter magas lányok a világban kényelmesen elférnek egymás mellett. A lányok balettoznak, így ha nevük kezdőbetűjét lenyomjuk, akkor egy 1 méter magas grand jeté-t mutatnak be (= nagy, repülésszerű ugrás, horizontálisan szétvetett lábakkal) és a levegőben maradnak mindaddig, amíg rájuk nem klikkelünk. Ekkor visszatérnek a földre (a lányok lába a föld közelébe kerül, de nem kell tökéletesen pontosan a földön állniuk). A lányokat szivárvány színátmenettel kitöltött területekkel jelenítjük meg, ahol monokromatikus fényeknek megfelelő színek követik egymást, minden lánynál más irányban.
A lányok normális testalkatúak, tehát egy-egy fejük, két-két lábuk, illetve kezük van. A lányokat hasonló referenciahelyzetben, célszerűen, de nem kötelezően, ugyanazokkal a vezérlőpontokkal definiáljuk. A Placcs család a 2D-s világban egy 10 m hosszú és 10 méter magas lakást birtokol, a kb. 3 méter magas lányok a világban kényelmesen elférnek egymás mellett. A lányok balettoznak, így ha nevük kezdőbetűjét lenyomjuk, akkor egy 1 méter magas grand jeté-t mutatnak be (= nagy, repülésszerű ugrás, horizontálisan szétvetett lábakkal) és a levegőben maradnak mindaddig, amíg rájuk nem klikkelünk. Ekkor visszatérnek a földre (a lányok lába a föld közelébe kerül, de nem kell tökéletesen pontosan a földön állniuk). A lányokat szivárvány színátmenettel kitöltött területekkel jelenítjük meg, ahol monokromatikus fényeknek megfelelő színek követik egymást, minden lánynál más irányban.


[[Fájl:Grafika_2010ő_hf2_2.jpg|thumb|300px|2010 ősz, 2. hf - ugrás közben]]
[[File:Grafika_2010ő_hf2_2.jpg|thumb|300px|2010 ősz, 2. hf - ugrás közben]]


A 2D kamera (ablak), amelyen keresztül belesünk Placcsék lakásába, kezdetben a teljes szobát mutatja. A középső lány olyan magasra fog ugrani, hogy a kamerakép közepére kerüljön. SPACE lenyomására a kameránk mindig a következő lányt veszi célba (a lány, ha felugrott a kép közepén lesz), és a kamerán "látószöge" (a befogott tartomány) minden SPACE után kisebb lesz, azaz folyamatosan zoom-olunk. A referenciahelyzetből a világ aktuális helyére vivő modellezési transzformációt az OpenGL MODELVIEW, a kameratranszformációt pedig a PROJECTION transzformációjával kell megvalósítani.
A 2D kamera (ablak), amelyen keresztül belesünk Placcsék lakásába, kezdetben a teljes szobát mutatja. A középső lány olyan magasra fog ugrani, hogy a kamerakép közepére kerüljön. SPACE lenyomására a kameránk mindig a következő lányt veszi célba (a lány, ha felugrott a kép közepén lesz), és a kamerán "látószöge" (a befogott tartomány) minden SPACE után kisebb lesz, azaz folyamatosan zoom-olunk. A referenciahelyzetből a világ aktuális helyére vivő modellezési transzformációt az OpenGL MODELVIEW, a kameratranszformációt pedig a PROJECTION transzformációjával kell megvalósítani.
288. sor: 457. sor:
===Harmadik feladat===
===Harmadik feladat===


[[Fájl:Grafika_2010ő_hf3.jpg|thumb|300px|2010 ősz, 3. hf]]
[[File:Grafika_2010ő_hf3.jpg|thumb|300px|2010 ősz, 3. hf]]


Készítsen mozgó pont fényforrással megvilágított csendéletet kétirányú sugárkövetéssel.
Készítsen mozgó pont fényforrással megvilágított csendéletet kétirányú sugárkövetéssel.
313. sor: 482. sor:
===Negyedik feladat===
===Negyedik feladat===


[[Fájl:Grafika_2010ő_hf4.png|thumb|300px|2010 ősz, 4. hf]]
[[File:Grafika_2010ő_hf4.png|thumb|300px|2010 ősz, 4. hf]]


Írjon OpenGL programot, amely a Star Wars univerzum Rishi bolygóján egy rövid jelenetet mutat be.
Írjon OpenGL programot, amely a Star Wars univerzum Rishi bolygóján egy rövid jelenetet mutat be.
438. sor: 607. sor:


Beadási határidő: 2009. 11. 03. 23:59
Beadási határidő: 2009. 11. 03. 23:59
* [http://keer0y.luminarium.hu/graf2.jpg Egy megoldás viszonylag sok fotonnal (keeroy)]
* [http://keer0y.luminarium.hu/graf2-more.jpg Még többel :) (keeroy)]
* [http://mozes.info/pub/etc/vegleges_10M.png Tizmillio foton (obrien)]


===Harmadik feladat===
===Harmadik feladat===
465. sor: 630. sor:
===Nagy házi feladatok tabló===
===Nagy házi feladatok tabló===


[[Fájl:Grafika_2009ő_tabló.jpg|thumb|500px|2009 ősz, tabló]]
[[File:Grafika_2009ő_tabló.jpg|thumb|500px|2009 ősz, tabló]]




[[Category:Infoalap]]
[[Category:Infoalap]]