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ó    

    3D grafikus rendszerek

    A tantárgy angol neve: 3D Graphics

    Adatlap utolsó módosítása: 2024. január 28.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Szoftverfejlesztés specializáción felvehető további tantárgyak
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIAC11 5 2/2/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Szécsi László,
    4. A tantárgy előadója Dr. Szécsi László 
    5. A tantárgy az alábbi témakörök ismeretére épít

    Diszkrét matematika (vektor-, mátrixműveletek, bázistranszformáció) 

    Fizika (mechanika) 

    Objektum-orientált és funkcionális programozás 

    Számítógépes grafika 

    6. Előtanulmányi rend
    Ajánlott:

    Programozás 

    Számítógépes grafika 

    7. A tantárgy célkitűzése A tárgy célja, hogy megismertesse a hallgatókat a háromdimenziós grafika megjelenítéséhez szükséges szoftver- és hardvereszközökkel, azok használatával és programozásával. A tárgy keretében a hallgatók megismerik az online, böngészőben is futtatható 3D programok létrehozására alkalmas WebGL (vagyis OpenGL ES) API-t, illetve a Windows platformon működő D3D grafikus könyvtárat, és ezek szoftverbe illesztésének jellemző módjait. A tárgy bemutatja a 3D grafikus rendszerek, virtuálisvalóság- és játékmotorok alapvető szoftver-architektúráját, a fizikai szimulációhoz használható PhysX könyvtárat, illetve a sokszereplős hálózati rendszerek szinkronizációs mechanizmusait. 
    8. A tantárgy részletes tematikája

    1. A böngésző programozása Kotlin nyelven, eseménykezelés, a grafikus csővezeték programozása a WebGL API-n keresztül. 

    2. Vektor- és mátrixműveletek célszerű implementációja különböző platformokon. Optimalizáció JavaScriptben. Típusos tömbök használata. Operátor-túlterhelés Kotlinban. Párhuzamos műveletek. Swizzle operator megvalósítása különböző programnyelveken, tulajdonság-elérő metódusokkal, illetve metaprogramozással. 

    3. Játékobjektum-modellek (objektum-központú, tulajdonság-központú, monolitikus, komponens-alapú). Kihívások és jó gyakorlatok. 

    4. 2D kamera és fizikai szimuláció. Transzformációs hierarchiák, kényszerek. Ütközésdetektálás-és válasz. Térbeli hash alapú közelségi keresés dinamikus terekben. 

    5. 3D modellek létrehozása Blenderben. Poliédermodellek, árnyalási normálok szerkesztése, UV paraméterezés. Python scriptek Blenderben, alapvető szintérmanipuláció és geometria-feldolgozási technikák. Modellformátumok, JSON deszerializáció, modellfileból betöltött geometriák, többanyagos hálók. Háromdimenziós forgatások és vezérlések, kvaterniók, duális kvaterniók. Megjelenítés perspektívában. 

    6. 3D transzformációs effektek (háttér doboztextúra alapján, pályaanimáció, vetített árnyékok, végtelen geometriák, csatolt objektumok). 

    7. Radiometriai és fotometriai mértékek. Árnyalási effektek. Környezet-leképezés. Normál-leképezés. Anyagmodellek: diffúz, ideális, spekuláris, Phong, Phong-Blinn, Max-Blinn, wrap shading. Fizikai plauzibilitás és műtermékek kapcsolata. Fényforrásmodellek. 

    8. Karakter-animáció. Csomópontok, ízületek és csontok fogalma, viszonyaik. Csonttranszformációk felépítése. Animációs formátumok, klippek, keretek, ízület-transzformációk, rögzítési póz és rögzítési transzformációk. A csonttranszformációk számítása, interpoláció. Lágy bőrözés és implementációja a GPU-n. Nagyszámú karakter animációjának párhuzamos számítása. 

    9. Hálózati játékmechanika és szinkronizáció. Extrapoláció és interpoláció. 

    10. Zajfüggvények, procedurális implicit geometriák és megjelenítésük

    11. GPGPU számítások a grafikus API-n keresztül (Compute Shader)

    12. 3D fizikai szimuláció, ütközésdetektálás és -válasz

     

    Gyakorlatok: 

    1. WebGL alapok. Gradle. Konvencionális projektstruktúra. Fejlesztői környezet (alternatívák). Kotlin2JS, source map. Hibakeresés a böngészőben. Geometriákkal és árnyalókkal kapcsolatos feladatok. Uniform paraméterek beállítása. Vektor és mátrix osztályok használata. Egyszerű animáció, eseménykezelés. Textúrázás. 

    2. Entitás-komponens rendszer. Anyagok, hálók, játékobjektumok használata. Színtérmendzsment. Animációs logikai komponensek. 2D kamera. 

    3. 2D fizikai szimuláció, játékmechanika. Erők, forgatónyomatékok, Euler-integrálás. Súrlódás, légellenállas, energiaveszteség. Ütközésdetektálás és ütközésválasz. Játékobjektumok megsemmisítése és létrehozása. Időzített események. Függő objektumok. 

    4. 3D transzformációk, környezetek. 3D modellbetöltés. Perspektív kamera. Pixelenkénti sugárirány számítása a GPU-n. Doboztextúra, környezeti térkép háttérként. Síkra vetített árnyék. 

    5. Árnyalás. Normálvektorok transzformációja. Tükörfelület, ideális visszaverődés, környezet-leképezés. Procedurális normál-leképezés. Egyszerű zajfüggvény. Fényforrások kezelése. BRDF modellek: diffúz, Phong-Blinn, Max-Blinn. Többmentes renderelés, frame buffer, utófeldolgozási effekt. 

    6. Tömeges karakter-animáció a GPU-val. Animációs adatok betöltése. Rögzítési transzformációk. Duális kvaterniók. Csonttranszformációk számítása. Interpoláció. Lágy bőrözés.  

    7. Kliens-szerver architektúra, Node.js, WebSocket kommunikáció. Avatar-vezérlés. WebSocket hello, üzenetek átküldése. 

    8. Hálózati predikció és interpoláció, multiplayer mechanika. Interpoláció, lövés, ütközésdetektálás, ütközésválasz. 

    9. Procedurális terep megjelenítése valós idejű sugármeneteléssel. Magasságmező textúrából. Keresési tartomány maghatározása. Gradiens és normálvektor véges differenciákból. Bináris keresés. Implicit felület zajfüggvénnyel. Homogén résztvevő közeg konstans

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Hetente 2 óra előadás, 2 óra géptermi gyakorlat. 
    10. Követelmények

    A vizsgajegybe beleszámít: 

    • A 8 legjobb a 12 db géptermi gyakorlatból, egyenként 4% erejéig. (Így minden labor teljesítését 0-4 pont között értékeljük. Összesen 32 pont megszerzése számít 100%-os teljesítésnek.) 

    • A 4 legjobb a 6 db házi feladatból, egyenként 8% erejéig. (Így minden házi feladatot 0-8 pont között értékelünk. Összesen 32 pont megszerzése számít 100%-os teljesítésnek.) 

    • Az aláírás megszerzéséhez a fenti 64 pont 40%-át, 25 pontot kell megszerezni. 

    A vizsgára bocsátás feltétele az aláírás megszerzése. 

    Írásbeli vizsga, ahol a pontszám fennmaradó 36%-a szerezhető meg. A maximális vizsgapontszám 36 pont. Az ebből megszerzett pontokat a szorgalmi időszakban megszerezett legfeljebb 64 ponttal összeadjuk. Az osztályzat, 40 ponttól elégséges, 55 ponttól közepes, 70 ponttól jó, 85 ponttól jeles. 

    11. Pótlási lehetőségek Külön pótlási lehetőség nincs, de a feladatoknak csak adott része számít a jegybe.
    12. Konzultációs lehetőségek Online folyamatosan lehet kérdezni. Kérdezési, segítségkérési lehetőséget biztosítunk, ehhez kódfeltöltésre is lehetőséget adunk. 
    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra48
    Félévközi készülés órákra18
    Felkészülés zárthelyire
    Házi feladat elkészítése42
    Kijelölt írásos tananyag elsajátítása10
    Vizsgafelkészülés32
    Összesen150
    15. A tantárgy tematikáját kidolgozta Dr Szécsi László
    IMSc tematika és módszer

    Minden gyakorlaton kijelölt iMSc feladatok megoldásával lehet pontot szerezni. Ezek megoldásához az instrukciók, források a diasorokban szerepelnek, illetve a gyakorlatvezető beszél róluk, azokkal kapcsolatos kérdésekre válaszol. A házi feladatokban a szükségesnél több részfeladat megoldásával lehet iMSc-pontot szerezni. 

    1. Sprite-animáció. 

    2. Scrollozó háttér. 

    3. Ütközésválasz súrlódással. 

    4. Végtelen sík. Végtelen alakzatok homogén koordinátákkal. 

    5. Fizikai alapú renderelés (PBR). 

    6. Geometry instancing. 

    7. Kliens paraméterezése, perzisztens ID. 

    8. Térbeli hash alapú közelségi keresés. 

    9. Inhomogén közeg exponenciális elnyelődéssel és forrástaggal. 

    10. Wavefront optimalizáció. 

    11. Összetettebb ütközőalakzatok. 

    12. Kontakt-reakciók, trigger alakzatok.

    IMSc pontozás

    Minden gyakorlaton 1 (összesen 12), minden házi feladattal 2 iMSc pont szerezhető (összesen 12). A gyakorlatokon a kijelölt pluszfeladatot kell teljesíteni, a házi feladatokban a választható funkciók közül kell többet megvalósítani. 1 iMSc pont előadáson a diszkusszióban való aktív közreműködésért jár. 

    Így összesen 25 IMSc pont szerezhető. Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.