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: 2017. június 23.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Mérnök-informatikus BSc, Szoftverfejlesztés szakirány
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIAC01 6 2/1/0/v 4  
    3. A tantárgyfelelős személy és tanszék Dr. Szécsi László,
    A tantárgy tanszéki weboldala http://cg.iit.bme.hu/portal/node/42223
    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 lineáris algebra, objektum-orientált programozás, számítógépes grafika
    6. Előtanulmányi rend
    Kötelező:
    (Szakirany("AMINszoftfejlAUT", _) VAGY
    Szakirany("AMINszoftfejlIIT", _) VAGY
    Szakirany("AMINszoftfejlMIT", _) )

    VAGY Training.code=("5NAA8")

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

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    Ajánlott:
    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 a WebGL (online, böngészőben is futtatható 3D programok), az OpenGL (PC és mobil platformokon is futtatható programok) és D3D (Windows PC és Windows Phone platformokon futtatható programok) programozási környezeteket. A tárgy bemutatja a 3D grafikus rendszerek, virtuálisvalóság- és játékmotorok alapvető szoftver-architektúráját, a több platformra történő egyidejű fejlesztés módszereit, másrészt kitér az egyes platformok egyedi lehetőségeire, a kamerás/távolságképes, érintőképernyős és mozgásérzékelős beviteli eszközökre, a beépített kamerát és a gépi látás technikáit is használó kiegészítettvalóság-rendszerekre, illetve a GPGPU képességekre.

    8. A tantárgy részletes tematikája

    1. hét

    Előadás: JavaScript programozás: típusok, operátorok, függvények, objektumok. Funkcionális vs. objektum-orientált programozás. Duck typing vs. kötött interfészek. JavaScript a böngészőben. DOM, Canvas, CSS. Szövegmegjelenítés. WebGL. Eseménykezelés. Rajzolási hurok.


    2. hét

    Előadás: A grafikus hardver programozása WebGL-ből. Konfigurálható és programozható elemek. WebGL vs. GLSL vs. HLSL. Hogyan tervezzünk/válasszunk vektor/mátrix könyvtárat?


    Géptermi gyakorlat: JavaScript + WebGL: mozgó, textúrázott négyszög.


    3. hét

    Előadás: Visszavetítés programnyelvekben. Visszavetítés betekintéssel, módosíthatósággal. Árnyaló-visszavetítés. Játékobjektum-modellek: komponensalapú, tulajdonságalapú. Anyagrendszerek. Színtérgráf. Többszörös taxonómiák grafikus alkalmazásokban. Monolitikus osztály-hierarchia. Mix-in. Fix és dinamikus komponens-rendszerek.


    4. hét

    Előadás: Egyszerű mechanikai szimuláció. Csatolt objektumok. Csillapítás és vezérelhetőség. Ütközésdetektálás- és válasz. Double dispatch probléma, visitor minta, megoldás dinamikus típusokkal. Egyszerű mesterséges intelligencia. 


    Géptermi gyakorlat: 2D WebGL játékalkalmazás.


    5. hét

    Előadás: Kvaterniók: műveletek, tulajdonságok. Möbius-transzformációk. SLERP. 3D forgatások. Yaw-pitch-roll. 3D modellformátumok és kamerakezelés.


    6. hét

    Előadás: 3D árnyalás haladóknak: környezet-leképezés, procedurális textúrázás, normáltérképek.


    Géptermi gyakorlat: WebGL modellnézegető/shader tesztelő


    7. hét

    Előadás: Zajgenerálás: zajtulajdonságok, Perlin, simplex, Cellular, Gabor, LRP. Szintfelület-sugárkövetés. Ray marching. Gömbkövetés. 3D fraktálgeometriák, kvaternió-Julia halmaz.


    8. hét

    Előadás: Térfogati fényjelenségek és egyszerűsített gyakorlati módszerek.


    Géptermi gyakorlat: végtelen terep megjelenítése magasságtérkép alapján, illetve procedurálisan, implicit függvény alapján. Konstans és változó köd.


    9. hét

    Előadás: Render-to-texture. Többmenetes módszerek: késleltetett árnyalás, sziluettélek, árnyékok, utófeldolgozás, 3D festés, sorrendfüggetlen átlátszóság, 2.5D imposztorok.


    10. hét

    Előadás: D3D programozás. Buffertípusok és műveleteik. Általános célú számítások. CUDA vs. OpenCL vs. DirectCompute. 


    Géptermi gyakorlat: Textúrába renderelt kép átlagos fényességének számítása redukcióval, compute shaderben. Tone mapping.


    11. hét

    Előadás: Beépített kamera kezelése. Jellegzetes pontok felismerése.


    12. hét

    Előadás: Kamerakép manipulációja. Kamerakép és szintetikus képelemek kompozitálása.


    Géptermi gyakorlat: WebGL videólejátszás- és feldolgozás. Virtuálisvalóság-elemek hozzáadása markerek alapján. 


    13. hét

    Előadás: Karakteranimácó az ipari gyakorlatban. Csontok, ízületek, csomópontok fogalma. Rigging, skinning, vertex blending. Duális kvaterniók karakteranimációhoz.


    14. hét

    Előadás: D3D12 és Vulkan.


    Géptermi gyakorlat: Tömeges karakteranimáció compute shaderek segítségével.


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

    Kis házifeladatok minden laborra (kéthetente). Összesen 5 feladat, vizsgába a legjobb három beszámít, egyenként 10% erejéig. A 7 géptermi laboratórium közül a legjobb 4 vizsgába beszámít, egyenként 6% erejéig. Összesen ezek a félévi jegy 54%-át adják.

    A félév végi vizsgán összesen a pontszám 46%-a szerezhető meg.


    11. Pótlási lehetőségek A félévközi feladatokat nem lehet külön pótolni, de csak a legjobb 3 házi feladat, illetve 4 labor számít, ez implicit pótlási lehetőséget ad a korai mulasztásokra. A vizsga a vizsgaszabályzatnak megfelelően ismételhető.
    12. Konzultációs lehetőségek Hallgatói igény esetén a vizsgák előtt az oktatóval egyeztetett időpontban.
    13. Jegyzet, tankönyv, felhasználható irodalom
    CROCKFORD, Douglas. JavaScript: The Good Parts: The Good Parts. " O'Reilly Media, Inc.", 2008.
    GREGORY, Jason. Game engine architecture. CRC Press, 2009.
    ZINK, Jason; PETTINEO, Matt; HOXLEY, Jack. Practical rendering and computation with Direct3D 11. CRC Press, 2016.

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

    Kontakt óra

    42

    Félévközi felkészülés előadásokra

    7

    Félévközi készülés gyakorlatokra

    14

    Házi feladatok elkészítése

    25

    Vizsgafelkészülés

    32

    Összesen

    120

    15. A tantárgy tematikáját kidolgozta Dr. Szécsi László