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ó