Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Grafikus játékok fejlesztése

    A tantárgy angol neve: Computer Games

    Adatlap utolsó módosítása: 2012. május 30.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Mérnök Informatikus szak

    Villamosmérnöki Szak

    Szabadon választható tantárgy

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIJV46   4/0/0/v 4  
    3. A tantárgyfelelős személy és tanszék Dr. Szécsi László, Irányítástechnika és Informatika Tanszék
    A tantárgy tanszéki weboldala http://bagira.iit.bme.hu/~szecsi/graphgame.html
    4. A tantárgy előadója
    Név:Beosztás:Tanszék, Int.:
    Szécsi Lászlótudományos segédmunkatársIrányítástechnika és Informatika Tanszék
    5. A tantárgy az alábbi témakörök ismeretére épít Programozás, szoftvertervezés, matematika, fizika
    6. Előtanulmányi rend
    Kötelező:
    NEM ( TárgyTeljesítve("BMEVIIIAV46") )

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rendek grafikus formában itt láthatók.

    Ajánlott:

    Programozás alapjai tárgy elvégzése, azaz C++ programozási ismeretek szükségesek. A tárgy (erősen gyakorlati szemlélettel) áttekinti a szükséges számítógépes grafikai alapokat, így a Számítógépes Grafika tárgy hallgatása előtt is felvehető.

    A tantárgyat nem vehetik fel azok, akik már előzőleg teljesítették a VIIIAV46 (Grafikus játékok fejlesztése) tantárgyat.

    7. A tantárgy célkitűzése A tárgy a játékfejlesztésben használt alapvető grafikai ismereteket, az azokra épülő technikákat mutatja be gyakorlati példákon, DirectX/HLSL implementációkon keresztül. A hallgatók a grafikus kártya programozását, a legelterjedtebb, illetve legfrissebb grafikai algoritmusokat és trükköket ismerhetik meg, ezzel a játékfejlesztés hardver-közeli területén szerezhetnek szakértelmet. A tárgy ismerteti a játékfejlesztés nem szigorúan grafikai elemeit, a fizikai szimulációt és az ütközés-kezelést, valamint az ezeket összekötő programstruktúrát is
    8. A tantárgy részletes tematikája
      1. Modellezés
        1. Modellezési technikák.
        2. A háromszögháló. Csúcspont és index buffer (Vertex és index buffer) reprezentáció.
        3. Gyakorlat: A DirectX x fájl formátum. Bevezetés az effect keretrendszer használatába. A mesh, device és effect interfészek. 3D objektum megjelenítése transzformációk és megvilágítás nélkül.
      2. Transzformációk
        1. Koordináta rendszerek és transzformációik. Projektív geometria, ideális pont, Descartes és homogén koordináták viszonya, beágyazott modell.
        2. A transzformációs csővezeték. A modellezési, világ-, kamera- és képernyő-koordináták szerepe, és a közöttük átvivő transzformációk.
        3. Gyakorlat: Mátrixok DirectXben. Kamera osztály használata. A csúcspont árnyaló (vertex shader) szerepe. HLSL alapok. Globális paraméterek. Mozgó 3D objektum megjelenítése, a kamera mozgatása.
      3. 3D képalkotás
        1. A teljes 3D képalkotási csővezeték: fix és programozható szakaszok, vágás, raszterizáció és mélységteszt. A pixel és csúcspont árnyaló (pixel és vertex shader) környezete.
        2. Lokális megvilágítás-számítás és absztrakt fényforrás-modellek. A Lambert és Phong felületi fényvisszaverődés modell.
        3. Gyakorlat: Kísérletek a mélységteszttel. A csúcspont bufferben (vertex buffer) tárolt árnyalási információk szerepe. Csúcspontonkénti (per vertex lighting) és pixelenkénti (per pixel lighting), Gouraud és Phong árnyalás. Több objektum megjelenítése megvilágítás-számítással, mozgó fényforrásokkal.
      4. Textúrák és raszterműveletek
        1. A textúrák szerepe. Textúra-koordináták. Textúra formátumok. Szűrés. Mipmapelés. Perspektív-helyes textúrázás. Kockatextúrák (cube textures) és a környezeti leképezés (environment mapping). Az ideális tükör felületi fényvisszaverődési modell.
        2. Keverés (blending) és átlátszóság. Hátsólap-eldobás.
        3. Anti-aliasing. Előszűrés és utószűrés (FSAA vagyis full-screen anti-aliasing).
        4. Gyakorlat: Kísérletek a keverés (alpha blending) és többszörös mintavételezés (multisampling) opciókkal. A textúra interfész a DirectX-ben. Textúrázó egységek (samplers) és textúra olvasás HLSL-ben. Többmenetes (multi-pass) képalkotás. Képernyőt lefedő négyszög (full-screen quad). Textúrázott, illetve a környezet tükröző objektumok, és végtelen távoli környezet-textúra megjelenítése.
      5. Plakátok (billboards) és részecske-rendszerek
        1. Sprite. Plakátok.
        2. Plakátfelhők. Részecske-rendszerek.
        3. Geometriapéldány-gyártás (geometry instancing).
        4. Gyakorlat: Részecske-rendszer megvalósítása. Csúcspont és index bufferek összeállítása hardveres példány-gyártáshoz. Plakát beforgatása a csúcspont árnyalóban. Alpha blending és átlátszósági rendezés. Animált füst megjelenítése.
      6. Textúrába rajzolás (Render-to-texture)
        1. A lokalitás problémája. A rajzolási célpont (render target) fogalma. MRT (multiple render target, több párhuzamos rajzolási célpont). Portálok. Imposztorok.
        2. Késleltetett árnyalás (deferred shading). Gömbplakátok (spherical billboards).
        3. Gyakorlat: A DirectX surface interfész. Egy render-to-texture pass megvalósítása, egy fa rajzolásával. Az eredményül kapott textúra megjelenítése plakátokon, így erdőt rajzolva. Gömbplakátok megvalósítása, vágási hibák nélküli füst megjelenítése.
      7. Árnyékok
        1. Síkra vetített árnyék. Mélység-térképek létrehozása és használata. Takarás-szűrés (percentage closer filtering). Lágy árnyék (soft shadow) eljárások.
        2. Gyakorlat: Több DirectX mélység-stencil felület használata. Hardver mélység-térképek. Mélység-térkép alapú árnyékok megvalósítása pontszerű fényforrásra.
      8. A játék színterének felépítése
        1. Világ-objektumok heterogén kollekciója. Hierarchikus színtér-gráfok.
        2. Valósidejű animáció. Az élethű mozgás fizikája. Newtoni mozgás. Pozíció, sebesség és gyorsulás az elmozdulás és elfordulás tekintetében. Forgatások leírása kvaterniókkal. Animáció időlépcsőkben. Az animáció beágyazása a színtér-objektumok rendszerbe.
        3. Gyakorlat: Színtérgráf megvalósítása. Fizikai animációval mozgatott objektumok megjelenítése, fizikai alapon mozgó kamerából nézve.
      9. Játéklogika
        1. Folytonos és diszkrét ütközésvizsgálat. Térfelosztás és befoglaló alakzatok. Ütközés-válasz stratégiák. Az ütköző merev testek fizikája. Az ütközés-kezelés beágyazása a színtér-objektumok rendszerbe.
        2. Játék-intelligencia. Egyszerű célokon alapuló vezérlés. A felhasználói és mesterséges intelligencia alapú vezérélés beágyazása a színtér-objektumok rendszerbe.
        3. Gyakorlat: Statikus földfelszín objektum. A talajjal ütközés detektálása és az ütközés-válasz megvalósítása. A mozgó játékobjektumok közötti ütközés-detektálás és válasz megvalósítása, befoglaló gömbök segítségével. Egyszerű mesterséges intelligencia megvalósítása. Az eredmény egy komplett kis játék, több mozgó, ütköző objektummal, melyek egyikét a játékos irányítja.
      10. Karakter-animáció
        1. Karakter modellek. Csontváz animáció. Merev bőrözés. Transzformációs láncok.
        2. Sima bőrözés. Transzformációk keverése a csúcspont árnyalóban.
        3. Az inverz kinematika célja.
        4. Gyakorlat: Animált karakter megjelenítése a csúcspont árnyalóban magvalósított sima bőrözéssel.
      11. Stencil trükkök
        1. Stencil buffer és stencil teszt. Stencil tükrök. Árnyéktestek. Stencil árnyékok.
        2. Gyakorlat: DirectX mélység-stencil felületek. Síktükör megvalósítása a stencil buffer használatával. Egy árnyéktest implementáció tanulmányozása.
      12. (14. hét) Sugárkövetés és fraktálok
        1. Sugármetszéspont-számítás. Rekurzív sugárkövetés. Sugárkövetés a grafikus kártyán és helyettesítő megoldások.
        2. Gyakorlati bevezető a fraktálok grafikai alkalmazásáról. Julia és Mandelbrot halmazok. Iterált függvény-rendszerek (IFS). Káoszjáték.
        3. Gyakorlat: Mandelbrot és Julia halmazok megjelenítése a pixel árnyaló használatával. IFS megjelenítése káoszjátékkal.
    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Heti 2 óra előadás, ahol elhangzanak az elméleti alapok, és a gyakorlati feladat megoldásához szükséges ismeretek is, valamint 2 óra számítógép melletti gyakorlat, ahol egy konkrét grafikai algoritmust kell implementálni DirectX környezetben.

    Minden óra alkalmas számítógépekkel felszerelt tanszéki teremben zajlik, ahol a téma megkívánja, az előadás helyett is tudunk gyakorlati órát tartani.

    10. Követelmények

    a. A szorgalmi időszakban: Házi feladat.

    b. A vizsgaidőszakban: Gyakorlati vizsga.

    c. Elővizsga: van

    11. Pótlási lehetőségek A házi feladatot a szorgalmi időszak végéig le kell adni. Pótlási lehetőség a pótlási héten lesz.
    12. Konzultációs lehetőségek Órák után, illetve külön egyeztetett időpontban.
    13. Jegyzet, tankönyv, felhasználható irodalom

    Előadás- és laboranyagok a tárgyhonlapon.


    Dr. Szirmay-Kalos László, Antal György, Csonka Ferenc:

    Háromdimenziós grafika, animáció és játékfejlesztés

    ISBN: 963 618 303 1

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra56
    Félévközi készülés órákra4
    Felkészülés zárthelyire 
    Házi feladat elkészítése50
    Kijelölt írásos tananyag elsajátítása 
    Vizsgafelkészülés10
    Összesen120
    15. A tantárgy tematikáját kidolgozta
    Szirmay-Kalos László
    egyetemi tanár
    Irányítástechnika és informatika tanszék
    Szécsi Lászlótudományos segédmunkatársIrányítástechnika és informatika tanszék
    Egyéb megjegyzések A Játékfejlesztés nevű M.Sc. szakiránytárggyal a tematika hasonlósága ellenére minimális az átfedés, a használt eszközök és a megközelítés absztrakciós szintjének eltérése miatt. Míg ez a tárgy a Direct3D és HLSL programozásra, illetve a PhysX könyvtár alkalmazására koncentrál, és ezekből az elemekből épít játékmotort, az M.Sc. tárgy kész játékmotor használatával, a teljes tartalomalkotási futószalagot szem előtt tartva épít játékalkalmazást.